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; }
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 ); for( i = 0; i < full_imm->Immediate.NrTokens - 1; i++ ) { struct tgsi_immediate_float32 *if32; if( maxsize <= size ) return 0; if32 = (struct tgsi_immediate_float32 *) &tokens[size]; size++; *if32 = tgsi_build_immediate_float32( full_imm->u.ImmediateFloat32[i].Float, immediate, header ); } return size; }