[Mesa-dev] [PATCH 1/6] mesa: inline _mesa_update_texture

Marek Olšák maraeo at gmail.com
Thu Mar 23 23:42:01 UTC 2017


From: Marek Olšák <marek.olsak at 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



More information about the mesa-dev mailing list