diff options
author | Dave Airlie <[email protected]> | 2019-03-21 15:22:02 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2019-03-22 09:30:35 +1000 |
commit | 9dd92d08a5522e4385f00a0ed37a12a64255d4fb (patch) | |
tree | 4cb06a61e4df72652d5f828baf1c7248fd9f4401 /src | |
parent | aae5ba72aba79d855d8ab9ca399bad331e217353 (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')
-rw-r--r-- | src/gallium/drivers/softpipe/sp_tex_sample.c | 9 |
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); |