From d45476c079d440accb85697fd1f79ff905eb0f1d Mon Sep 17 00:00:00 2001 From: Vasily Khoruzhick Date: Wed, 23 Aug 2023 12:14:30 -0700 Subject: [PATCH] lima: gpir: abort compilation if load_uniform instrinsic src isn't const GP supports indirect indexing of uniforms, but it's never been implemented in GPIR, so just abort compilation instead of crashing an app with assertion failure. Backport-to: 23.3 Backport-to: 24.0 Reviewed-by: Erico Nunes Part-of: (cherry picked from commit feccf4121b6dcd11909a41d497f3540db2e30df3) --- .pick_status.json | 2 +- src/gallium/drivers/lima/ir/gp/nir.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 004c34744af..9c372cd3b18 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1414,7 +1414,7 @@ "description": "lima: gpir: abort compilation if load_uniform instrinsic src isn't const", "nominated": false, "nomination_type": 3, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/gallium/drivers/lima/ir/gp/nir.c b/src/gallium/drivers/lima/ir/gp/nir.c index 765da082ed0..4b02e60a8fc 100644 --- a/src/gallium/drivers/lima/ir/gp/nir.c +++ b/src/gallium/drivers/lima/ir/gp/nir.c @@ -253,6 +253,11 @@ static bool gpir_emit_intrinsic(gpir_block *block, nir_instr *ni) case nir_intrinsic_load_uniform: { int offset = nir_intrinsic_base(instr); + + if (!nir_src_is_const(instr->src[0])) { + gpir_error("indirect indexing for uniforms is not implemented\n"); + return false; + } offset += (int)nir_src_as_float(instr->src[0]); return gpir_create_load(block, &instr->def,