[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