[Mesa-dev] [PATCH 2/3] gallium: replace pipe_type enum with tgsi_type enum

Brian Paul brianp at vmware.com
Mon Sep 22 12:13:50 PDT 2014


The only real purpose to this patch series was to clean up some type 
cross-contamination I found between TGSI and p_formats.h (actually, I 
found and patched this a few months ago but only rediscovered it this 
weekend).

I think the purpose of the return type is to know if the sampler returns 
float vs. int without knowing anything about the texture.  But I don't 
understand unorm/snorm there either.  If it's really not used, maybe we 
can yank it down the road.

I like the "tgsi_return_type" suggestion.  I'll do that.

-Brian


On 09/22/2014 11:48 AM, Roland Scheidegger wrote:
> The series looks good to me, though could rename the (quite underused)
> pipe_type enum to tgsi_return_type instead and leave tgsi_type alone?
> Or for further clarity, rename both (to tgsi_opcode_type and
> tgsi_ret_type or something). Either way though looks ok to me.
>
> (That said, I don't understand what the tgsi return type is really good
> for. This is a d3d10-ism obviously, but even there I don't get it. What
> the hell does it do? The return type from sampling can't be something
> like unorm anyway, and I can't see why it makes sense to have to
> describe the pre-sampling channel type here, as that's going to be
> determined by the actual format anyway, so if this really would describe
> the pre-sampling channel type, it would mean you'd have to redeclare the
> shader if you want to sample float vs. unorm texture etc. which doesn't
> make much sense to me, is this really the case?. llvmpipe/gallivm
> certainly don't care about that channel type one bit.)
>
> Roland
>
>
> Am 22.09.2014 17:44, schrieb Brian Paul:
>> The only place the enum pipe_type was used is for the TGSI sampler
>> view return type.  So make it a TGSI type.
>> ---
>>   src/gallium/auxiliary/tgsi/tgsi_build.c    |    8 ++++----
>>   src/gallium/auxiliary/tgsi/tgsi_strings.c  |    3 ++-
>>   src/gallium/auxiliary/tgsi/tgsi_strings.h  |    2 +-
>>   src/gallium/auxiliary/tgsi/tgsi_text.c     |    4 ++--
>>   src/gallium/include/pipe/p_format.h        |    9 ---------
>>   src/gallium/include/pipe/p_shader_tokens.h |   17 +++++++++++++----
>>   6 files changed, 22 insertions(+), 21 deletions(-)
>>
>> diff --git a/src/gallium/auxiliary/tgsi/tgsi_build.c b/src/gallium/auxiliary/tgsi/tgsi_build.c
>> index bef5c75..ffc4c61 100644
>> --- a/src/gallium/auxiliary/tgsi/tgsi_build.c
>> +++ b/src/gallium/auxiliary/tgsi/tgsi_build.c
>> @@ -297,10 +297,10 @@ tgsi_default_declaration_sampler_view(void)
>>      struct tgsi_declaration_sampler_view dsv;
>>
>>      dsv.Resource = TGSI_TEXTURE_BUFFER;
>> -   dsv.ReturnTypeX = PIPE_TYPE_UNORM;
>> -   dsv.ReturnTypeY = PIPE_TYPE_UNORM;
>> -   dsv.ReturnTypeZ = PIPE_TYPE_UNORM;
>> -   dsv.ReturnTypeW = PIPE_TYPE_UNORM;
>> +   dsv.ReturnTypeX = TGSI_TYPE_UNORM;
>> +   dsv.ReturnTypeY = TGSI_TYPE_UNORM;
>> +   dsv.ReturnTypeZ = TGSI_TYPE_UNORM;
>> +   dsv.ReturnTypeW = TGSI_TYPE_UNORM;
>>
>>      return dsv;
>>   }
>> diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.c b/src/gallium/auxiliary/tgsi/tgsi_strings.c
>> index 3c108a8..fb19893 100644
>> --- a/src/gallium/auxiliary/tgsi/tgsi_strings.c
>> +++ b/src/gallium/auxiliary/tgsi/tgsi_strings.c
>> @@ -125,7 +125,7 @@ const char *tgsi_property_names[TGSI_PROPERTY_COUNT] =
>>      "VS_POSITION_WINDOW_SPACE"
>>   };
>>
>> -const char *tgsi_type_names[5] =
>> +const char *tgsi_type_names[TGSI_TYPE_COUNT] =
>>   {
>>      "UNORM",
>>      "SNORM",
>> @@ -195,6 +195,7 @@ tgsi_strings_check(void)
>>      STATIC_ASSERT(Elements(tgsi_property_names) == TGSI_PROPERTY_COUNT);
>>      STATIC_ASSERT(Elements(tgsi_primitive_names) == PIPE_PRIM_MAX);
>>      STATIC_ASSERT(Elements(tgsi_interpolate_names) == TGSI_INTERPOLATE_COUNT);
>> +   STATIC_ASSERT(Elements(tgsi_type_names) == TGSI_TYPE_COUNT);
>>      (void) tgsi_processor_type_names;
>>      (void) tgsi_type_names;
>>      (void) tgsi_immediate_type_names;
>> diff --git a/src/gallium/auxiliary/tgsi/tgsi_strings.h b/src/gallium/auxiliary/tgsi/tgsi_strings.h
>> index 1c37c29..1e96883 100644
>> --- a/src/gallium/auxiliary/tgsi/tgsi_strings.h
>> +++ b/src/gallium/auxiliary/tgsi/tgsi_strings.h
>> @@ -46,7 +46,7 @@ extern const char *tgsi_texture_names[TGSI_TEXTURE_COUNT];
>>
>>   extern const char *tgsi_property_names[TGSI_PROPERTY_COUNT];
>>
>> -extern const char *tgsi_type_names[5];
>> +extern const char *tgsi_type_names[TGSI_TYPE_COUNT];
>>
>>   extern const char *tgsi_interpolate_names[TGSI_INTERPOLATE_COUNT];
>>
>> diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c
>> index 7291145..296af2a 100644
>> --- a/src/gallium/auxiliary/tgsi/tgsi_text.c
>> +++ b/src/gallium/auxiliary/tgsi/tgsi_text.c
>> @@ -1258,7 +1258,7 @@ static boolean parse_declaration( struct translate_ctx *ctx )
>>            ++cur;
>>            eat_opt_white( &cur );
>>            for (j = 0; j < 4; ++j) {
>> -            for (i = 0; i < PIPE_TYPE_COUNT; ++i) {
>> +            for (i = 0; i < TGSI_TYPE_COUNT; ++i) {
>>                  if (str_match_nocase_whole(&cur, tgsi_type_names[i])) {
>>                     switch (j) {
>>                     case 0:
>> @@ -1279,7 +1279,7 @@ static boolean parse_declaration( struct translate_ctx *ctx )
>>                     break;
>>                  }
>>               }
>> -            if (i == PIPE_TYPE_COUNT) {
>> +            if (i == TGSI_TYPE_COUNT) {
>>                  if (j == 0 || j >  2) {
>>                     report_error(ctx, "Expected type name");
>>                     return FALSE;
>> diff --git a/src/gallium/include/pipe/p_format.h b/src/gallium/include/pipe/p_format.h
>> index 9c02464..b007229 100644
>> --- a/src/gallium/include/pipe/p_format.h
>> +++ b/src/gallium/include/pipe/p_format.h
>> @@ -35,15 +35,6 @@ extern "C" {
>>
>>   #include "p_config.h"
>>
>> -enum pipe_type {
>> -   PIPE_TYPE_UNORM = 0,
>> -   PIPE_TYPE_SNORM,
>> -   PIPE_TYPE_SINT,
>> -   PIPE_TYPE_UINT,
>> -   PIPE_TYPE_FLOAT,
>> -   PIPE_TYPE_COUNT
>> -};
>> -
>>   /**
>>    * Texture/surface image formats (preliminary)
>>    */
>> diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h
>> index 8ab1ea8..b37eb7b 100644
>> --- a/src/gallium/include/pipe/p_shader_tokens.h
>> +++ b/src/gallium/include/pipe/p_shader_tokens.h
>> @@ -192,12 +192,21 @@ struct tgsi_declaration_resource {
>>      unsigned Padding     : 22;
>>   };
>>
>> +enum tgsi_type {
>> +   TGSI_TYPE_UNORM = 0,
>> +   TGSI_TYPE_SNORM,
>> +   TGSI_TYPE_SINT,
>> +   TGSI_TYPE_UINT,
>> +   TGSI_TYPE_FLOAT,
>> +   TGSI_TYPE_COUNT
>> +};
>> +
>>   struct tgsi_declaration_sampler_view {
>>      unsigned Resource    : 8; /**< one of TGSI_TEXTURE_ */
>> -   unsigned ReturnTypeX : 6; /**< one of enum pipe_type */
>> -   unsigned ReturnTypeY : 6; /**< one of enum pipe_type */
>> -   unsigned ReturnTypeZ : 6; /**< one of enum pipe_type */
>> -   unsigned ReturnTypeW : 6; /**< one of enum pipe_type */
>> +   unsigned ReturnTypeX : 6; /**< one of enum tgsi_type */
>> +   unsigned ReturnTypeY : 6; /**< one of enum tgsi_type */
>> +   unsigned ReturnTypeZ : 6; /**< one of enum tgsi_type */
>> +   unsigned ReturnTypeW : 6; /**< one of enum tgsi_type */
>>   };
>>
>>   struct tgsi_declaration_array {
>>
>



More information about the mesa-dev mailing list