As far as we know, the hardware prefers outputs packed tightly together
with no holes caused by outputs that are not even read by the fragment
program. Therefore, we slightly rewrite vertex programs in this case.
It would be interesting to test this interaction between vertex programs
and fragment programs further, because some of that rewrite may be
unnecessary. However, play it safe for now and don't change the current
behaviour.
static GLboolean valid_dst(struct r300_vertex_program *vp, struct prog_dst_register *dst)
{
- if(dst->File == PROGRAM_OUTPUT && vp->outputs[dst->Index] == -1){
- WARN_ONCE("Output %d not used by fragment program\n", dst->Index);
+ if(dst->File == PROGRAM_OUTPUT && vp->outputs[dst->Index] == -1) {
return GL_FALSE;
- }else if(dst->File == PROGRAM_ADDRESS) {
+ } else if(dst->File == PROGRAM_ADDRESS) {
assert(dst->Index == 0);
}