From d2ca8be9985144ba5661a32e1ffdd23e988cfcfa Mon Sep 17 00:00:00 2001 From: Vasily Khoruzhick Date: Sat, 13 Mar 2021 22:17:18 -0800 Subject: [PATCH] lima: add precompile debug flag This flag will be used by run from mesa-shader-db to trigger shader compilation with default settings. Tested-by: Emmanuel Gil Peyrot Reviewed-by: Erico Nunes Signed-off-by: Vasily Khoruzhick Part-of: --- src/gallium/drivers/lima/lima_program.c | 30 ++++++++++++++----------- src/gallium/drivers/lima/lima_screen.c | 2 ++ src/gallium/drivers/lima/lima_screen.h | 1 + 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/gallium/drivers/lima/lima_program.c b/src/gallium/drivers/lima/lima_program.c index 8d154d1998e..fd08eacc628 100644 --- a/src/gallium/drivers/lima/lima_program.c +++ b/src/gallium/drivers/lima/lima_program.c @@ -368,15 +368,17 @@ lima_create_fs_state(struct pipe_context *pctx, so->base.type = PIPE_SHADER_IR_NIR; so->base.ir.nir = nir; - /* Trigger initial compilation with default settings */ - struct lima_fs_key key = { - .shader_state = so, - }; - for (int i = 0; i < ARRAY_SIZE(key.tex); i++) { - for (int j = 0; j < 4; j++) - key.tex[i].swizzle[j] = j; + if (lima_debug & LIMA_DEBUG_PRECOMPILE) { + /* Trigger initial compilation with default settings */ + struct lima_fs_key key = { + .shader_state = so, + }; + for (int i = 0; i < ARRAY_SIZE(key.tex); i++) { + for (int j = 0; j < 4; j++) + key.tex[i].swizzle[j] = j; + } + lima_get_compiled_fs(ctx, &key); } - lima_get_compiled_fs(ctx, &key); return so; } @@ -568,11 +570,13 @@ lima_create_vs_state(struct pipe_context *pctx, so->base.type = PIPE_SHADER_IR_NIR; so->base.ir.nir = nir; - /* Trigger initial compilation with default settings */ - struct lima_vs_key key = { - .shader_state = so, - }; - lima_get_compiled_vs(ctx, &key); + if (lima_debug & LIMA_DEBUG_PRECOMPILE) { + /* Trigger initial compilation with default settings */ + struct lima_vs_key key = { + .shader_state = so, + }; + lima_get_compiled_vs(ctx, &key); + } return so; } diff --git a/src/gallium/drivers/lima/lima_screen.c b/src/gallium/drivers/lima/lima_screen.c index e3c1effb192..7a7fdded6b8 100644 --- a/src/gallium/drivers/lima/lima_screen.c +++ b/src/gallium/drivers/lima/lima_screen.c @@ -568,6 +568,8 @@ static const struct debug_named_value lima_debug_options[] = { "disable growable heap buffer" }, { "singlejob", LIMA_DEBUG_SINGLE_JOB, "disable multi job optimization" }, + { "precompile", LIMA_DEBUG_PRECOMPILE, + "Precompile shaders for shader-db" }, { NULL } }; diff --git a/src/gallium/drivers/lima/lima_screen.h b/src/gallium/drivers/lima/lima_screen.h index f92a4385737..9f470b82aa9 100644 --- a/src/gallium/drivers/lima/lima_screen.h +++ b/src/gallium/drivers/lima/lima_screen.h @@ -42,6 +42,7 @@ #define LIMA_DEBUG_NO_TILING (1 << 6) #define LIMA_DEBUG_NO_GROW_HEAP (1 << 7) #define LIMA_DEBUG_SINGLE_JOB (1 << 8) +#define LIMA_DEBUG_PRECOMPILE (1 << 9) extern uint32_t lima_debug; extern int lima_ctx_num_plb;