From 729abfd0f53c27ba58da95882bef985945933c65 Mon Sep 17 00:00:00 2001 From: Christoph Bumiller Date: Fri, 12 Apr 2013 13:42:01 +0200 Subject: st/mesa: optionally apply texture swizzle to border color v2 This is the only sane solution for nv50 and nvc0 (really, trust me), but since on other hardware the border colour is tightly coupled with texture state they'd have to undo the swizzle, so I've added a cap. The dependency of update_sampler on the texture updates was introduced to avoid doing the apply_depthmode to the swizzle twice. v2: Moved swizzling helper to u_format.c, extended the CAP to provide more accurate information. --- src/gallium/docs/source/cso/sampler.rst | 6 ++++-- src/gallium/docs/source/screen.rst | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) (limited to 'src/gallium/docs/source') diff --git a/src/gallium/docs/source/cso/sampler.rst b/src/gallium/docs/source/cso/sampler.rst index 26ffc181031..9959793a332 100644 --- a/src/gallium/docs/source/cso/sampler.rst +++ b/src/gallium/docs/source/cso/sampler.rst @@ -101,7 +101,9 @@ max_lod border_color Color union used for texel coordinates that are outside the [0,width-1], [0, height-1] or [0, depth-1] ranges. Interpreted according to sampler - view format. + view format, unless the driver reports + PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK, in which case special care has to be + taken (see description of the cap). max_anisotropy Maximum anistropy ratio to use when sampling from textures. For example, if max_anistropy=4, a region of up to 1 by 4 texels will be sampled. @@ -111,4 +113,4 @@ max_anisotropy seamless_cube_map If set, the bilinear filter of a cube map may take samples from adjacent cube map faces when sampled near a texture border to produce a seamless - look. \ No newline at end of file + look. diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst index 4b01d77322e..3ab7e9e6906 100644 --- a/src/gallium/docs/source/screen.rst +++ b/src/gallium/docs/source/screen.rst @@ -151,6 +151,17 @@ The integer capabilities: dedicated memory should return 1 and all software rasterizers should return 0. * ``PIPE_CAP_QUERY_PIPELINE_STATISTICS``: Whether PIPE_QUERY_PIPELINE_STATISTICS is supported. +* ``PIPE_CAP_TEXTURE_BORDER_COLOR_QUIRK``: Bitmask indicating whether special + considerations have to be given to the interaction between the border color + in the sampler object and the sampler view used with it. + If PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_R600 is set, the border color + may be affected in undefined ways for any kind of permutational swizzle + (any swizzle XYZW where X/Y/Z/W are not ZERO, ONE, or R/G/B/A respectively) + in the sampler view. + If PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_NV50 is set, the border color + state should be swizzled manually according to the swizzle in the sampler + view it is intended to be used with, or herein undefined results may occur + for permutational swizzles. .. _pipe_capf: -- cgit v1.2.3