From 56842d33d53f3ea76b9359e8ead2ea4487e62dc1 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 6 Jun 2019 14:27:13 -0700 Subject: [PATCH] freedreno: Fix up end range of unaligned UBO loads. We need the constants uploaded to cover the NIR offset plus the size, not the aligned-down start of our upload range plus the size. Fixes mistaken UBO analysis with mat3 loads. Fixes: 893425a607a6 ("freedreno/ir3: Push UBOs to constant file") Reviewed-by: Kristian H. Kristensen Reviewed-by: Rob Clark --- src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c b/src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c index aaf962977b3..46216a6f862 100644 --- a/src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c +++ b/src/freedreno/ir3/ir3_nir_analyze_ubo_ranges.c @@ -32,10 +32,11 @@ get_ubo_load_range(nir_intrinsic_instr *instr) { struct ir3_ubo_range r; + const int offset = nir_src_as_uint(instr->src[1]); const int bytes = nir_intrinsic_dest_components(instr) * 4; - r.start = ROUND_DOWN_TO(nir_src_as_uint(instr->src[1]), 16 * 4); - r.end = ALIGN(r.start + bytes, 16 * 4); + r.start = ROUND_DOWN_TO(offset, 16 * 4); + r.end = ALIGN(offset + bytes, 16 * 4); return r; } -- 2.30.2