i965: texture fixes: bordered textures, fallback rendering
authorRobert Ellison <papillo@vmware.com>
Fri, 27 Feb 2009 07:21:07 +0000 (00:21 -0700)
committerRobert Ellison <papillo@vmware.com>
Fri, 27 Feb 2009 17:11:37 +0000 (10:11 -0700)
commit17c7852bf93c4d4edf0c2cf0bdc553d399e2f51a
treea0f785f93d14db417db45937753f25b5a2b9e97a
parent026465b9b1aebab98b6d519b75fe96d0ca9f4f51
i965: texture fixes: bordered textures, fallback rendering

i965 doesn't natively support GL_CLAMP; it treats it like
GL_CLAMP_TO_EDGE, which fails conformance tests.

This fix adds a clause to the check_fallbacks() test to check
whether GL_CLAMP is in use on any enabled 2D texture.  If so,
and if strict conformance is required (via INTEL_STRICT_CONFORMANCE),
a software fallback is mandated.

In addition, validate textures *before* checking for fallbacks,
rather than after; otherwise, the texture state is never validated
and can't be trusted.  (In particular, if texturing is enabled and
the sampler would access any level beyond level 0 of a texture, the
sampler will segfault, because texture validation sets the firstLevel
and lastLevel fields of a texture object so that the valid levels
will be mapped and accessed correctly.  If texture validation doesn't
occur, only level 0 is accessed correctly, and that only because
firstLevel and lastLevel happen to be set to 0.)
src/mesa/drivers/dri/i965/brw_draw.c