[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