mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 13:20:14 +01:00
mesa: Validate original image internal format rather than derived mesa format.
This matches what _mesa_BindImageTextures() does. The derived image format (gl_texture_image::TexFormat) isn't necessarily equivalent to the internal format of the texture image. If a forbidden internal format has been specified we need to mark the image unit as invalid as required by the spec, regardless of the derived format. Fixes the "invalid" ARB_shader_image_load_store piglit test. Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
4e4855f1de
commit
cad0cf4cee
1 changed files with 3 additions and 3 deletions
|
|
@ -353,7 +353,7 @@ validate_image_unit(struct gl_context *ctx, struct gl_image_unit *u)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
|
||||||
if (t->Target == GL_TEXTURE_BUFFER) {
|
if (t->Target == GL_TEXTURE_BUFFER) {
|
||||||
tex_format = t->_BufferObjectFormat;
|
tex_format = _mesa_get_shader_image_format(t->BufferObjectFormat);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
struct gl_texture_image *img = (t->Target == GL_TEXTURE_CUBE_MAP ?
|
struct gl_texture_image *img = (t->Target == GL_TEXTURE_CUBE_MAP ?
|
||||||
|
|
@ -363,10 +363,10 @@ validate_image_unit(struct gl_context *ctx, struct gl_image_unit *u)
|
||||||
if (!img || img->Border || img->NumSamples > ctx->Const.MaxImageSamples)
|
if (!img || img->Border || img->NumSamples > ctx->Const.MaxImageSamples)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
|
||||||
tex_format = img->TexFormat;
|
tex_format = _mesa_get_shader_image_format(img->InternalFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (get_image_format_class(tex_format) == IMAGE_FORMAT_CLASS_NONE)
|
if (!tex_format)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
|
||||||
switch (t->ImageFormatCompatibilityType) {
|
switch (t->ImageFormatCompatibilityType) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue