Browse Source

r300/compiler: Use zero as the register index for unused sources

This fixes an invalid "Too many hardware temporaries used" error in the
case where a source reads from a temporary register with an index greater
than max_temp_regs and then the source is marked as unused before the
register allocation pass.

NOTE: This is a candidate for the 7.9 branch.
tags/android-x86-2.2
Tom Stellard 15 years ago
parent
commit
d668659003

+ 3
- 0
src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c View File

@@ -76,6 +76,9 @@ static void use_temporary(struct r300_fragment_program_code *code, unsigned int

static unsigned int use_source(struct r300_fragment_program_code* code, struct rc_pair_instruction_source src)
{
if (!src.Used)
return 0;

if (src.File == RC_FILE_CONSTANT) {
return src.Index | (1 << 5);
} else if (src.File == RC_FILE_TEMPORARY) {

+ 3
- 0
src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c View File

@@ -200,6 +200,9 @@ static void use_temporary(struct r500_fragment_program_code* code, unsigned int

static unsigned int use_source(struct r500_fragment_program_code* code, struct rc_pair_instruction_source src)
{
if (!src.Used)
return 0;

if (src.File == RC_FILE_CONSTANT) {
return src.Index | 0x100;
} else if (src.File == RC_FILE_TEMPORARY) {

Loading…
Cancel
Save