ac/nir_to_llvm: fix image size for arrays of arrays
authorTimothy Arceri <tarceri@itsqueeze.com>
Mon, 12 Feb 2018 22:42:48 +0000 (09:42 +1100)
committerTimothy Arceri <tarceri@itsqueeze.com>
Wed, 14 Feb 2018 22:02:41 +0000 (09:02 +1100)
Fixes cts test:
KHR-GL44.shader_image_size.advanced-changeSize

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/amd/common/ac_nir_to_llvm.c

index b5575d5753c5664560cf79d1a8f9147b1c90eded..dc551172d98e7f74ed27a2f274f3033534162de1 100644 (file)
@@ -3786,12 +3786,10 @@ static LLVMValueRef visit_image_size(struct ac_nir_context *ctx,
 {
        LLVMValueRef res;
        const nir_variable *var = instr->variables[0]->var;
-       const struct glsl_type *type = instr->variables[0]->var->type;
-       bool da = glsl_sampler_type_is_array(var->type) ||
-                 glsl_get_sampler_dim(var->type) == GLSL_SAMPLER_DIM_CUBE ||
-                 glsl_get_sampler_dim(var->type) == GLSL_SAMPLER_DIM_3D;
-       if(instr->variables[0]->deref.child)
-               type = instr->variables[0]->deref.child->type;
+       const struct glsl_type *type = glsl_without_array(var->type);
+       bool da = glsl_sampler_type_is_array(type) ||
+                 glsl_get_sampler_dim(type) == GLSL_SAMPLER_DIM_CUBE ||
+                 glsl_get_sampler_dim(type) == GLSL_SAMPLER_DIM_3D;
 
        if (glsl_get_sampler_dim(type) == GLSL_SAMPLER_DIM_BUF)
                return get_buffer_size(ctx,