summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/softpipe
diff options
context:
space:
mode:
authorDave Airlie <[email protected]>2019-03-21 15:22:02 +1000
committerDave Airlie <[email protected]>2019-03-22 09:30:35 +1000
commit9dd92d08a5522e4385f00a0ed37a12a64255d4fb (patch)
tree4cb06a61e4df72652d5f828baf1c7248fd9f4401 /src/gallium/drivers/softpipe
parentaae5ba72aba79d855d8ab9ca399bad331e217353 (diff)
softpipe: fix integer texture swizzling for 1 vs 1.0f
The swizzling was putting float one in not integer 1. This fixes a lot of arb_texture_view-rendering-formats cases. Reviewed-by: Brian Paul <[email protected]>
Diffstat (limited to 'src/gallium/drivers/softpipe')
-rw-r--r--src/gallium/drivers/softpipe/sp_tex_sample.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/gallium/drivers/softpipe/sp_tex_sample.c b/src/gallium/drivers/softpipe/sp_tex_sample.c
index 92c78da86f3..26d38296073 100644
--- a/src/gallium/drivers/softpipe/sp_tex_sample.c
+++ b/src/gallium/drivers/softpipe/sp_tex_sample.c
@@ -2754,6 +2754,7 @@ do_swizzling(const struct pipe_sampler_view *sview,
const unsigned swizzle_g = sview->swizzle_g;
const unsigned swizzle_b = sview->swizzle_b;
const unsigned swizzle_a = sview->swizzle_a;
+ float oneval = util_format_is_pure_integer(sview->format) ? uif(1) : 1.0f;
switch (swizzle_r) {
case PIPE_SWIZZLE_0:
@@ -2762,7 +2763,7 @@ do_swizzling(const struct pipe_sampler_view *sview,
break;
case PIPE_SWIZZLE_1:
for (j = 0; j < 4; j++)
- out[0][j] = 1.0f;
+ out[0][j] = oneval;
break;
default:
assert(swizzle_r < 4);
@@ -2777,7 +2778,7 @@ do_swizzling(const struct pipe_sampler_view *sview,
break;
case PIPE_SWIZZLE_1:
for (j = 0; j < 4; j++)
- out[1][j] = 1.0f;
+ out[1][j] = oneval;
break;
default:
assert(swizzle_g < 4);
@@ -2792,7 +2793,7 @@ do_swizzling(const struct pipe_sampler_view *sview,
break;
case PIPE_SWIZZLE_1:
for (j = 0; j < 4; j++)
- out[2][j] = 1.0f;
+ out[2][j] = oneval;
break;
default:
assert(swizzle_b < 4);
@@ -2807,7 +2808,7 @@ do_swizzling(const struct pipe_sampler_view *sview,
break;
case PIPE_SWIZZLE_1:
for (j = 0; j < 4; j++)
- out[3][j] = 1.0f;
+ out[3][j] = oneval;
break;
default:
assert(swizzle_a < 4);