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:
parent
1b9990e373
commit
b663d6bc6f
|
@ -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 );
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue