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).
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) > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev