summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2011-03-01 05:16:34 +0100
committerMarek Olšák <[email protected]>2011-03-01 05:25:33 +0100
commitea4a19c3920a81644138ba84be904b89397dd169 (patch)
treed121cc3dec15c30f4b0ab75b08827d2cccb60777 /src
parent66d5de74c44b92e481a9f6792e10bf4e3f688dfc (diff)
r300g: fix RGTC2_SNORM
ATI engineers have probably chosen those sign bits by a dice roll.
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/r300/r300_state_derived.c3
-rw-r--r--src/gallium/drivers/r300/r300_texture.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c
index 7e06958972b..a1e116f4b61 100644
--- a/src/gallium/drivers/r300/r300_state_derived.c
+++ b/src/gallium/drivers/r300/r300_state_derived.c
@@ -650,6 +650,9 @@ static uint32_t r300_get_border_color(enum pipe_format format,
util_pack_color(border_swizzled, PIPE_FORMAT_B4G4R4A4_UNORM, &uc);
return uc.ui;
case PIPE_FORMAT_RGTC2_SNORM:
+ border_swizzled[0] = border_swizzled[2];
+ util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_SNORM, &uc);
+ return uc.ui;
case PIPE_FORMAT_RGTC2_UNORM:
util_pack_color(border_swizzled, PIPE_FORMAT_B8G8R8A8_UNORM, &uc);
return uc.ui;
diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c
index 6ed3125e49b..da06847bbe0 100644
--- a/src/gallium/drivers/r300/r300_texture.c
+++ b/src/gallium/drivers/r300/r300_texture.c
@@ -213,7 +213,7 @@ uint32_t r300_translate_texformat(enum pipe_format format,
case PIPE_FORMAT_RGTC1_UNORM:
return R500_TX_FORMAT_ATI1N | result;
case PIPE_FORMAT_RGTC2_SNORM:
- result |= sign_bit[0] | sign_bit[1];
+ result |= sign_bit[2] | sign_bit[3];
case PIPE_FORMAT_RGTC2_UNORM:
return R400_TX_FORMAT_ATI2N | result;
default: