fix use of invalid program id IF viewport changed - also disable

GLERR. this can really hurt performance.



SVN revision: 64027
This commit is contained in:
Carsten Haitzler 2011-10-12 23:22:26 +00:00
parent f139d93896
commit ab7d9bdd84
2 changed files with 12 additions and 5 deletions

View File

@ -640,7 +640,7 @@ extern unsigned int (*secsym_eglUnmapImageSEC) (void *a, void *b);
extern unsigned int (*secsym_eglGetImageAttribSEC) (void *a, void *b, int c, int *d); extern unsigned int (*secsym_eglGetImageAttribSEC) (void *a, void *b, int c, int *d);
#endif #endif
#define GL_ERRORS 1 //#define GL_ERRORS 1
#ifdef GL_ERRORS #ifdef GL_ERRORS
# define GLERR(fn, fl, ln, op) \ # define GLERR(fn, fl, ln, op) \

View File

@ -1,5 +1,6 @@
#include "evas_gl_private.h" #include "evas_gl_private.h"
#define PRG_INVALID 0xffffffff
#define GLPIPES 1 #define GLPIPES 1
static int sym_done = 0; static int sym_done = 0;
@ -454,7 +455,9 @@ _evas_gl_common_viewport_set(Evas_Engine_GL_Context *gc)
GLERR(__FUNCTION__, __FILE__, __LINE__, ""); GLERR(__FUNCTION__, __FILE__, __LINE__, "");
} }
glUseProgram(gc->state.current.cur_prog); if (gc->state.current.cur_prog == PRG_INVALID)
glUseProgram(gc->shared->shader[0].prog);
else glUseProgram(gc->state.current.cur_prog);
GLERR(__FUNCTION__, __FILE__, __LINE__, ""); GLERR(__FUNCTION__, __FILE__, __LINE__, "");
} }
@ -703,7 +706,9 @@ evas_gl_common_context_new(void)
SHADER_TEXTURE_ADD(shared, IMG_MASK, tex); SHADER_TEXTURE_ADD(shared, IMG_MASK, tex);
SHADER_TEXTURE_ADD(shared, IMG_MASK, texm); SHADER_TEXTURE_ADD(shared, IMG_MASK, texm);
glUseProgram(gc->state.current.cur_prog); if (gc->state.current.cur_prog == PRG_INVALID)
glUseProgram(gc->shared->shader[0].prog);
else glUseProgram(gc->state.current.cur_prog);
GLERR(__FUNCTION__, __FILE__, __LINE__, ""); GLERR(__FUNCTION__, __FILE__, __LINE__, "");
evas_gl_common_shader_program_init_done(); evas_gl_common_shader_program_init_done();
@ -891,7 +896,9 @@ evas_gl_common_context_newframe(Evas_Engine_GL_Context *gc)
GLERR(__FUNCTION__, __FILE__, __LINE__, ""); GLERR(__FUNCTION__, __FILE__, __LINE__, "");
glEnableVertexAttribArray(SHAD_COLOR); glEnableVertexAttribArray(SHAD_COLOR);
GLERR(__FUNCTION__, __FILE__, __LINE__, ""); GLERR(__FUNCTION__, __FILE__, __LINE__, "");
glUseProgram(gc->state.current.cur_prog); if (gc->state.current.cur_prog == PRG_INVALID)
glUseProgram(gc->shared->shader[0].prog);
else glUseProgram(gc->state.current.cur_prog);
GLERR(__FUNCTION__, __FILE__, __LINE__, ""); GLERR(__FUNCTION__, __FILE__, __LINE__, "");
glActiveTexture(GL_TEXTURE0); glActiveTexture(GL_TEXTURE0);
@ -922,7 +929,7 @@ evas_gl_common_context_target_surface_set(Evas_Engine_GL_Context *gc,
evas_gl_common_context_flush(gc); evas_gl_common_context_flush(gc);
gc->state.current.cur_prog = -1; gc->state.current.cur_prog = PRG_INVALID;
gc->state.current.cur_tex = -1; gc->state.current.cur_tex = -1;
gc->state.current.cur_texu = -1; gc->state.current.cur_texu = -1;
gc->state.current.cur_texv = -1; gc->state.current.cur_texv = -1;