[Mesa-dev] [PATCH 05/14] glsl_to_tgsi: reduce the size of glsl_to_tgsi_instruction using bitfields
Roland Scheidegger
sroland at vmware.com
Mon Oct 17 14:44:50 UTC 2016
Am 17.10.2016 um 15:39 schrieb Marek Olšák:
> From: Marek Olšák <marek.olsak at 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).
Roland
> + unsigned saturate:1;
> + unsigned is_64bit_expanded:1;
> + unsigned sampler_base:5;
> + unsigned sampler_array_size:6; /**< 1-based size of sampler array, 1 if not array */
> + unsigned tex_target:4; /**< One of TEXTURE_*_INDEX */
> + glsl_base_type tex_type:4;
> + unsigned tex_shadow:1;
> + unsigned image_format:9;
> + unsigned tex_offset_num_offset:3;
> + unsigned dead_mask:4; /**< Used in dead code elimination */
> + unsigned buffer_access:3; /**< buffer access type */
>
> class function_entry *function; /* Set on TGSI_OPCODE_CAL or TGSI_OPCODE_BGNSUB */
> const struct tgsi_opcode_info *info;
> };
>
> class variable_storage : public exec_node {
> public:
> variable_storage(ir_variable *var, gl_register_file file, int index,
> unsigned array_id = 0)
> : file(file), index(index), component(0), var(var), array_id(array_id)
>
More information about the mesa-dev
mailing list