From: Michel Dänzer <michel.daen...@amd.com>

18 more little piglits.

Signed-off-by: Michel Dänzer <michel.daen...@amd.com>
---
 src/gallium/drivers/radeonsi/si_state.c |   27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index a58a347..82af9b5 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -2090,16 +2090,25 @@ static struct pipe_sampler_view 
*si_create_sampler_view(struct pipe_context *ctx
        first_non_void = util_format_get_first_non_void_channel(pipe_format);
        if (first_non_void < 0) {
                num_format = V_008F14_IMG_NUM_FORMAT_FLOAT;
-       } else switch (desc->channel[first_non_void].type) {
-       case UTIL_FORMAT_TYPE_FLOAT:
-               num_format = V_008F14_IMG_NUM_FORMAT_FLOAT;
-               break;
-       case UTIL_FORMAT_TYPE_SIGNED:
-               num_format = V_008F14_IMG_NUM_FORMAT_SNORM;
-               break;
-       case UTIL_FORMAT_TYPE_UNSIGNED:
-       default:
+       } else if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) {
+               num_format = V_008F14_IMG_NUM_FORMAT_SRGB;
+       } else {
                num_format = V_008F14_IMG_NUM_FORMAT_UNORM;
+
+               switch (desc->channel[first_non_void].type) {
+               case UTIL_FORMAT_TYPE_FLOAT:
+                       num_format = V_008F14_IMG_NUM_FORMAT_FLOAT;
+                       break;
+               case UTIL_FORMAT_TYPE_SIGNED:
+                       if (desc->channel[first_non_void].normalized)
+                               num_format = V_008F14_IMG_NUM_FORMAT_SNORM;
+                       else if (desc->channel[first_non_void].pure_integer)
+                               num_format = V_008F14_IMG_NUM_FORMAT_SINT;
+                       break;
+               case UTIL_FORMAT_TYPE_UNSIGNED:
+                       if (desc->channel[first_non_void].pure_integer)
+                               num_format = V_008F14_IMG_NUM_FORMAT_UINT;
+               }
        }
 
        format = si_translate_texformat(ctx->screen, pipe_format, desc, 
first_non_void);
-- 
1.7.10.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to