Module: Mesa
Branch: main
Commit: 7610747e9446fc367e28fae30c3d9f72e3f8f749
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7610747e9446fc367e28fae30c3d9f72e3f8f749

Author: Erik Faye-Lund <[email protected]>
Date:   Tue Apr 18 12:23:15 2023 +0200

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 <[email protected]>
Reviewed-by: Emma Anholt <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22520>

---

 src/mesa/state_tracker/st_program.c | 9 ++++++---
 1 file 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);

Reply via email to