[Mesa-dev] [PATCH] spirv: gl_PrimitiveID in the fragment shader is handled as an input

Iago Toral Quiroga itoral at igalia.com
Mon Jan 9 12:50:28 UTC 2017


Geometry and Tessellation stages do handle this as a system value instead.

Fixes:
dEQP-VK.geometry.basic.primitive_id
---
 src/compiler/spirv/vtn_variables.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c
index 9b84c97..cf47e5d 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -908,7 +908,8 @@ vtn_get_builtin_location(struct vtn_builder *b,
       set_mode_system_value(mode);
       break;
    case SpvBuiltInPrimitiveId:
-      if (*mode == nir_var_shader_out) {
+      if (*mode == nir_var_shader_out ||
+          b->shader->stage == MESA_SHADER_FRAGMENT) {
          *location = VARYING_SLOT_PRIMITIVE_ID;
       } else {
          *location = SYSTEM_VALUE_PRIMITIVE_ID;
-- 
2.7.4



More information about the mesa-dev mailing list