From 257a9b0a94ddf2e88bc29771f1f46abdd2d4464d Mon Sep 17 00:00:00 2001 From: Erico Nunes Date: Tue, 30 Apr 2019 00:10:02 +0200 Subject: [PATCH] lima/gpir: add limit of max 512 instructions It has been noted that the lima GP has a limit of 512 instructions, after which the shaders don't work and fail silently. This commit adds a check to make the shader compilation abort when the shader exceeds this limit, so that we get a clear reason for why the program will not work. Signed-off-by: Erico Nunes Reviewed-by: Qiang Yu --- src/gallium/drivers/lima/ir/gp/codegen.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gallium/drivers/lima/ir/gp/codegen.c b/src/gallium/drivers/lima/ir/gp/codegen.c index 798cf8e..1b7c890 100644 --- a/src/gallium/drivers/lima/ir/gp/codegen.c +++ b/src/gallium/drivers/lima/ir/gp/codegen.c @@ -560,6 +560,12 @@ bool gpir_codegen_prog(gpir_compiler *comp) num_instr += list_length(&block->instr_list); } + if (num_instr > 512) { + gpir_error("shader too big (%d), GP has a 512 instruction limit.\n", + num_instr); + return false; + } + gpir_codegen_instr *code = rzalloc_array(comp->prog, gpir_codegen_instr, num_instr); if (!code) return false; -- 2.7.4