lima/gpir: add limit of max 512 instructions
authorErico Nunes <nunes.erico@gmail.com>
Mon, 29 Apr 2019 22:10:02 +0000 (00:10 +0200)
committerErico Nunes <nunes.erico@gmail.com>
Thu, 2 May 2019 00:02:58 +0000 (00:02 +0000)
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 <nunes.erico@gmail.com>
Reviewed-by: Qiang Yu <yuq825@gmail.com>
src/gallium/drivers/lima/ir/gp/codegen.c

index 798cf8ec88ec6057ef96b758cdbff5c25e943820..1b7c8903c97f0804cbb2aab0a1c91ada4977af74 100644 (file)
@@ -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;