On 21.11.2017 04:37, Timothy Arceri wrote:
---
  src/mesa/state_tracker/st_glsl_to_nir.cpp | 26 +++++++++++++++-----------
  1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp 
b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index bb0ba07012..8c22bde835 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -470,21 +470,21 @@ set_st_program(struct gl_program *prog,
        stcp = (struct st_compute_program *)prog;
        stcp->shader_program = shader_program;
        stcp->tgsi.ir_type = PIPE_SHADER_IR_NIR;
        stcp->tgsi.prog = nir_shader_clone(NULL, nir);
        break;
     default:
        unreachable("unknown shader stage");
     }
  }
-struct gl_program *
+static nir_shader *
  st_nir_get_mesa_program(struct gl_context *ctx,
                          struct gl_shader_program *shader_program,
                          struct gl_linked_shader *shader)
  {
     struct st_context *st = st_context(ctx);
     struct gl_program *prog;
validate_ir_tree(shader->ir); prog = shader->Program;
@@ -504,39 +504,43 @@ st_nir_get_mesa_program(struct gl_context *ctx,
        _mesa_log("\n\n");
     }
prog->ExternalSamplersUsed = gl_external_samplers(prog);
     _mesa_update_shader_textures_used(shader_program, prog);
nir_shader *nir = st_glsl_to_nir(st, prog, shader_program, shader->Stage); set_st_program(prog, shader_program, nir); - return prog;
+   return nir;
  }
bool
  st_link_nir(struct gl_context *ctx,
              struct gl_shader_program *shader_program)
  {
     for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
        struct gl_linked_shader *shader = shader_program->_LinkedShaders[i];
        if (shader == NULL)
           continue;
- struct gl_program *linked_prog =
-         st_nir_get_mesa_program(ctx, shader_program, shader);
+      nir_shader *nir = st_nir_get_mesa_program(ctx, shader_program, shader);

It seems a bit odd to have this unused variable here.

Apparently the long-term plan is to just set prog->nir in st_nir_get_mesa_program, so perhaps this could be done here already and the return of st_nir_get_mesa_program could just be removed?

Cheers,
Nicolai


+   }
- if (linked_prog) {
-         if (!ctx->Driver.ProgramStringNotify(ctx,
-                                              _mesa_shader_stage_to_program(i),
-                                              linked_prog)) {
-            _mesa_reference_program(ctx, &shader->Program, NULL);
-            return false;
-         }
+   for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
+      struct gl_linked_shader *shader = shader_program->_LinkedShaders[i];
+      if (shader == NULL)
+         continue;
+
+      assert(shader->Program);
+      if (!ctx->Driver.ProgramStringNotify(ctx,
+                                           _mesa_shader_stage_to_program(i),
+                                           shader->Program)) {
+         _mesa_reference_program(ctx, &shader->Program, NULL);
+         return false;
        }
     }
return true;
  }
} /* extern "C" */



--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to