From 7691f1b70d4cd09baf8d86903d2c99b5969c46db Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Fri, 7 Nov 2025 14:00:10 -0500 Subject: [PATCH] ir3: Support addr0 align of 8 At this point it isn't actually an alignment, but we need to multiply by 8 now because there are 2 vec4's per view for FDM driver params. Part-of: --- src/freedreno/ir3/ir3_context.c | 5 +++++ src/freedreno/ir3/ir3_context.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/freedreno/ir3/ir3_context.c b/src/freedreno/ir3/ir3_context.c index b334a32341b..ba3744a41e4 100644 --- a/src/freedreno/ir3/ir3_context.c +++ b/src/freedreno/ir3/ir3_context.c @@ -374,6 +374,11 @@ create_addr0(struct ir3_builder *build, struct ir3_instruction *src, int align) immed = create_immed_typed_shared(build, 2, TYPE_S16, shared); instr = ir3_SHL_B(build, instr, 0, immed, 0); break; + case 8: + /* src *= 8 => src <<= 3: */ + immed = create_immed_typed_shared(build, 3, TYPE_S16, shared); + instr = ir3_SHL_B(build, instr, 0, immed, 0); + break; default: UNREACHABLE("bad align"); return NULL; diff --git a/src/freedreno/ir3/ir3_context.h b/src/freedreno/ir3/ir3_context.h index e872fa37d10..2aeed94a348 100644 --- a/src/freedreno/ir3/ir3_context.h +++ b/src/freedreno/ir3/ir3_context.h @@ -104,7 +104,7 @@ struct ir3_context { * src used for an array of vec1 cannot be also used for an * array of vec4. */ - struct hash_table *addr0_ht[4]; + struct hash_table *addr0_ht[8]; struct hash_table *sel_cond_conversions; struct hash_table *predicate_conversions;