From: Pierre-Eric Pelloux-Prayer Date: Fri, 19 Jun 2020 16:29:19 +0000 (+0200) Subject: glsl: reject size1x8 for image variable with floating-point data types X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0c8873d85db371dea9ec34fefc6fec531aa404b9;p=mesa.git glsl: reject size1x8 for image variable with floating-point data types Fixes: 8d07d66180b ("glsl,nir: Switch the enum representing shader image formats to PIPE_FORMAT.") Reviewed-by: Marek Olšák Part-of: --- diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index 101269bcb56..c406ae28ec2 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -4983,12 +4983,14 @@ ast_declarator_list::hir(exec_list *instructions, if (strncmp(this->type->specifier->type_name, "image", strlen("image")) == 0) { switch (this->type->qualifier.image_format) { case PIPE_FORMAT_R8_SINT: - /* No valid qualifier in this case, driver will need to look at - * the underlying image's format (just like no qualifier being - * present). + /* The GL_EXT_shader_image_load_store spec says: + * A layout of "size1x8" is illegal for image variables associated + * with floating-point data types. */ - this->type->qualifier.image_format = PIPE_FORMAT_NONE; - break; + _mesa_glsl_error(& loc, state, + "size1x8 is illegal for image variables " + "with floating-point data types."); + return NULL; case PIPE_FORMAT_R16_SINT: this->type->qualifier.image_format = PIPE_FORMAT_R16_FLOAT; break;