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>
return GL_FALSE;
if (t->Target == GL_TEXTURE_BUFFER) {
- tex_format = t->_BufferObjectFormat;
+ tex_format = _mesa_get_shader_image_format(t->BufferObjectFormat);
} else {
struct gl_texture_image *img = (t->Target == GL_TEXTURE_CUBE_MAP ?
if (!img || img->Border || img->NumSamples > ctx->Const.MaxImageSamples)
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;
switch (t->ImageFormatCompatibilityType) {