On 18 October 2016 at 05:23, Marek Olšák <mar...@gmail.com> wrote:
> On Mon, Oct 17, 2016 at 4:44 PM, Roland Scheidegger <srol...@vmware.com> 
> wrote:
>> Am 17.10.2016 um 15:39 schrieb Marek Olšák:
>>> From: Marek Olšák <marek.ol...@amd.com>
>>>
>>> sizeof(glsl_to_tgsi_instruction): 464 -> 416
>>> ---
>>>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 33 
>>> +++++++++++++++---------------
>>>  1 file changed, 16 insertions(+), 17 deletions(-)
>>>
>>> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp 
>>> b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>>> index 78d9409..b3654fe 100644
>>> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>>> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
>>> @@ -263,42 +263,41 @@ st_dst_reg::st_dst_reg(st_src_reg reg)
>>>     this->index2D = reg.index2D;
>>>     this->reladdr2 = reg.reladdr2;
>>>     this->has_index2 = reg.has_index2;
>>>     this->array_id = reg.array_id;
>>>  }
>>>
>>>  class glsl_to_tgsi_instruction : public exec_node {
>>>  public:
>>>     DECLARE_RALLOC_CXX_OPERATORS(glsl_to_tgsi_instruction)
>>>
>>> -   unsigned op;
>>>     st_dst_reg dst[2];
>>>     st_src_reg src[4];
>>> -   /** Pointer to the ir source this tree came from for debugging */
>>> -   ir_instruction *ir;
>>> -   GLboolean cond_update;
>>> -   bool saturate;
>>> -   bool is_64bit_expanded;
>>>     st_src_reg sampler; /**< sampler register */
>>> -   int sampler_base;
>>> -   int sampler_array_size; /**< 1-based size of sampler array, 1 if not 
>>> array */
>>> -   int tex_target; /**< One of TEXTURE_*_INDEX */
>>> -   glsl_base_type tex_type;
>>> -   GLboolean tex_shadow;
>>> -   unsigned image_format;
>>> -
>>>     st_src_reg tex_offsets[MAX_GLSL_TEXTURE_OFFSET];
>>> -   unsigned tex_offset_num_offset;
>>> -   int dead_mask; /**< Used in dead code elimination */
>>> -
>>>     st_src_reg buffer; /**< buffer register */
>>> -   unsigned buffer_access; /**< buffer access type */
>>> +
>>> +   /** Pointer to the ir source this tree came from for debugging */
>>> +   ir_instruction *ir;
>>> +
>>> +   unsigned op:8; /**< TGSI opcode */
>> Maybe should throw in some static assert somewhere that TGSI_OPCODE_LAST
>> is <= 255.
>> Given how close we're to the limit I wouldn't quite bet on it staying 8
>> bits forever (though of course it would need some changes elsewhere too).
>
> I'm adding this:
>
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index c5cd382..4ad5e2c 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -663,6 +663,9 @@ glsl_to_tgsi_visitor::emit_asm(ir_instruction *ir,
> unsigned op,
>     }
>     assert(num_reladdr == 0);
>
> +   /* inst->op has only 8 bits. */
> +   STATIC_ASSERT(TGSI_OPCODE_LAST <= 255);
> +
>     inst->op = op;
>     inst->info = tgsi_get_opcode_info(op);
>     inst->dst[0] = dst;

Just curious does it make the object size much bigger? My guess
is this would increase CPU usage in this area which may be the opposite
of what you want.

Dave.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to