mesa: Initialize image units to default state on context creation.

This is the required initial image unit state according to "Table 23.45. Image
State (state per image unit)" of the OpenGL 4.3 specification.

Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
Francisco Jerez 2015-01-31 17:00:19 +02:00
parent 1b9990e373
commit b663d6bc6f
3 changed files with 21 additions and 0 deletions

View File

@ -118,6 +118,7 @@
#include "scissor.h"
#include "shared.h"
#include "shaderobj.h"
#include "shaderimage.h"
#include "util/simple_list.h"
#include "state.h"
#include "stencil.h"
@ -821,6 +822,7 @@ init_attrib_groups(struct gl_context *ctx)
_mesa_init_feedback( ctx );
_mesa_init_fog( ctx );
_mesa_init_hint( ctx );
_mesa_init_image_units( ctx );
_mesa_init_line( ctx );
_mesa_init_lighting( ctx );
_mesa_init_matrix( ctx );

View File

@ -331,6 +331,19 @@ get_image_format_class(mesa_format format)
}
}
void
_mesa_init_image_units(struct gl_context *ctx)
{
unsigned i;
for (i = 0; i < ARRAY_SIZE(ctx->ImageUnits); ++i) {
struct gl_image_unit *u = &ctx->ImageUnits[i];
u->Access = GL_READ_ONLY;
u->Format = GL_R8;
u->_ActualFormat = _mesa_get_shader_image_format(u->Format);
}
}
static GLboolean
validate_image_unit(struct gl_context *ctx, struct gl_image_unit *u)
{

View File

@ -42,6 +42,12 @@ struct gl_context;
mesa_format
_mesa_get_shader_image_format(GLenum format);
/**
* Initialize a context's shader image units to the default state.
*/
void
_mesa_init_image_units(struct gl_context *ctx);
/**
* Recalculate the \c _Valid flag of a context's shader image units.
*