[Mesa-dev] [PATCH 3/3] st/mesa: use vertex id lowering according to pipe cap bit.

Roland Scheidegger sroland at vmware.com
Wed Dec 10 16:11:19 PST 2014


Am 11.12.2014 um 00:53 schrieb Brian Paul:
> On 12/10/2014 02:22 PM, sroland at vmware.com wrote:
>> From: Roland Scheidegger <sroland at 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.
Yes, I tested lowering by setting this temporarily to 1 for llvmpipe, so
the log is a bit misleading.

Roland

> 
> 
>> ---
>>   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) {
>>
> 



More information about the mesa-dev mailing list