Mesa (10.4): r300g: Fix the ATI1N swizzle (RGTC1 and LATC1)
Emil Velikov
evelikov at kemper.freedesktop.org
Thu Mar 12 13:11:38 UTC 2015
Module: Mesa
Branch: 10.4
Commit: 80ef80d087bf48418a08cb7435ff10af2f49c4a9
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=80ef80d087bf48418a08cb7435ff10af2f49c4a9
Author: Stefan Dösinger <stefandoesinger at gmx.at>
Date: Mon Mar 9 16:15:13 2015 +0100
r300g: Fix the ATI1N swizzle (RGTC1 and LATC1)
This fixes the GL_COMPRESSED_RED_RGTC1 part of piglit's rgtc-teximage-01
test as well as the precision part of Wine's 3dc format test (fd.o bug
89156).
The Z component seems to contain a lower precision version of the
result, probably a temporary value from the decompression computation.
The Y and W component contain different data that depends on the input
values as well, but I could not make sense of them (Not that I tried
very hard).
GL_COMPRESSED_SIGNED_RED_RGTC1 still seems to have precision problems in
piglit, and both formats are affected by a compiler bug if they're
sampled by the shader with a swizzle other than .xyzw. Wine uses .xxxx,
which returns random garbage.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89156
Signed-off-by: Marek Olšák <marek.olsak at amd.com>
Cc: 10.5 10.4 <mesa-stable at lists.freedesktop.org>
(cherry picked from commit f710b99071fe4e3c2ee88cdcb6bb5c10298e014e)
---
src/gallium/drivers/r300/r300_texture.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c
index ffe8c00..340b8fc 100644
--- a/src/gallium/drivers/r300/r300_texture.c
+++ b/src/gallium/drivers/r300/r300_texture.c
@@ -176,7 +176,9 @@ uint32_t r300_translate_texformat(enum pipe_format format,
format != PIPE_FORMAT_RGTC2_UNORM &&
format != PIPE_FORMAT_RGTC2_SNORM &&
format != PIPE_FORMAT_LATC2_UNORM &&
- format != PIPE_FORMAT_LATC2_SNORM) {
+ format != PIPE_FORMAT_LATC2_SNORM &&
+ format != PIPE_FORMAT_RGTC1_UNORM &&
+ format != PIPE_FORMAT_LATC1_UNORM) {
result |= r300_get_swizzle_combined(desc->swizzle, swizzle_view,
TRUE);
} else {
More information about the mesa-commit
mailing list