[Mesa-dev] [PATCH 1/3] gallium/tgsi: add missing string for layer semantic
Roland Scheidegger
sroland at vmware.com
Wed Jun 5 21:11:41 PDT 2013
Am 06.06.2013 04:16, schrieb Roland Scheidegger:
> Am 06.06.2013 02:52, schrieb Brian Paul:
>> On 06/05/2013 05:44 PM, sroland at vmware.com wrote:
>>> From: Roland Scheidegger <sroland at vmware.com>
>>>
>>> Also report if a shader writes the layer semantic
>>> ---
>>> src/gallium/auxiliary/draw/draw_context.c | 2 +-
>>> src/gallium/auxiliary/tgsi/tgsi_scan.c | 5 +++++
>>> src/gallium/auxiliary/tgsi/tgsi_scan.h | 1 +
>>> src/gallium/auxiliary/tgsi/tgsi_strings.c | 1 +
>>> 4 files changed, 8 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/gallium/auxiliary/draw/draw_context.c
>>> b/src/gallium/auxiliary/draw/draw_context.c
>>> index 58ce270..35063b9 100644
>>> --- a/src/gallium/auxiliary/draw/draw_context.c
>>> +++ b/src/gallium/auxiliary/draw/draw_context.c
>>> @@ -548,7 +548,7 @@ draw_get_shader_info(const struct draw_context *draw)
>>> * function to find those attributes.
>>> *
>>> * -1 is returned if the attribute is not found since this is
>>> - * an undefined situtation. Note, that zero is valid and can
>>> + * an undefined situation. Note, that zero is valid and can
>>> * be used by any of the attributes, because position is not
>>> * required to be attribute 0 or even at all present.
>>> */
>>> diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c
>>> b/src/gallium/auxiliary/tgsi/tgsi_scan.c
>>> index 0230267..d331257 100644
>>> --- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
>>> +++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
>>> @@ -217,6 +217,11 @@ tgsi_scan_shader(const struct tgsi_token *tokens,
>>> TGSI_SEMANTIC_VIEWPORT_INDEX) {
>>> info->writes_viewport_index = TRUE;
>>> }
>>> + if (procType == TGSI_PROCESSOR_GEOMETRY &&
>>> + fulldecl->Semantic.Name ==
>>> + TGSI_SEMANTIC_LAYER) {
>>> + info->writes_layer = TRUE;
>>> + }
>>> }
>>>
>>> }
>>> diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.h
>>> b/src/gallium/auxiliary/tgsi/tgsi_scan.h
>>> index 676abf0..a5b7024 100644
>>> --- a/src/gallium/auxiliary/tgsi/tgsi_scan.h
>>> +++ b/src/gallium/auxiliary/tgsi/tgsi_scan.h
>>> @@ -76,6 +76,7 @@ struct tgsi_shader_info
>>> boolean pixel_center_integer;
>>> boolean color0_writes_all_cbufs;
>>> boolean writes_viewport_index;
>>> + boolean writes_layer;
>>>
>>> unsigned num_written_clipdistance;
>>> /**
>>> diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.c
>>> b/src/gallium/auxiliary/tgsi/tgsi_strings.c
>>> index 6abf927..625107c 100644
>>> --- a/src/gallium/auxiliary/tgsi/tgsi_strings.c
>>> +++ b/src/gallium/auxiliary/tgsi/tgsi_strings.c
>>> @@ -80,6 +80,7 @@ const char *tgsi_semantic_names[TGSI_SEMANTIC_COUNT] =
>>> "TEXCOORD",
>>> "PCOORD",
>>> "VIEWPORT_INDEX"
>>> + "LAYER"
>>> };
>>>
>>> const char *tgsi_texture_names[TGSI_TEXTURE_COUNT] =
>>>
>>
>> Hmm, there's a STATIC_ASSERT later in the file which should have
>> detected a missing string in the array. I bet we need to remove the
>> TGSI_SEMANTIC_COUNT from the array size declaration to make that work.
>> Can you check into that.
> That is odd indeed. The patch was actually buggy (no comma). All of
> these name arrays there are indeed fixed size which looks like defeating
> the purpose of the STATIC_ASSERT. Even if I change this though it never
> triggers no matter what's in there. Hmm.
>
So this can't work. The size of these arrays is declared elsewhere, what
we put in in this file here doesn't really matter for the Elements used
in STATIC_ASSERT at all. And we can't just make the size dynamic in
there in tgsi_string.h as sizeof() used for Elements can't work with
that. So I've no idea how to make this actually work.
Roland
More information about the mesa-dev
mailing list