mesa: Validate image units when the texture state changes.

Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
Francisco Jerez 2013-11-22 19:58:10 -08:00
parent ace31f4bc0
commit 647344bf3e
3 changed files with 23 additions and 0 deletions

View file

@ -380,6 +380,17 @@ validate_image_unit(struct gl_context *ctx, struct gl_image_unit *u)
return GL_TRUE;
}
void
_mesa_validate_image_units(struct gl_context *ctx)
{
int 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,

View file

@ -31,6 +31,15 @@
struct gl_context;
/**
* 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,

View file

@ -35,6 +35,7 @@
#include "context.h"
#include "enums.h"
#include "macros.h"
#include "shaderimage.h"
#include "texobj.h"
#include "teximage.h"
#include "texstate.h"
@ -674,6 +675,8 @@ update_texture_state( struct gl_context *ctx )
if (!fprog || !vprog)
update_texgen(ctx);
_mesa_validate_image_units(ctx);
}