nir/spirv: Add the option to keep ViewIndex as an input
[mesa.git] / src / compiler / spirv / vtn_variables.c
index 1cb848a3af85750ad4ab877527681b0a33e1653e..a7ccafdc8b96f0bdb98bf46cccd0ec2578f3a964 100644 (file)
@@ -1436,8 +1436,13 @@ vtn_get_builtin_location(struct vtn_builder *b,
       set_mode_system_value(b, mode);
       break;
    case SpvBuiltInViewIndex:
-      *location = SYSTEM_VALUE_VIEW_INDEX;
-      set_mode_system_value(b, mode);
+      if (b->options && b->options->view_index_is_input) {
+         *location = VARYING_SLOT_VIEW_INDEX;
+         vtn_assert(*mode == nir_var_shader_in);
+      } else {
+         *location = SYSTEM_VALUE_VIEW_INDEX;
+         set_mode_system_value(b, mode);
+      }
       break;
    case SpvBuiltInSubgroupEqMask:
       *location = SYSTEM_VALUE_SUBGROUP_EQ_MASK,