On 12/10/2014 02:22 PM, srol...@vmware.com wrote:
From: Roland Scheidegger <srol...@vmware.com>

Tested with llvmpipe, seems to work, though no driver requests it for now.

It looks like all drivers (including llvmpipe) return 0 for the PIPE_CAP_VERTEXID_NOOFFSET query.


---
  src/mesa/state_tracker/st_extensions.c     | 4 ++++
  src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 8 ++++++--
  2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/mesa/state_tracker/st_extensions.c 
b/src/mesa/state_tracker/st_extensions.c
index 20a6845..1a0261b 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -674,6 +674,10 @@ void st_init_extensions(struct pipe_screen *screen,
        consts->NativeIntegers = GL_TRUE;
        consts->MaxClipPlanes = 8;

+      if (screen->get_param(screen, PIPE_CAP_VERTEXID_NOOFFSET)) {
+         consts->VertexID_is_zero_based = GL_TRUE;
+      }
+
        /* Extensions that either depend on GLSL 1.30 or are a subset thereof. 
*/
        extensions->ARB_conservative_depth = GL_TRUE;
        extensions->ARB_shading_language_packing = GL_TRUE;
diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp 
b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index 80dd102..dda3985 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -4195,8 +4195,8 @@ const unsigned _mesa_sysval_to_semantic[SYSTEM_VALUE_MAX] 
= {
      */
     TGSI_SEMANTIC_VERTEXID,
     TGSI_SEMANTIC_INSTANCEID,
-   0,
-   0,
+   TGSI_SEMANTIC_VERTEXID_ZEROBASE,
+   TGSI_SEMANTIC_BASEVERTEX,

     /* Geometry shader
      */
@@ -4907,6 +4907,10 @@ st_translate_program(
            TGSI_SEMANTIC_SAMPLEMASK);
     assert(_mesa_sysval_to_semantic[SYSTEM_VALUE_INVOCATION_ID] ==
            TGSI_SEMANTIC_INVOCATIONID);
+   assert(_mesa_sysval_to_semantic[SYSTEM_VALUE_VERTEX_ID_ZERO_BASE] ==
+          TGSI_SEMANTIC_VERTEXID_ZEROBASE);
+   assert(_mesa_sysval_to_semantic[SYSTEM_VALUE_BASE_VERTEX] ==
+          TGSI_SEMANTIC_BASEVERTEX);

     t = CALLOC_STRUCT(st_translate);
     if (!t) {


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to