Re: [Mesa-dev] [PATCH 11/14] mesa/main: Maintain compressed TexEnv Combine state.

2017-04-07 Thread Marek Olšák
On Fri, Apr 7, 2017 at 7:04 PM, Gustaw Smolarczyk  wrote:
> 2017-04-07 16:40 GMT+02:00 Marek Olšák :
>> On Fri, Apr 7, 2017 at 4:35 PM, Marek Olšák  wrote:
>>> On Thu, Mar 30, 2017 at 8:09 PM, Gustaw Smolarczyk  
>>> wrote:
 Signed-off-by: Gustaw Smolarczyk 
 ---
  src/mesa/main/mtypes.h   |  83 ++
  src/mesa/main/texstate.c | 103 
 +++
  2 files changed, 186 insertions(+)

 diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
 index 186d79928c..369d2327f2 100644
 --- a/src/mesa/main/mtypes.h
 +++ b/src/mesa/main/mtypes.h
 @@ -1078,6 +1078,87 @@ struct gl_tex_env_combine_state
  };


 +/** Compressed TexEnv effective Combine mode */
 +enum gl_tex_env_mode
 +{
 +   TEXENV_MODE_REPLACE, /* r = a0 */
 +   TEXENV_MODE_MODULATE,/* r = a0 * a1 */
 +   TEXENV_MODE_ADD, /* r = a0 + a1 */
 +   TEXENV_MODE_ADD_SIGNED,  /* r = a0 + a1 - 0.5 */
 +   TEXENV_MODE_INTERPOLATE, /* r = a0 * a2 + a1 * (1 - a2) */
 +   TEXENV_MODE_SUBTRACT,/* r = a0 - a1 */
 +   TEXENV_MODE_DOT3_RGB,/* r = a0 . a1 */
 +   TEXENV_MODE_DOT3_RGB_EXT,/* r = a0 . a1 */
 +   TEXENV_MODE_DOT3_RGBA,   /* r = a0 . a1 */
 +   TEXENV_MODE_DOT3_RGBA_EXT,   /* r = a0 . a1 */
 +   TEXENV_MODE_MODULATE_ADD_ATI,/* r = a0 * a2 + a1 */
 +   TEXENV_MODE_MODULATE_SIGNED_ADD_ATI, /* r = a0 * a2 + a1 - 0.5 */
 +   TEXENV_MODE_MODULATE_SUBTRACT_ATI,   /* r = a0 * a2 - a1 */
 +   TEXENV_MODE_ADD_PRODUCTS_NV, /* r = a0 * a1 + a2 * a3 */
 +   TEXENV_MODE_ADD_PRODUCTS_SIGNED_NV,  /* r = a0 * a1 + a2 * a3 - 0.5 */
 +};
 +
 +
 +/** Compressed TexEnv Combine source */
 +enum gl_tex_env_source
 +{
 +   TEXENV_SRC_TEXTURE0,
 +   TEXENV_SRC_TEXTURE1,
 +   TEXENV_SRC_TEXTURE2,
 +   TEXENV_SRC_TEXTURE3,
 +   TEXENV_SRC_TEXTURE4,
 +   TEXENV_SRC_TEXTURE5,
 +   TEXENV_SRC_TEXTURE6,
 +   TEXENV_SRC_TEXTURE7,
 +   TEXENV_SRC_TEXTURE,
 +   TEXENV_SRC_PREVIOUS,
 +   TEXENV_SRC_PRIMARY_COLOR,
 +   TEXENV_SRC_CONSTANT,
 +   TEXENV_SRC_ZERO,
 +   TEXENV_SRC_ONE,
 +};
 +
 +
 +/** Compressed TexEnv Combine operand */
 +enum gl_tex_env_operand
 +{
 +   TEXENV_OPR_COLOR,
 +   TEXENV_OPR_ONE_MINUS_COLOR,
 +   TEXENV_OPR_ALPHA,
 +   TEXENV_OPR_ONE_MINUS_ALPHA,
 +};
 +
 +
 +/** Compressed TexEnv Combine argument */
 +struct gl_tex_env_argument
 +{
 +#ifdef __GNUC__
 +   __extension__ uint8_t Source:4;  /**< TEXENV_SRC_x */
 +   __extension__ uint8_t Operand:2; /**< TEXENV_OPR_x */
 +#else
 +   uint8_t Source;  /**< SRC_x */
 +   uint8_t Operand; /**< OPR_x */
>
> Oops, I left the old comments here. Should be the same as above.
>
 +#endif
>>>
>>> Why is this #ifdef here?
>
> I have copied it from ff_fragment_shader.cpp.
>
>>
>> You can just use "unsigned Source:4;" There is no reason to do it any other 
>> way.
>
> There is one: using unsigned instead of uint8_t makes sizeof(struct
> gl_tex_env_argument) be 4 instead of 1. I assume that is also the
> reason it was done this way in ff_fragment_shader.cpp (though in C++
> using uint8_t for a bitfield is ok and isn't an extension, IIRC).
>
> I can try to pursue some other alternative if you don't like
> special-casing for gcc here. I can just use uint8_t and make inline
> functions/macros that pack/unpack Source and Operand from it.

OK, it can stay. I didn't know uint8_t is required to make the whole
thing have just 1 byte.

Marek
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 11/14] mesa/main: Maintain compressed TexEnv Combine state.

2017-04-07 Thread Gustaw Smolarczyk
2017-04-07 16:40 GMT+02:00 Marek Olšák :
> On Fri, Apr 7, 2017 at 4:35 PM, Marek Olšák  wrote:
>> On Thu, Mar 30, 2017 at 8:09 PM, Gustaw Smolarczyk  
>> wrote:
>>> Signed-off-by: Gustaw Smolarczyk 
>>> ---
>>>  src/mesa/main/mtypes.h   |  83 ++
>>>  src/mesa/main/texstate.c | 103 
>>> +++
>>>  2 files changed, 186 insertions(+)
>>>
>>> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
>>> index 186d79928c..369d2327f2 100644
>>> --- a/src/mesa/main/mtypes.h
>>> +++ b/src/mesa/main/mtypes.h
>>> @@ -1078,6 +1078,87 @@ struct gl_tex_env_combine_state
>>>  };
>>>
>>>
>>> +/** Compressed TexEnv effective Combine mode */
>>> +enum gl_tex_env_mode
>>> +{
>>> +   TEXENV_MODE_REPLACE, /* r = a0 */
>>> +   TEXENV_MODE_MODULATE,/* r = a0 * a1 */
>>> +   TEXENV_MODE_ADD, /* r = a0 + a1 */
>>> +   TEXENV_MODE_ADD_SIGNED,  /* r = a0 + a1 - 0.5 */
>>> +   TEXENV_MODE_INTERPOLATE, /* r = a0 * a2 + a1 * (1 - a2) */
>>> +   TEXENV_MODE_SUBTRACT,/* r = a0 - a1 */
>>> +   TEXENV_MODE_DOT3_RGB,/* r = a0 . a1 */
>>> +   TEXENV_MODE_DOT3_RGB_EXT,/* r = a0 . a1 */
>>> +   TEXENV_MODE_DOT3_RGBA,   /* r = a0 . a1 */
>>> +   TEXENV_MODE_DOT3_RGBA_EXT,   /* r = a0 . a1 */
>>> +   TEXENV_MODE_MODULATE_ADD_ATI,/* r = a0 * a2 + a1 */
>>> +   TEXENV_MODE_MODULATE_SIGNED_ADD_ATI, /* r = a0 * a2 + a1 - 0.5 */
>>> +   TEXENV_MODE_MODULATE_SUBTRACT_ATI,   /* r = a0 * a2 - a1 */
>>> +   TEXENV_MODE_ADD_PRODUCTS_NV, /* r = a0 * a1 + a2 * a3 */
>>> +   TEXENV_MODE_ADD_PRODUCTS_SIGNED_NV,  /* r = a0 * a1 + a2 * a3 - 0.5 */
>>> +};
>>> +
>>> +
>>> +/** Compressed TexEnv Combine source */
>>> +enum gl_tex_env_source
>>> +{
>>> +   TEXENV_SRC_TEXTURE0,
>>> +   TEXENV_SRC_TEXTURE1,
>>> +   TEXENV_SRC_TEXTURE2,
>>> +   TEXENV_SRC_TEXTURE3,
>>> +   TEXENV_SRC_TEXTURE4,
>>> +   TEXENV_SRC_TEXTURE5,
>>> +   TEXENV_SRC_TEXTURE6,
>>> +   TEXENV_SRC_TEXTURE7,
>>> +   TEXENV_SRC_TEXTURE,
>>> +   TEXENV_SRC_PREVIOUS,
>>> +   TEXENV_SRC_PRIMARY_COLOR,
>>> +   TEXENV_SRC_CONSTANT,
>>> +   TEXENV_SRC_ZERO,
>>> +   TEXENV_SRC_ONE,
>>> +};
>>> +
>>> +
>>> +/** Compressed TexEnv Combine operand */
>>> +enum gl_tex_env_operand
>>> +{
>>> +   TEXENV_OPR_COLOR,
>>> +   TEXENV_OPR_ONE_MINUS_COLOR,
>>> +   TEXENV_OPR_ALPHA,
>>> +   TEXENV_OPR_ONE_MINUS_ALPHA,
>>> +};
>>> +
>>> +
>>> +/** Compressed TexEnv Combine argument */
>>> +struct gl_tex_env_argument
>>> +{
>>> +#ifdef __GNUC__
>>> +   __extension__ uint8_t Source:4;  /**< TEXENV_SRC_x */
>>> +   __extension__ uint8_t Operand:2; /**< TEXENV_OPR_x */
>>> +#else
>>> +   uint8_t Source;  /**< SRC_x */
>>> +   uint8_t Operand; /**< OPR_x */

Oops, I left the old comments here. Should be the same as above.

>>> +#endif
>>
>> Why is this #ifdef here?

I have copied it from ff_fragment_shader.cpp.

>
> You can just use "unsigned Source:4;" There is no reason to do it any other 
> way.

There is one: using unsigned instead of uint8_t makes sizeof(struct
gl_tex_env_argument) be 4 instead of 1. I assume that is also the
reason it was done this way in ff_fragment_shader.cpp (though in C++
using uint8_t for a bitfield is ok and isn't an extension, IIRC).

I can try to pursue some other alternative if you don't like
special-casing for gcc here. I can just use uint8_t and make inline
functions/macros that pack/unpack Source and Operand from it.

Gustaw
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 11/14] mesa/main: Maintain compressed TexEnv Combine state.

2017-04-07 Thread Marek Olšák
On Fri, Apr 7, 2017 at 4:35 PM, Marek Olšák  wrote:
> On Thu, Mar 30, 2017 at 8:09 PM, Gustaw Smolarczyk  
> wrote:
>> Signed-off-by: Gustaw Smolarczyk 
>> ---
>>  src/mesa/main/mtypes.h   |  83 ++
>>  src/mesa/main/texstate.c | 103 
>> +++
>>  2 files changed, 186 insertions(+)
>>
>> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
>> index 186d79928c..369d2327f2 100644
>> --- a/src/mesa/main/mtypes.h
>> +++ b/src/mesa/main/mtypes.h
>> @@ -1078,6 +1078,87 @@ struct gl_tex_env_combine_state
>>  };
>>
>>
>> +/** Compressed TexEnv effective Combine mode */
>> +enum gl_tex_env_mode
>> +{
>> +   TEXENV_MODE_REPLACE, /* r = a0 */
>> +   TEXENV_MODE_MODULATE,/* r = a0 * a1 */
>> +   TEXENV_MODE_ADD, /* r = a0 + a1 */
>> +   TEXENV_MODE_ADD_SIGNED,  /* r = a0 + a1 - 0.5 */
>> +   TEXENV_MODE_INTERPOLATE, /* r = a0 * a2 + a1 * (1 - a2) */
>> +   TEXENV_MODE_SUBTRACT,/* r = a0 - a1 */
>> +   TEXENV_MODE_DOT3_RGB,/* r = a0 . a1 */
>> +   TEXENV_MODE_DOT3_RGB_EXT,/* r = a0 . a1 */
>> +   TEXENV_MODE_DOT3_RGBA,   /* r = a0 . a1 */
>> +   TEXENV_MODE_DOT3_RGBA_EXT,   /* r = a0 . a1 */
>> +   TEXENV_MODE_MODULATE_ADD_ATI,/* r = a0 * a2 + a1 */
>> +   TEXENV_MODE_MODULATE_SIGNED_ADD_ATI, /* r = a0 * a2 + a1 - 0.5 */
>> +   TEXENV_MODE_MODULATE_SUBTRACT_ATI,   /* r = a0 * a2 - a1 */
>> +   TEXENV_MODE_ADD_PRODUCTS_NV, /* r = a0 * a1 + a2 * a3 */
>> +   TEXENV_MODE_ADD_PRODUCTS_SIGNED_NV,  /* r = a0 * a1 + a2 * a3 - 0.5 */
>> +};
>> +
>> +
>> +/** Compressed TexEnv Combine source */
>> +enum gl_tex_env_source
>> +{
>> +   TEXENV_SRC_TEXTURE0,
>> +   TEXENV_SRC_TEXTURE1,
>> +   TEXENV_SRC_TEXTURE2,
>> +   TEXENV_SRC_TEXTURE3,
>> +   TEXENV_SRC_TEXTURE4,
>> +   TEXENV_SRC_TEXTURE5,
>> +   TEXENV_SRC_TEXTURE6,
>> +   TEXENV_SRC_TEXTURE7,
>> +   TEXENV_SRC_TEXTURE,
>> +   TEXENV_SRC_PREVIOUS,
>> +   TEXENV_SRC_PRIMARY_COLOR,
>> +   TEXENV_SRC_CONSTANT,
>> +   TEXENV_SRC_ZERO,
>> +   TEXENV_SRC_ONE,
>> +};
>> +
>> +
>> +/** Compressed TexEnv Combine operand */
>> +enum gl_tex_env_operand
>> +{
>> +   TEXENV_OPR_COLOR,
>> +   TEXENV_OPR_ONE_MINUS_COLOR,
>> +   TEXENV_OPR_ALPHA,
>> +   TEXENV_OPR_ONE_MINUS_ALPHA,
>> +};
>> +
>> +
>> +/** Compressed TexEnv Combine argument */
>> +struct gl_tex_env_argument
>> +{
>> +#ifdef __GNUC__
>> +   __extension__ uint8_t Source:4;  /**< TEXENV_SRC_x */
>> +   __extension__ uint8_t Operand:2; /**< TEXENV_OPR_x */
>> +#else
>> +   uint8_t Source;  /**< SRC_x */
>> +   uint8_t Operand; /**< OPR_x */
>> +#endif
>
> Why is this #ifdef here?

You can just use "unsigned Source:4;" There is no reason to do it any other way.

Marek
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 11/14] mesa/main: Maintain compressed TexEnv Combine state.

2017-04-07 Thread Marek Olšák
On Thu, Mar 30, 2017 at 8:09 PM, Gustaw Smolarczyk  wrote:
> Signed-off-by: Gustaw Smolarczyk 
> ---
>  src/mesa/main/mtypes.h   |  83 ++
>  src/mesa/main/texstate.c | 103 
> +++
>  2 files changed, 186 insertions(+)
>
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 186d79928c..369d2327f2 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -1078,6 +1078,87 @@ struct gl_tex_env_combine_state
>  };
>
>
> +/** Compressed TexEnv effective Combine mode */
> +enum gl_tex_env_mode
> +{
> +   TEXENV_MODE_REPLACE, /* r = a0 */
> +   TEXENV_MODE_MODULATE,/* r = a0 * a1 */
> +   TEXENV_MODE_ADD, /* r = a0 + a1 */
> +   TEXENV_MODE_ADD_SIGNED,  /* r = a0 + a1 - 0.5 */
> +   TEXENV_MODE_INTERPOLATE, /* r = a0 * a2 + a1 * (1 - a2) */
> +   TEXENV_MODE_SUBTRACT,/* r = a0 - a1 */
> +   TEXENV_MODE_DOT3_RGB,/* r = a0 . a1 */
> +   TEXENV_MODE_DOT3_RGB_EXT,/* r = a0 . a1 */
> +   TEXENV_MODE_DOT3_RGBA,   /* r = a0 . a1 */
> +   TEXENV_MODE_DOT3_RGBA_EXT,   /* r = a0 . a1 */
> +   TEXENV_MODE_MODULATE_ADD_ATI,/* r = a0 * a2 + a1 */
> +   TEXENV_MODE_MODULATE_SIGNED_ADD_ATI, /* r = a0 * a2 + a1 - 0.5 */
> +   TEXENV_MODE_MODULATE_SUBTRACT_ATI,   /* r = a0 * a2 - a1 */
> +   TEXENV_MODE_ADD_PRODUCTS_NV, /* r = a0 * a1 + a2 * a3 */
> +   TEXENV_MODE_ADD_PRODUCTS_SIGNED_NV,  /* r = a0 * a1 + a2 * a3 - 0.5 */
> +};
> +
> +
> +/** Compressed TexEnv Combine source */
> +enum gl_tex_env_source
> +{
> +   TEXENV_SRC_TEXTURE0,
> +   TEXENV_SRC_TEXTURE1,
> +   TEXENV_SRC_TEXTURE2,
> +   TEXENV_SRC_TEXTURE3,
> +   TEXENV_SRC_TEXTURE4,
> +   TEXENV_SRC_TEXTURE5,
> +   TEXENV_SRC_TEXTURE6,
> +   TEXENV_SRC_TEXTURE7,
> +   TEXENV_SRC_TEXTURE,
> +   TEXENV_SRC_PREVIOUS,
> +   TEXENV_SRC_PRIMARY_COLOR,
> +   TEXENV_SRC_CONSTANT,
> +   TEXENV_SRC_ZERO,
> +   TEXENV_SRC_ONE,
> +};
> +
> +
> +/** Compressed TexEnv Combine operand */
> +enum gl_tex_env_operand
> +{
> +   TEXENV_OPR_COLOR,
> +   TEXENV_OPR_ONE_MINUS_COLOR,
> +   TEXENV_OPR_ALPHA,
> +   TEXENV_OPR_ONE_MINUS_ALPHA,
> +};
> +
> +
> +/** Compressed TexEnv Combine argument */
> +struct gl_tex_env_argument
> +{
> +#ifdef __GNUC__
> +   __extension__ uint8_t Source:4;  /**< TEXENV_SRC_x */
> +   __extension__ uint8_t Operand:2; /**< TEXENV_OPR_x */
> +#else
> +   uint8_t Source;  /**< SRC_x */
> +   uint8_t Operand; /**< OPR_x */
> +#endif

Why is this #ifdef here?

Marek
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev