diff options
author | Francisco Jerez <[email protected]> | 2015-08-29 17:03:08 +0300 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2015-10-21 14:23:20 +0100 |
commit | 22aae69aa5c745b205e969a8f116ee3b2dacb1a8 (patch) | |
tree | 9f863b94824c7ad03bfcb9895cae6117de0c1294 /src/mesa | |
parent | 4779eb04a45c6fed6e17463bd59f8608d8555e41 (diff) |
mesa: Get rid of texture-dependent image unit derived state.
The point is to avoid having to re-validate all image units when
_NEW_TEXTURE is flagged, which can be expensive if the driver exposes
a large number of image units. This has been reported to fix a 36%
performance regression in the Synmark2 Multithread benchmark on the
i965 driver which exposes 192 image units.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91788
Reported-by: Wendy Wang <[email protected]>
Tested-by: Ye Tian <[email protected]>
CC: "11.0" <[email protected]>
Reviewed-by: Ian Romanick <[email protected]>
(cherry picked from commit 7e441bf025cf8c5d088430d546acb4c0ed58d27b)
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/main/mtypes.h | 7 | ||||
-rw-r--r-- | src/mesa/main/shaderimage.c | 14 | ||||
-rw-r--r-- | src/mesa/main/shaderimage.h | 9 | ||||
-rw-r--r-- | src/mesa/main/texstate.c | 3 |
4 files changed, 0 insertions, 33 deletions
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 5031b0840cb..cc8f350d87b 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -4171,13 +4171,6 @@ struct gl_image_unit GLboolean Layered; /** - * GL_TRUE if the state of this image unit is valid and access from - * the shader is allowed. Otherwise loads from this unit should - * return zero and stores should have no effect. - */ - GLboolean _Valid; - - /** * Layer of the texture object bound to this unit as specified by the * application. */ diff --git a/src/mesa/main/shaderimage.c b/src/mesa/main/shaderimage.c index e686cad0542..152abf47dc4 100644 --- a/src/mesa/main/shaderimage.c +++ b/src/mesa/main/shaderimage.c @@ -474,17 +474,6 @@ _mesa_is_image_unit_valid(struct gl_context *ctx, struct gl_image_unit *u) return GL_TRUE; } -void -_mesa_validate_image_units(struct gl_context *ctx) -{ - unsigned i; - - for (i = 0; i < ctx->Const.MaxImageUnits; ++i) { - struct gl_image_unit *u = &ctx->ImageUnits[i]; - u->_Valid = validate_image_unit(ctx, u); - } -} - static GLboolean validate_bind_image_texture(struct gl_context *ctx, GLuint unit, GLuint texture, GLint level, GLboolean layered, @@ -568,7 +557,6 @@ _mesa_BindImageTexture(GLuint unit, GLuint texture, GLint level, u->Access = access; u->Format = format; u->_ActualFormat = _mesa_get_shader_image_format(format); - u->_Valid = _mesa_is_image_unit_valid(ctx, u); if (u->TexObj && _mesa_tex_target_is_layered(u->TexObj->Target)) { u->Layered = layered; @@ -708,7 +696,6 @@ _mesa_BindImageTextures(GLuint first, GLsizei count, const GLuint *textures) u->Access = GL_READ_WRITE; u->Format = tex_format; u->_ActualFormat = _mesa_get_shader_image_format(tex_format); - u->_Valid = _mesa_is_image_unit_valid(ctx, u); } else { /* Unbind the texture from the unit */ _mesa_reference_texobj(&u->TexObj, NULL); @@ -718,7 +705,6 @@ _mesa_BindImageTextures(GLuint first, GLsizei count, const GLuint *textures) u->Access = GL_READ_ONLY; u->Format = GL_R8; u->_ActualFormat = MESA_FORMAT_R_UNORM8; - u->_Valid = GL_FALSE; } /* Pass the BindImageTexture call down to the device driver */ diff --git a/src/mesa/main/shaderimage.h b/src/mesa/main/shaderimage.h index 14a544fca8a..94ee814a716 100644 --- a/src/mesa/main/shaderimage.h +++ b/src/mesa/main/shaderimage.h @@ -65,15 +65,6 @@ _mesa_init_image_units(struct gl_context *ctx); GLboolean _mesa_is_image_unit_valid(struct gl_context *ctx, struct gl_image_unit *u); -/** - * Recalculate the \c _Valid flag of a context's shader image units. - * - * To be called when the state of any texture bound to an image unit - * changes. - */ -void -_mesa_validate_image_units(struct gl_context *ctx); - void GLAPIENTRY _mesa_BindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index 9b5928c4306..cb147fac476 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -34,7 +34,6 @@ #include "context.h" #include "enums.h" #include "macros.h" -#include "shaderimage.h" #include "texobj.h" #include "teximage.h" #include "texstate.h" @@ -741,8 +740,6 @@ update_texture_state( struct gl_context *ctx ) if (!prog[MESA_SHADER_FRAGMENT] || !prog[MESA_SHADER_VERTEX]) update_texgen(ctx); - - _mesa_validate_image_units(ctx); } |