[Mesa-dev] [PATCH 1/6] glsl: handle memory qualifiers for struct with array of images

Ian Romanick idr at freedesktop.org
Wed May 31 00:43:21 UTC 2017


On 05/25/2017 11:07 AM, Samuel Pitoiset wrote:
> This handles a situation like:
> 
> struct {
>    image2D imgs[6];
> } s;

Without looking at the surrounding code... does this also handle cases like:

struct S { image2D imgs[6]; };
struct   { S s } s;

> 
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/compiler/glsl/ast_to_hir.cpp | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
> index 2dec8bbc32..65b6262f34 100644
> --- a/src/compiler/glsl/ast_to_hir.cpp
> +++ b/src/compiler/glsl/ast_to_hir.cpp
> @@ -7402,9 +7402,10 @@ ast_process_struct_or_iface_block_members(exec_list *instructions,
>           }
>  
>           /* Memory qualifiers are allowed on buffer and image variables, while
> -          * the format qualifier is only accept for images.
> +          * the format qualifier is only accepted for images.
>            */
> -         if (var_mode == ir_var_shader_storage || field_type->is_image()) {
> +         if (var_mode == ir_var_shader_storage ||
> +             field_type->without_array()->is_image()) {
>              /* For readonly and writeonly qualifiers the field definition,
>               * if set, overwrites the layout qualifier.
>               */
> @@ -7431,7 +7432,7 @@ ast_process_struct_or_iface_block_members(exec_list *instructions,
>              fields[i].memory_restrict = qual->flags.q.restrict_flag ||
>                                          (layout && layout->flags.q.restrict_flag);
>  
> -            if (field_type->is_image()) {
> +            if (field_type->without_array()->is_image()) {
>                 if (qual->flags.q.explicit_image_format) {
>                    if (qual->image_base_type != field_type->sampled_type) {
>                       _mesa_glsl_error(&loc, state, "format qualifier doesn't "
> 



More information about the mesa-dev mailing list