mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-29 01:30:08 +01:00
Fix up handling of immediate values for TGSI shaders.
Still disabled pending LLVM updates.
This commit is contained in:
parent
19710c95da
commit
bafbfb4dce
3 changed files with 9 additions and 21 deletions
|
|
@ -780,11 +780,7 @@ dump_immediate_short(
|
|||
ENM( imm->Immediate.DataType, TGSI_IMMS_SHORT );
|
||||
|
||||
TXT( " { " );
|
||||
#if 0
|
||||
for( i = 0; i < imm->Immediate.Size - 1; i++ ) {
|
||||
#else
|
||||
for( i = 0; i < imm->Immediate.Size; i++ ) {
|
||||
#endif
|
||||
switch( imm->Immediate.DataType ) {
|
||||
case TGSI_IMM_FLOAT32:
|
||||
FLT( imm->u.ImmediateFloat32[i].Float );
|
||||
|
|
|
|||
|
|
@ -170,24 +170,16 @@ tgsi_exec_prepare( struct tgsi_exec_machine *mach )
|
|||
break;
|
||||
|
||||
case TGSI_TOKEN_TYPE_IMMEDIATE:
|
||||
#if 0
|
||||
assert( (parse.FullToken.FullImmediate.Immediate.Size - 1) % 4 == 0 );
|
||||
assert( mach->ImmLimit + (parse.FullToken.FullImmediate.Immediate.Size - 1) / 4 <= 256 );
|
||||
{
|
||||
uint size = parse.FullToken.FullImmediate.Immediate.Size - 1;
|
||||
assert( size % 4 == 0 );
|
||||
assert( mach->ImmLimit + size / 4 <= 256 );
|
||||
|
||||
for( i = 0; i < parse.FullToken.FullImmediate.Immediate.Size - 1; i++ ) {
|
||||
mach->Imms[mach->ImmLimit + i / 4][i % 4] = parse.FullToken.FullImmediate.u.ImmediateFloat32[i].Float;
|
||||
for( i = 0; i < size; i++ ) {
|
||||
mach->Imms[mach->ImmLimit + i / 4][i % 4] = parse.FullToken.FullImmediate.u.ImmediateFloat32[i].Float;
|
||||
}
|
||||
mach->ImmLimit += size / 4;
|
||||
}
|
||||
mach->ImmLimit += (parse.FullToken.FullImmediate.Immediate.Size - 1) / 4;
|
||||
#else
|
||||
/* Add this immediate value (vector of 1,2,3,4 floats) to immediates array */
|
||||
assert( parse.FullToken.FullImmediate.Immediate.Size <= 4 );
|
||||
assert( mach->ImmLimit < TGSI_EXEC_NUM_IMMEDIATES );
|
||||
|
||||
for( i = 0; i < parse.FullToken.FullImmediate.Immediate.Size; i++ ) {
|
||||
mach->Imms[mach->ImmLimit][i] = parse.FullToken.FullImmediate.u.ImmediateFloat32[i].Float;
|
||||
}
|
||||
mach->ImmLimit++;
|
||||
#endif
|
||||
break;
|
||||
|
||||
case TGSI_TOKEN_TYPE_INSTRUCTION:
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ make_immediate(const float *value, uint size)
|
|||
{
|
||||
struct tgsi_full_immediate imm;
|
||||
imm.Immediate.Type = TGSI_TOKEN_TYPE_IMMEDIATE;
|
||||
imm.Immediate.Size = size;
|
||||
imm.Immediate.Size = 1 + size; /* one for the token itself */
|
||||
imm.Immediate.DataType = TGSI_IMM_FLOAT32;
|
||||
imm.u.ImmediateFloat32 = (struct tgsi_immediate_float32 *) value;
|
||||
return imm;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue