summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFrancisco Jerez <[email protected]>2015-01-20 16:12:18 +0200
committerFrancisco Jerez <[email protected]>2015-05-04 17:44:16 +0300
commitcad0cf4ceeaac708591d064642e12d3b8daa4e05 (patch)
tree0a3c4a521398ce1349ce8fec96520bfc706a1adb /src
parent4e4855f1dec566c8af825101445f13b1f824a309 (diff)
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 <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/mesa/main/shaderimage.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/mesa/main/shaderimage.c b/src/mesa/main/shaderimage.c
index cb88d9c5709..8caff2f2660 100644
--- a/src/mesa/main/shaderimage.c
+++ b/src/mesa/main/shaderimage.c
@@ -353,7 +353,7 @@ validate_image_unit(struct gl_context *ctx, struct gl_image_unit *u)
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 ?
@@ -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)
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) {