r300: fallback to software rendering if we are out of free texcoords
Fixes #22741
This commit is contained in:
parent
e41707beca
commit
84c7afd9e0
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue