From 1230edf1ee99feef59c97136b76a80bf6a816ee2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 16 Apr 2016 19:38:35 +0200 Subject: [PATCH] Add callback for setting single uniform parameter --- gfx/drivers_shader/shader_gl_cg.c | 11 ++++++----- gfx/drivers_shader/shader_glsl.c | 23 ++++++++++++----------- gfx/drivers_shader/shader_hlsl.c | 1 + gfx/drivers_shader/shader_null.c | 9 +++++++++ gfx/video_shader_driver.h | 2 ++ 5 files changed, 30 insertions(+), 16 deletions(-) diff --git a/gfx/drivers_shader/shader_gl_cg.c b/gfx/drivers_shader/shader_gl_cg.c index 15b6c9bb7f..9dfaa9ed68 100644 --- a/gfx/drivers_shader/shader_gl_cg.c +++ b/gfx/drivers_shader/shader_gl_cg.c @@ -110,7 +110,7 @@ struct uniform_cg_data CGparameter loc; }; -static void cg_uniform_set_parameter( +static void gl_cg_set_uniform_parameter( void *data, void *uniform_info_data, void *_shader_info_data, @@ -326,7 +326,7 @@ static void gl_cg_set_texture_info( uniform_data[3].loc = params->tex_size_f; for (i = 0; i < 4; i++) - cg_uniform_set_parameter(cg_data, &uniform_params[i], NULL, &uniform_data[i]); + gl_cg_set_uniform_parameter(cg_data, &uniform_params[i], NULL, &uniform_data[i]); if (params->coord) { @@ -442,7 +442,7 @@ static void gl_cg_set_params(void *data, void *shader_data, } for (i = 0; i < uniform_count; i++) - cg_uniform_set_parameter(cg_data, &uniform_params[i], &cg_data->prg[i], &uniform_data[i]); + gl_cg_set_uniform_parameter(cg_data, &uniform_params[i], &cg_data->prg[i], &uniform_data[i]); /* Set orig texture. */ gl_cg_set_texture_info(cg_data, &cg_data->prg[cg_data->active_idx].orig, info); @@ -506,7 +506,7 @@ static void gl_cg_set_params(void *data, void *shader_data, uniform_params[1].result.f.v0 = cg_data->shader->parameters[i].current; for (j = 0; j < 2; j++) - cg_uniform_set_parameter(cg_data, &uniform_params[j], &cg_data->prg[j], &pragma_cg_params[j]); + gl_cg_set_uniform_parameter(cg_data, &uniform_params[j], &cg_data->prg[j], &pragma_cg_params[j]); } /* Set state parameters. */ @@ -541,7 +541,7 @@ static void gl_cg_set_params(void *data, void *shader_data, uniform_params[1].result.f.v0 = tracker_info[i].value; for (j = 0; j < 2; j++) - cg_uniform_set_parameter(cg_data, &uniform_params[j], &cg_data->prg[j], &pragma_cg_params[j]); + gl_cg_set_uniform_parameter(cg_data, &uniform_params[j], &cg_data->prg[j], &pragma_cg_params[j]); } } } @@ -1282,6 +1282,7 @@ const shader_backend_t gl_cg_backend = { gl_cg_init, gl_cg_deinit, gl_cg_set_params, + gl_cg_set_uniform_parameter, gl_cg_compile_program, gl_cg_use, gl_cg_num, diff --git a/gfx/drivers_shader/shader_glsl.c b/gfx/drivers_shader/shader_glsl.c index 738e20c844..b68ac2c7c2 100644 --- a/gfx/drivers_shader/shader_glsl.c +++ b/gfx/drivers_shader/shader_glsl.c @@ -1049,7 +1049,7 @@ error: return NULL; } -static void glsl_uniform_set_parameter( +static void gl_glsl_set_uniform_parameter( void *data, void *uniform_info_data, void *shader_info_data, @@ -1194,7 +1194,7 @@ static void gl_glsl_set_params(void *data, void *shader_data, uniform_count++; for (i = 0; i < uniform_count; i++) - glsl_uniform_set_parameter(glsl, &uniform_params[i], NULL, NULL); + gl_glsl_set_uniform_parameter(glsl, &uniform_params[i], NULL, NULL); /* Set lookup textures. */ for (i = 0; i < glsl->shader->luts; i++) @@ -1212,7 +1212,7 @@ static void gl_glsl_set_params(void *data, void *shader_data, lut_uniform.type = UNIFORM_1I; lut_uniform.result.integer.v0 = texunit; - glsl_uniform_set_parameter(glsl, &lut_uniform, NULL, NULL); + gl_glsl_set_uniform_parameter(glsl, &lut_uniform, NULL, NULL); texunit++; } @@ -1234,7 +1234,7 @@ static void gl_glsl_set_params(void *data, void *shader_data, orig_tex_uniform.type = UNIFORM_1I; orig_tex_uniform.result.integer.v0 = texunit; - glsl_uniform_set_parameter(glsl, &orig_tex_uniform, NULL, NULL); + gl_glsl_set_uniform_parameter(glsl, &orig_tex_uniform, NULL, NULL); glBindTexture(GL_TEXTURE_2D, info->tex); texunit++; @@ -1257,7 +1257,7 @@ static void gl_glsl_set_params(void *data, void *shader_data, orig_uniforms[1].enabled = true; for (j = 0; j < 2; j++) - glsl_uniform_set_parameter(glsl, &orig_uniforms[i], NULL, NULL); + gl_glsl_set_uniform_parameter(glsl, &orig_uniforms[i], NULL, NULL); /* Pass texture coordinates. */ if (uni->orig.tex_coord >= 0) @@ -1285,7 +1285,7 @@ static void gl_glsl_set_params(void *data, void *shader_data, feedback_texture_param.type = UNIFORM_1I; feedback_texture_param.result.integer.v0 = texunit; - glsl_uniform_set_parameter(glsl, &feedback_texture_param, NULL, NULL); + gl_glsl_set_uniform_parameter(glsl, &feedback_texture_param, NULL, NULL); glBindTexture(GL_TEXTURE_2D, feedback_info->tex); texunit++; @@ -1308,7 +1308,7 @@ static void gl_glsl_set_params(void *data, void *shader_data, feedback_uniforms[1].enabled = true; for (j = 0; j < 2; j++) - glsl_uniform_set_parameter(glsl, &feedback_uniforms[i], NULL, NULL); + gl_glsl_set_uniform_parameter(glsl, &feedback_uniforms[i], NULL, NULL); /* Pass texture coordinates. */ if (uni->feedback.tex_coord >= 0) @@ -1359,7 +1359,7 @@ static void gl_glsl_set_params(void *data, void *shader_data, fbo_tex_params[2].enabled = true; for (j = 0; j < 3; j++) - glsl_uniform_set_parameter(glsl, &fbo_tex_params[i], NULL, NULL); + gl_glsl_set_uniform_parameter(glsl, &fbo_tex_params[i], NULL, NULL); if (uni->pass[i].tex_coord >= 0) { @@ -1411,7 +1411,7 @@ static void gl_glsl_set_params(void *data, void *shader_data, prev_tex_params[2].enabled = true; for (j = 0; j < 3; j++) - glsl_uniform_set_parameter(glsl, &prev_tex_params[i], NULL, NULL); + gl_glsl_set_uniform_parameter(glsl, &prev_tex_params[i], NULL, NULL); /* Pass texture coordinates. */ if (uni->prev[i].tex_coord >= 0) @@ -1448,7 +1448,7 @@ static void gl_glsl_set_params(void *data, void *shader_data, pragma_param.type = UNIFORM_1F; pragma_param.result.f.v0 = glsl->shader->parameters[i].current; - glsl_uniform_set_parameter(glsl, &pragma_param, NULL, NULL); + gl_glsl_set_uniform_parameter(glsl, &pragma_param, NULL, NULL); } /* Set state parameters. */ @@ -1473,7 +1473,7 @@ static void gl_glsl_set_params(void *data, void *shader_data, state_param.type = UNIFORM_1F; state_param.result.f.v0 = state_info[i].value; - glsl_uniform_set_parameter(glsl, &state_param, NULL, NULL); + gl_glsl_set_uniform_parameter(glsl, &state_param, NULL, NULL); } } } @@ -1714,6 +1714,7 @@ const shader_backend_t gl_glsl_backend = { gl_glsl_init, gl_glsl_deinit, gl_glsl_set_params, + gl_glsl_set_uniform_parameter, gl_glsl_compile_program, gl_glsl_use, gl_glsl_num, diff --git a/gfx/drivers_shader/shader_hlsl.c b/gfx/drivers_shader/shader_hlsl.c index 7f98301995..28cc3a71f4 100644 --- a/gfx/drivers_shader/shader_hlsl.c +++ b/gfx/drivers_shader/shader_hlsl.c @@ -571,6 +571,7 @@ const shader_backend_t hlsl_backend = { hlsl_init, hlsl_deinit, hlsl_set_params, + hlsl_uniform_set_parameter, hlsl_use, hlsl_num, hlsl_filter_type, diff --git a/gfx/drivers_shader/shader_null.c b/gfx/drivers_shader/shader_null.c index 94d80aa5dd..e57623dc96 100644 --- a/gfx/drivers_shader/shader_null.c +++ b/gfx/drivers_shader/shader_null.c @@ -74,6 +74,14 @@ static void shader_null_set_params(void *data, void *shader_data, { } +static void shader_null_set_uniform_parameter( + void *data, + void *uniform_info_data, + void *shader_info_data, + void *uniform_data) +{ +} + static bool shader_null_set_mvp(void *data, void *shader_data, const math_matrix_4x4 *mat) { #ifdef HAVE_OPENGL @@ -166,6 +174,7 @@ const shader_backend_t shader_null_backend = { shader_null_init, shader_null_deinit, shader_null_set_params, + shader_null_set_uniform_parameter, shader_null_compile_program, shader_null_use, shader_null_num, diff --git a/gfx/video_shader_driver.h b/gfx/video_shader_driver.h index 896713a3f2..92e76dd3f3 100644 --- a/gfx/video_shader_driver.h +++ b/gfx/video_shader_driver.h @@ -163,6 +163,8 @@ typedef struct shader_backend const void *prev_info, const void *feedback_info, const void *fbo_info, unsigned fbo_info_cnt); + void (*set_uniform_parameter)(void *data, void *uniform_info_data, + void *shader_info_data, void *uniform_data); bool (*compile_program)(void *data, unsigned idx, void *program_data, struct shader_program_info *program_info);