[Mesa-dev] sampler objects and texture rectangles

Roland Scheidegger sroland at vmware.com
Fri Aug 1 21:31:08 PDT 2014


I've discovered by accident that the mesa state tracker is trying to use
REPEAT wrap mode with texture rectangles - this happens with piglit
tex-miplevel-selection texture() 2DRectShadow -fbo -auto for instance
though I guess others as well. Needless to say the test fails in
llvmpipe because I was lazy and didn't make repeat wrap mode work with
non-normalized coords (ok it's quite possible actually the test fails
due to a completely unrelated reason but this just seems bogus).
This would happen at least with any gallium based driver, but I wonder
who's fault this really is. The problem here seems to be that while
texture objects get initialized correctly for texture rectangles to
CLAMP_TO_EDGE, sampler_objects do not (and since they aren't tied to a
target, I guess they cannot be correctly initialized).

Now after some digging, there's actually some bit in the spec about
exactly this case in the section about sampler objects: "If state is
present in a sampler object bound to a texture unit that would have
been rejected by a call to TexParameter* for the texture bound to that
unit, the behavior of the implementation is as if the texture were
incomplete. For example, if TEXTURE_WRAP_S or TEXTURE_WRAP_T is set to
REPEAT, MIRRORED_REPEAT, or MIRROR_CLAMP_TO_EDGE on the sampler object
bound to a texture unit and the texture bound to that unit is a
rectangle texture, the texture will be considered incomplete."

So my guess is this isn't actually supposed to work and the test is
bogus? It also looks like it isn't treated in mesa as incomplete.

Roland


More information about the mesa-dev mailing list