unsigned tgsi_build_full_immediate( const struct tgsi_full_immediate *full_imm, struct tgsi_token *tokens, struct tgsi_header *header, unsigned maxsize ) { unsigned size = 0, i; struct tgsi_immediate *immediate; if( maxsize <= size ) return 0; immediate = (struct tgsi_immediate *) &tokens[size]; size++; *immediate = tgsi_build_immediate( header, full_imm->Immediate.DataType ); assert( full_imm->Immediate.NrTokens <= 4 + 1 ); for( i = 0; i < full_imm->Immediate.NrTokens - 1; i++ ) { union tgsi_immediate_data *data; if( maxsize <= size ) return 0; data = (union tgsi_immediate_data *) &tokens[size]; *data = full_imm->u[i]; immediate_grow( immediate, header ); size++; } return size; }
struct tgsi_immediate_float32 tgsi_build_immediate_float32( float value, struct tgsi_immediate *immediate, struct tgsi_header *header ) { struct tgsi_immediate_float32 immediate_float32; immediate_float32.Float = value; immediate_grow( immediate, header ); return immediate_float32; }
static union tgsi_immediate_data tgsi_build_immediate_float32( float value, struct tgsi_immediate *immediate, struct tgsi_header *header ) { union tgsi_immediate_data immediate_data; immediate_data.Float = value; immediate_grow( immediate, header ); return immediate_data; }