r300: fallback to software rendering if we are out of free texcoords

Fixes #22741
This commit is contained in:
Maciej Cencora 2009-09-19 18:45:59 +02:00
parent e41707beca
commit 84c7afd9e0
1 changed files with 16 additions and 2 deletions

View File

@ -99,8 +99,8 @@ static void insert_WPOS_trailer(struct r300_fragment_program_compiler *compiler,
{
int i;
fp->wpos_attr = FRAG_ATTRIB_MAX;
if (!(compiler->Base.Program.InputsRead & FRAG_BIT_WPOS)) {
fp->wpos_attr = FRAG_ATTRIB_MAX;
return;
}
@ -112,6 +112,13 @@ static void insert_WPOS_trailer(struct r300_fragment_program_compiler *compiler,
}
}
/* No free texcoord found, fall-back to software rendering */
if (fp->wpos_attr == FRAG_ATTRIB_MAX)
{
compiler->Base.Error = 1;
return;
}
rc_transform_fragment_wpos(&compiler->Base, FRAG_ATTRIB_WPOS, fp->wpos_attr);
}
@ -127,8 +134,8 @@ static void rewriteFog(struct r300_fragment_program_compiler *compiler, struct r
struct prog_src_register src;
int i;
fp->fog_attr = FRAG_ATTRIB_MAX;
if (!(compiler->Base.Program.InputsRead & FRAG_BIT_FOGC)) {
fp->fog_attr = FRAG_ATTRIB_MAX;
return;
}
@ -140,6 +147,13 @@ static void rewriteFog(struct r300_fragment_program_compiler *compiler, struct r
}
}
/* No free texcoord found, fall-back to software rendering */
if (fp->fog_attr == FRAG_ATTRIB_MAX)
{
compiler->Base.Error = 1;
return;
}
memset(&src, 0, sizeof(src));
src.File = PROGRAM_INPUT;
src.Index = fp->fog_attr;