summaryrefslogtreecommitdiff
path: root/src/mesa
diff options
context:
space:
mode:
authorErik Faye-Lund <erik.faye-lund@collabora.com>2023-04-18 12:23:15 +0200
committerMarge Bot <emma+marge@anholt.net>2023-04-29 12:39:18 +0000
commit7610747e9446fc367e28fae30c3d9f72e3f8f749 (patch)
tree5e79922cfbd9b5c5484fc0822f68ca995875ac16 /src/mesa
parentfdd20b9469dd962b221f9c1c0e31068a779cfc21 (diff)
downloadmesa-7610747e9446fc367e28fae30c3d9f72e3f8f749.tar.gz
mesa/main: allow passing nir-shaders to st_program_string_notify
This will enable us to emit NIR directly for fixed-function vertex shaders. Acked-by: Marek Olšák <marek.olsak@amd.com> Reviewed-by: Emma Anholt <emma@anholt.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22520>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/state_tracker/st_program.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c
index 855cec4dc7c..5d39b2e9203 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -598,7 +598,7 @@ st_translate_vertex_program(struct st_context *st,
if (prog->Parameters->NumParameters)
prog->affected_states |= ST_NEW_VS_CONSTANTS;
- if (prog->nir)
+ if (prog->arb.Instructions && prog->nir)
ralloc_free(prog->nir);
if (prog->serialized_nir) {
@@ -607,8 +607,11 @@ st_translate_vertex_program(struct st_context *st,
}
prog->state.type = PIPE_SHADER_IR_NIR;
- prog->nir = st_translate_prog_to_nir(st, prog,
- MESA_SHADER_VERTEX);
+ if (prog->arb.Instructions)
+ prog->nir = st_translate_prog_to_nir(st, prog,
+ MESA_SHADER_VERTEX);
+ else
+ st_prog_to_nir_postprocess(st, prog->nir, prog);
prog->info = prog->nir->info;
st_prepare_vertex_program(prog);