On 10.11.2017 04:13, Timothy Arceri wrote:
This is too simple and breaks gs and I'm not sure its required there
anyway.

Can you add an example for what breaks?

Thanks,
Nicolai


---
  src/mesa/state_tracker/st_glsl_to_nir.cpp | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp 
b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index 6c474cb718..d478725fbe 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -359,21 +359,24 @@ sort_varyings(struct exec_list *var_list)
   * variant lowering.
   */
  void
  st_finalize_nir(struct st_context *st, struct gl_program *prog,
                  struct gl_shader_program *shader_program, nir_shader *nir)
  {
     struct pipe_screen *screen = st->pipe->screen;
NIR_PASS_V(nir, nir_split_var_copies);
     NIR_PASS_V(nir, nir_lower_var_copies);
-   NIR_PASS_V(nir, nir_lower_io_types);
+
+   if (nir->info.stage == MESA_SHADER_VERTEX ||
+       nir->info.stage == MESA_SHADER_FRAGMENT)
+      NIR_PASS_V(nir, nir_lower_io_types);
if (nir->info.stage == MESA_SHADER_VERTEX) {
        /* Needs special handling so drvloc matches the vbo state: */
        st_nir_assign_vs_in_locations(prog, nir);
        /* Re-lower global vars, to deal with any dead VS inputs. */
        NIR_PASS_V(nir, nir_lower_global_vars_to_local);
sort_varyings(&nir->outputs);
        nir_assign_var_locations(&nir->outputs,
                                 &nir->num_outputs,



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

Reply via email to