st/mesa: fix GS varyings for PIPE_CAP_TGSI_TEXCOORD
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Wed, 25 Dec 2013 16:53:49 +0000 (17:53 +0100)
committerMaarten Lankhorst <maarten.lankhorst@canonical.com>
Mon, 27 Jan 2014 15:40:43 +0000 (16:40 +0100)
src/mesa/state_tracker/st_program.c

index 7a15b23fa81d8b6ae873b3d8cb3ced552f0a22b6..cadbe1705a315a7d8f43ba18b956608bb96a91dc 100644 (file)
@@ -944,17 +944,16 @@ st_translate_geometry_program(struct st_context *st,
          case VARYING_SLOT_TEX5:
          case VARYING_SLOT_TEX6:
          case VARYING_SLOT_TEX7:
-            stgp->input_semantic_name[slot] = TGSI_SEMANTIC_GENERIC;
+            stgp->input_semantic_name[slot] = st->needs_texcoord_semantic ?
+               TGSI_SEMANTIC_TEXCOORD : TGSI_SEMANTIC_GENERIC;
             stgp->input_semantic_index[slot] = (attr - VARYING_SLOT_TEX0);
             break;
          case VARYING_SLOT_VAR0:
          default:
             assert(attr >= VARYING_SLOT_VAR0 && attr < VARYING_SLOT_MAX);
             stgp->input_semantic_name[slot] = TGSI_SEMANTIC_GENERIC;
-            stgp->input_semantic_index[slot] = (VARYING_SLOT_VAR0 -
-                                                VARYING_SLOT_TEX0 +
-                                                attr -
-                                                VARYING_SLOT_VAR0);
+            stgp->input_semantic_index[slot] = st->needs_texcoord_semantic ?
+               (attr - VARYING_SLOT_VAR0) : (attr - VARYING_SLOT_TEX0);
          break;
          }
       }
@@ -1036,7 +1035,8 @@ st_translate_geometry_program(struct st_context *st,
          case VARYING_SLOT_TEX5:
          case VARYING_SLOT_TEX6:
          case VARYING_SLOT_TEX7:
-            gs_output_semantic_name[slot] = TGSI_SEMANTIC_GENERIC;
+            gs_output_semantic_name[slot] = st->needs_texcoord_semantic ?
+               TGSI_SEMANTIC_TEXCOORD : TGSI_SEMANTIC_GENERIC;
             gs_output_semantic_index[slot] = (attr - VARYING_SLOT_TEX0);
             break;
          case VARYING_SLOT_VAR0:
@@ -1044,10 +1044,9 @@ st_translate_geometry_program(struct st_context *st,
             assert(slot < Elements(gs_output_semantic_name));
             assert(attr >= VARYING_SLOT_VAR0);
             gs_output_semantic_name[slot] = TGSI_SEMANTIC_GENERIC;
-            gs_output_semantic_index[slot] = (VARYING_SLOT_VAR0 -
-                                              VARYING_SLOT_TEX0 +
-                                              attr - 
-                                              VARYING_SLOT_VAR0);
+            gs_output_semantic_index[slot] = st->needs_texcoord_semantic ?
+               (attr - VARYING_SLOT_VAR0) : (attr - VARYING_SLOT_TEX0);
+         break;
          }
       }
    }