From 9ac5ec2f90f8b6b2c0e67039b1ae7590374be872 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 17 Apr 2019 10:09:14 -0700 Subject: [PATCH] nir: Fix deref offset calculation for structs. We were calcuating the offset for the field within the struct, and just dropping it on the floor. Fixes a regression in KHR-GLES3.shaders.struct.local.nested_struct_array_dynamic_index_fragment and a few of its friends since the scratch lowering commit. Fixes: e8e159e9df40 ("nir/deref: Add helpers for getting offsets") Reviewed-by: Jason Ekstrand --- src/compiler/nir/nir_deref.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/nir/nir_deref.c b/src/compiler/nir/nir_deref.c index 460d3bf4656..93412b1eb6d 100644 --- a/src/compiler/nir/nir_deref.c +++ b/src/compiler/nir/nir_deref.c @@ -215,7 +215,7 @@ nir_build_deref_offset(nir_builder *b, nir_deref_instr *deref, unsigned field_offset = struct_type_get_field_offset(parent->type, size_align, (*p)->strct.index); - nir_iadd(b, offset, nir_imm_int(b, field_offset)); + offset = nir_iadd(b, offset, nir_imm_int(b, field_offset)); } else { unreachable("Unsupported deref type"); }