summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_format_aos.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c
index f8e1a963bb4..781ceb8b03d 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c
@@ -770,19 +770,25 @@ lp_build_fetch_rgba_aos(struct gallivm_state *gallivm,
format_desc->format == PIPE_FORMAT_LATC1_SNORM ||
format_desc->format == PIPE_FORMAT_LATC2_SNORM);
- tmp = lp_build_fetch_rgtc_rgba_aos(gallivm,
- format_desc,
- num_pixels,
- base_ptr,
- offset,
- i, j,
- cache);
-
- lp_build_conv(gallivm,
- tmp_type, type,
- &tmp, 1, &tmp, 1);
-
- return tmp;
+ if (!tmp_type.sign) {
+ /*
+ * FIXME: this is buggy for snorm formats, likely the lerp is
+ * busted.
+ */
+ tmp = lp_build_fetch_rgtc_rgba_aos(gallivm,
+ format_desc,
+ num_pixels,
+ base_ptr,
+ offset,
+ i, j,
+ cache);
+
+ lp_build_conv(gallivm,
+ tmp_type, type,
+ &tmp, 1, &tmp, 1);
+
+ return tmp;
+ }
}
/*