summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Scheidegger <sroland@vmware.com>2015-11-04 14:21:43 +0100
committerRoland Scheidegger <sroland@vmware.com>2015-11-04 14:21:43 +0100
commitc19443bc8b68ef4697ead1998286e42bd4d8a572 (patch)
tree4b908887bb244739537f399ae9f7a87a3c6652fd
parentd56a1478a8006af48aa65ab62e676e5f974f1ec3 (diff)
gallivm: fix sampling for s3tc srgb formats when using texture cache
This actually stored the values as 8bit linear values in the cache, then did another srgb->linear conversion... We don't want to do the former (decoding 8bit srgb values to 8bit linear completely defeats the purpose of srgb in the first place), so just decode to 8bit srgb. Fixes piglit.spec.ext_texture_srgb.texwrap formats-s3tc tests.
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_format_soa.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_format_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_format_soa.c
index 42aef8376f..8bae94af3d 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_format_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_format_soa.c
@@ -492,9 +492,11 @@ lp_build_fetch_rgba_soa(struct gallivm_state *gallivm,
(type.length == 1 || (type.length % 4 == 0)) &&
cache) {
const struct util_format_description *format_decompressed;
+ const struct util_format_description *flinear_desc;
LLVMValueRef packed;
+ flinear_desc = util_format_description(util_format_linear(format_desc->format));
packed = lp_build_fetch_cached_texels(gallivm,
- format_desc,
+ flinear_desc,
type.length,
base_ptr,
offset,