From 0d3e9875b13d2112725945dabf7f48e99a168f1c Mon Sep 17 00:00:00 2001 From: Logan McNaughton Date: Tue, 27 Sep 2016 08:56:36 -0600 Subject: [PATCH] Only call glUniformMatrix4fv if needed --- gfx/drivers_shader/shader_glsl.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gfx/drivers_shader/shader_glsl.c b/gfx/drivers_shader/shader_glsl.c index dc37f38bdb..026d46700a 100644 --- a/gfx/drivers_shader/shader_glsl.c +++ b/gfx/drivers_shader/shader_glsl.c @@ -1256,6 +1256,7 @@ static void gl_glsl_set_params(void *data, void *shader_data, static bool gl_glsl_set_mvp(void *data, void *shader_data, const math_matrix_4x4 *mat) { + static unsigned current_idx; int loc; glsl_shader_data_t *glsl = (glsl_shader_data_t*)shader_data; @@ -1265,9 +1266,12 @@ static bool gl_glsl_set_mvp(void *data, void *shader_data, const math_matrix_4x4 goto fallback; loc = glsl->uniforms[glsl->active_idx].mvp; - if (loc >= 0) - glUniformMatrix4fv(loc, 1, GL_FALSE, mat->data); - + if (loc >= 0) { + if (current_idx != glsl->active_idx) { + glUniformMatrix4fv(loc, 1, GL_FALSE, mat->data); + current_idx = glsl->active_idx; + } + } return true; fallback: