nir/lower_viewport: Check variable mode first
authorConnor Abbott <cwabbott0@gmail.com>
Mon, 10 Jun 2019 19:59:12 +0000 (21:59 +0200)
committerConnor Abbott <cwabbott0@gmail.com>
Thu, 18 Jul 2019 12:21:41 +0000 (14:21 +0200)
The location is unused for shader_temp and function_temp variables, and
due to the way we nir_lower_io_to_temproraries demotes shader_out
variables to shader_temp variables, it happened to equal
VARYING_SLOT_POS for the gl_Position temporary, which made this pass
fail with the offline compiler due to this coming before vars_to_ssa.

Reviewed-by: Qiang Yu <yuq825@gmail.com>
src/compiler/nir/nir_lower_viewport_transform.c

index 94b54524ab7a77bd0af6a4d91a97d84a7ca126fb..4bbc88d75f583e7d792558a42a831d46febd1dfb 100644 (file)
@@ -56,7 +56,8 @@ nir_lower_viewport_transform(nir_shader *shader)
                continue;
 
             nir_variable *var = nir_intrinsic_get_var(intr, 0);
-            if (var->data.location != VARYING_SLOT_POS)
+            if (var->data.mode != nir_var_shader_out ||
+                var->data.location != VARYING_SLOT_POS)
                continue;
 
             nir_builder b;