From 7c19aac60e12d6f5ea301bdb34d7826a01e0b06f Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 8 Nov 2015 12:56:12 +0100 Subject: Rename *.c -> *.cpp in our source (nw) --- src/osd/modules/opengl/gl_shader_mgr.cpp | 238 +++++++++++++++++++++++++++++++ 1 file changed, 238 insertions(+) create mode 100644 src/osd/modules/opengl/gl_shader_mgr.cpp (limited to 'src/osd/modules/opengl/gl_shader_mgr.cpp') diff --git a/src/osd/modules/opengl/gl_shader_mgr.cpp b/src/osd/modules/opengl/gl_shader_mgr.cpp new file mode 100644 index 00000000000..21ee7f9fc54 --- /dev/null +++ b/src/osd/modules/opengl/gl_shader_mgr.cpp @@ -0,0 +1,238 @@ +// license:BSD-3-Clause +// copyright-holders:Sven Gothel +#include /* snprintf */ +#include /* malloc */ + +#include "osdcomm.h" +#include "osd_opengl.h" + +#include "gl_shader_mgr.h" +#include "gl_shader_tool.h" + +#define GLSL_VERTEX_SHADER_INT_NUMBER 1 // general +#define GLSL_VERTEX_SHADER_MAX_NUMBER 2 // general + custom +#define GLSL_VERTEX_SHADER_CUSTOM 1 // custom idx + +#ifdef GLSL_SOURCE_ON_DISK + +static const char * glsl_mamebm_vsh_files [GLSL_VERTEX_SHADER_INT_NUMBER] = +{ + "/tmp/glsl_general.vsh" // general +}; + +static const char * glsl_mamebm_fsh_files [GLSL_SHADER_FEAT_INT_NUMBER] = +{ + "/tmp/glsl_plain_rgb32_dir.fsh", // rgb32 dir plain + "/tmp/glsl_bilinear_rgb32_dir.fsh" // rgb32 dir bilinear +}; + +#else // GLSL_SOURCE_ON_DISK + +#include "shader/glsl_general.vsh.c" + +#include "shader/glsl_plain_rgb32_dir.fsh.c" +#include "shader/glsl_bilinear_rgb32_dir.fsh.c" + +static const char * glsl_mamebm_vsh_sources [GLSL_VERTEX_SHADER_INT_NUMBER] = +{ + glsl_general_vsh_src // general +}; + +static const char * glsl_mamebm_fsh_sources [GLSL_SHADER_FEAT_INT_NUMBER] = +{ + glsl_plain_rgb32_dir_fsh_src, // rgb32 dir plain + glsl_bilinear_rgb32_dir_fsh_src // rgb32 dir bilinear +}; + +#endif // GLSL_SOURCE_ON_DISK + +static const char * glsl_mamebm_filter_names [GLSL_SHADER_FEAT_MAX_NUMBER] = +{ + "plain", + "bilinear", + "custom" +}; + +static GLhandleARB glsl_mamebm_programs [GLSL_SHADER_FEAT_MAX_NUMBER+9] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* rgb32 dir: plain, bilinear, custom0-9, .. */ +}; + +/** + * fragment shader -> vertex shader mapping + */ +static int glsl_mamebm_fsh2vsh[GLSL_SHADER_FEAT_MAX_NUMBER] = +{ + 0, // plain -> general + 0, // bilinear -> general + 1, // custom -> custom +}; + +static GLhandleARB glsl_mamebm_vsh_shader[GLSL_VERTEX_SHADER_MAX_NUMBER+9] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; /* general, custom0-9 */ + +static GLhandleARB glsl_mamebm_fsh_shader [GLSL_SHADER_FEAT_MAX_NUMBER+9] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* rgb32 dir: plain, bilinear, custom0-9 */ +}; + +static GLhandleARB glsl_scrn_programs [10] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* rgb32: custom0-9, .. */ +}; + +static GLhandleARB glsl_scrn_vsh_shader[10] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; /* custom0-9 */ + +static GLhandleARB glsl_scrn_fsh_shader [10] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; /* rgb32: custom0-9 */ + +const char * glsl_shader_get_filter_name_mamebm(int glslShaderFeature) +{ + if ( !(0 <= glslShaderFeature && glslShaderFeature < GLSL_SHADER_FEAT_MAX_NUMBER) ) + return "illegal shader feature"; + + return glsl_mamebm_filter_names[glslShaderFeature]; +} + +GLhandleARB glsl_shader_get_program_mamebm(int glslShaderFeature, int idx) +{ + if ( !(0 <= glslShaderFeature && glslShaderFeature < GLSL_SHADER_FEAT_MAX_NUMBER) ) + return 0; + + return glsl_mamebm_programs[glslShaderFeature+idx]; +} + +GLhandleARB glsl_shader_get_program_scrn(int idx) +{ + if ( !(0 <= idx && idx < 10) ) + return 0; + + return glsl_scrn_programs[idx]; +} + +glsl_shader_info *glsl_shader_init(osd_gl_context *gl_ctx) +{ + int i,j, err; + + err = gl_shader_loadExtention(gl_ctx); + if(err) return NULL; + + for (i=0; !err && i