mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-17 17:10:38 +01:00
gallium: increase TGSI interpreter's number of temp registers to 64
Also, clean up the definitions of the misc/extra temp regs. A few new assertions too.
This commit is contained in:
parent
00eb309c31
commit
f042d662e2
2 changed files with 28 additions and 24 deletions
|
|
@ -262,7 +262,7 @@ tgsi_exec_machine_init(
|
|||
uint i;
|
||||
|
||||
mach->Temps = (struct tgsi_exec_vector *) tgsi_align_128bit( mach->_Temps);
|
||||
mach->Addrs = &mach->Temps[TGSI_EXEC_NUM_TEMPS];
|
||||
mach->Addrs = &mach->Temps[TGSI_EXEC_TEMP_ADDR];
|
||||
|
||||
/* Setup constants. */
|
||||
for( i = 0; i < 4; i++ ) {
|
||||
|
|
@ -941,6 +941,7 @@ fetch_src_file_channel(
|
|||
break;
|
||||
|
||||
case TGSI_FILE_TEMPORARY:
|
||||
assert(index->i[0] < TGSI_EXEC_NUM_TEMPS);
|
||||
chan->u[0] = mach->Temps[index->i[0]].xyzw[swizzle].u[0];
|
||||
chan->u[1] = mach->Temps[index->i[1]].xyzw[swizzle].u[1];
|
||||
chan->u[2] = mach->Temps[index->i[2]].xyzw[swizzle].u[2];
|
||||
|
|
@ -1127,6 +1128,7 @@ store_dest(
|
|||
break;
|
||||
|
||||
case TGSI_FILE_TEMPORARY:
|
||||
assert(reg->DstRegister.Index < TGSI_EXEC_NUM_TEMPS);
|
||||
dst = &mach->Temps[reg->DstRegister.Index].xyzw[chan_index];
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -99,53 +99,57 @@ struct tgsi_exec_labels
|
|||
unsigned count;
|
||||
};
|
||||
|
||||
|
||||
#define TGSI_EXEC_NUM_TEMPS 64
|
||||
#define TGSI_EXEC_NUM_TEMP_EXTRAS 6
|
||||
#define TGSI_EXEC_NUM_IMMEDIATES 256
|
||||
|
||||
/*
|
||||
* Locations of various utility registers (_I = Index, _C = Channel)
|
||||
*/
|
||||
#define TGSI_EXEC_TEMP_00000000_I 32
|
||||
#define TGSI_EXEC_TEMP_00000000_I (TGSI_EXEC_NUM_TEMPS + 0)
|
||||
#define TGSI_EXEC_TEMP_00000000_C 0
|
||||
|
||||
#define TGSI_EXEC_TEMP_7FFFFFFF_I 32
|
||||
#define TGSI_EXEC_TEMP_7FFFFFFF_I (TGSI_EXEC_NUM_TEMPS + 0)
|
||||
#define TGSI_EXEC_TEMP_7FFFFFFF_C 1
|
||||
|
||||
#define TGSI_EXEC_TEMP_80000000_I 32
|
||||
#define TGSI_EXEC_TEMP_80000000_I (TGSI_EXEC_NUM_TEMPS + 0)
|
||||
#define TGSI_EXEC_TEMP_80000000_C 2
|
||||
|
||||
#define TGSI_EXEC_TEMP_FFFFFFFF_I 32
|
||||
#define TGSI_EXEC_TEMP_FFFFFFFF_I (TGSI_EXEC_NUM_TEMPS + 0)
|
||||
#define TGSI_EXEC_TEMP_FFFFFFFF_C 3
|
||||
|
||||
#define TGSI_EXEC_TEMP_ONE_I 33
|
||||
#define TGSI_EXEC_TEMP_ONE_I (TGSI_EXEC_NUM_TEMPS + 1)
|
||||
#define TGSI_EXEC_TEMP_ONE_C 0
|
||||
|
||||
#define TGSI_EXEC_TEMP_TWO_I 33
|
||||
#define TGSI_EXEC_TEMP_TWO_I (TGSI_EXEC_NUM_TEMPS + 1)
|
||||
#define TGSI_EXEC_TEMP_TWO_C 1
|
||||
|
||||
#define TGSI_EXEC_TEMP_128_I 33
|
||||
#define TGSI_EXEC_TEMP_128_I (TGSI_EXEC_NUM_TEMPS + 1)
|
||||
#define TGSI_EXEC_TEMP_128_C 2
|
||||
|
||||
#define TGSI_EXEC_TEMP_MINUS_128_I 33
|
||||
#define TGSI_EXEC_TEMP_MINUS_128_I (TGSI_EXEC_NUM_TEMPS + 1)
|
||||
#define TGSI_EXEC_TEMP_MINUS_128_C 3
|
||||
|
||||
#define TGSI_EXEC_TEMP_KILMASK_I 34
|
||||
#define TGSI_EXEC_TEMP_KILMASK_I (TGSI_EXEC_NUM_TEMPS + 2)
|
||||
#define TGSI_EXEC_TEMP_KILMASK_C 0
|
||||
|
||||
#define TGSI_EXEC_TEMP_OUTPUT_I 34
|
||||
#define TGSI_EXEC_TEMP_OUTPUT_I (TGSI_EXEC_NUM_TEMPS + 2)
|
||||
#define TGSI_EXEC_TEMP_OUTPUT_C 1
|
||||
|
||||
#define TGSI_EXEC_TEMP_PRIMITIVE_I 34
|
||||
#define TGSI_EXEC_TEMP_PRIMITIVE_I (TGSI_EXEC_NUM_TEMPS + 2)
|
||||
#define TGSI_EXEC_TEMP_PRIMITIVE_C 2
|
||||
|
||||
#define TGSI_EXEC_TEMP_THREE_I 34
|
||||
#define TGSI_EXEC_TEMP_THREE_I (TGSI_EXEC_NUM_TEMPS + 2)
|
||||
#define TGSI_EXEC_TEMP_THREE_C 3
|
||||
|
||||
#define TGSI_EXEC_TEMP_HALF_I 35
|
||||
#define TGSI_EXEC_TEMP_HALF_I (TGSI_EXEC_NUM_TEMPS + 3)
|
||||
#define TGSI_EXEC_TEMP_HALF_C 0
|
||||
|
||||
#define TGSI_EXEC_TEMP_R0 36
|
||||
#define TGSI_EXEC_TEMP_R0 (TGSI_EXEC_NUM_TEMPS + 4)
|
||||
|
||||
#define TGSI_EXEC_TEMP_ADDR (TGSI_EXEC_NUM_TEMPS + 5)
|
||||
|
||||
#define TGSI_EXEC_NUM_TEMPS (32 + 5)
|
||||
#define TGSI_EXEC_NUM_ADDRS 1
|
||||
#define TGSI_EXEC_NUM_IMMEDIATES 256
|
||||
|
||||
#define TGSI_EXEC_MAX_COND_NESTING 20
|
||||
#define TGSI_EXEC_MAX_LOOP_NESTING 20
|
||||
|
|
@ -156,13 +160,11 @@ struct tgsi_exec_labels
|
|||
*/
|
||||
struct tgsi_exec_machine
|
||||
{
|
||||
/*
|
||||
* 32 program temporaries
|
||||
* 4 internal temporaries
|
||||
* 1 address
|
||||
* 1 temporary of padding to align to 16 bytes
|
||||
/* Total = program temporaries + internal temporaries
|
||||
* + 1 padding to align to 16 bytes
|
||||
*/
|
||||
struct tgsi_exec_vector _Temps[TGSI_EXEC_NUM_TEMPS + TGSI_EXEC_NUM_ADDRS + 1];
|
||||
struct tgsi_exec_vector _Temps[TGSI_EXEC_NUM_TEMPS +
|
||||
TGSI_EXEC_NUM_TEMP_EXTRAS + 1];
|
||||
|
||||
/*
|
||||
* This will point to _Temps after aligning to 16B boundary.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue