From: Marek Olšák <marek.ol...@amd.com> --- src/mesa/main/state.c | 7 +++++-- src/mesa/main/texstate.c | 22 ++++------------------ src/mesa/main/texstate.h | 7 +++++-- 3 files changed, 14 insertions(+), 22 deletions(-)
diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 5cb58a4..71265a5 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -399,22 +399,25 @@ _mesa_update_state_locked( struct gl_context *ctx ) /* * Now update derived state info */ if (new_state & prog_flags) update_program_enables( ctx ); if (new_state & (_NEW_MODELVIEW|_NEW_PROJECTION)) _mesa_update_modelview_project( ctx, new_state ); - if (new_state & (_NEW_PROGRAM|_NEW_TEXTURE|_NEW_TEXTURE_MATRIX)) - _mesa_update_texture( ctx, new_state ); + if (new_state & _NEW_TEXTURE_MATRIX) + _mesa_update_texture_matrices(ctx); + + if (new_state & (_NEW_TEXTURE | _NEW_PROGRAM)) + _mesa_update_texture_state(ctx); if (new_state & _NEW_POLYGON) update_frontbit( ctx ); if (new_state & _NEW_BUFFERS) _mesa_update_framebuffer(ctx, ctx->ReadBuffer, ctx->DrawBuffer); if (new_state & (_NEW_SCISSOR | _NEW_BUFFERS | _NEW_VIEWPORT)) _mesa_update_draw_buffer_bounds(ctx, ctx->DrawBuffer); diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index be73fc3..70e014c 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -348,22 +348,22 @@ _mesa_ClientActiveTexture(GLenum texture) /** * \note This routine refers to derived texture attribute values to * compute the ENABLE_TEXMAT flags, but is only called on * _NEW_TEXTURE_MATRIX. On changes to _NEW_TEXTURE, the ENABLE_TEXMAT * flags are updated by _mesa_update_textures(), below. * * \param ctx GL context. */ -static void -update_texture_matrices( struct gl_context *ctx ) +void +_mesa_update_texture_matrices(struct gl_context *ctx) { GLuint u; ctx->Texture._TexMatEnabled = 0x0; for (u = 0; u < ctx->Const.MaxTextureCoordUnits; u++) { assert(u < ARRAY_SIZE(ctx->TextureMatrixStack)); if (_math_matrix_is_dirty(ctx->TextureMatrixStack[u].Top)) { _math_matrix_analyse( ctx->TextureMatrixStack[u].Top ); @@ -684,22 +684,22 @@ update_ff_texture_state(struct gl_context *ctx, } /** * \note This routine refers to derived texture matrix values to * compute the ENABLE_TEXMAT flags, but is only called on * _NEW_TEXTURE. On changes to _NEW_TEXTURE_MATRIX, the ENABLE_TEXMAT * flags are updated by _mesa_update_texture_matrices, above. * * \param ctx GL context. */ -static void -update_texture_state( struct gl_context *ctx ) +void +_mesa_update_texture_state(struct gl_context *ctx) { struct gl_program *prog[MESA_SHADER_STAGES]; int i; int old_max_unit = ctx->Texture._MaxEnabledTexImageUnit; BITSET_DECLARE(enabled_texture_units, MAX_COMBINED_TEXTURE_IMAGE_UNITS); for (i = 0; i < MESA_SHADER_STAGES; i++) { if (ctx->_Shader->CurrentProgram[i]) { prog[i] = ctx->_Shader->CurrentProgram[i]; } else { @@ -740,34 +740,20 @@ update_texture_state( struct gl_context *ctx ) } for (i = ctx->Texture._MaxEnabledTexImageUnit + 1; i <= old_max_unit; i++) { _mesa_reference_texobj(&ctx->Texture.Unit[i]._Current, NULL); } if (!prog[MESA_SHADER_FRAGMENT] || !prog[MESA_SHADER_VERTEX]) update_texgen(ctx); } -/** - * Update texture-related derived state. - */ -void -_mesa_update_texture( struct gl_context *ctx, GLuint new_state ) -{ - if (new_state & _NEW_TEXTURE_MATRIX) - update_texture_matrices( ctx ); - - if (new_state & (_NEW_TEXTURE | _NEW_PROGRAM)) - update_texture_state( ctx ); -} - - /**********************************************************************/ /***** Initialization *****/ /**********************************************************************/ /** * Allocate the proxy textures for the given context. * * \param ctx the context to allocate proxies for. * * \return GL_TRUE on success, or GL_FALSE on failure diff --git a/src/mesa/main/texstate.h b/src/mesa/main/texstate.h index 52fe602..cb329b0 100644 --- a/src/mesa/main/texstate.h +++ b/src/mesa/main/texstate.h @@ -84,22 +84,25 @@ extern void GLAPIENTRY _mesa_ClientActiveTexture( GLenum target ); /*@}*/ /** * \name Initialization, state maintenance */ /*@{*/ -extern void -_mesa_update_texture( struct gl_context *ctx, GLuint new_state ); +extern void +_mesa_update_texture_matrices(struct gl_context *ctx); + +extern void +_mesa_update_texture_state(struct gl_context *ctx); extern GLboolean _mesa_init_texture( struct gl_context *ctx ); extern void _mesa_free_texture_data( struct gl_context *ctx ); extern void _mesa_update_default_objects_texture(struct gl_context *ctx); -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev