Module: Mesa
Branch: 17.2
Commit: 8b706102ebe89984e0d2dce100fb681855c8e056
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8b706102ebe89984e0d2dce100fb681855c8e056

Author: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
Date:   Sun Aug  6 01:47:09 2017 +0200

radv: Don't use SRGB format for image stores during resolve.

These seem to store very bogus results. Luckily there is some code
that converts srgb->linear already, so just making the descriptor
format UNORM should work.

Fixes: 588185eb6b7 "radv/meta: add srgb conversion to end of resolve shader."
Reviewed-by: Dave Airlie <airl...@redhat.com>
(cherry picked from commit 8286c3a49f03dc219e57d4a9ec27a4d840c5f603)

---

 src/amd/vulkan/radv_meta_resolve_cs.c |  2 +-
 src/amd/vulkan/vk_format.h            | 23 +++++++++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/src/amd/vulkan/radv_meta_resolve_cs.c 
b/src/amd/vulkan/radv_meta_resolve_cs.c
index 1eef22ad77..832ae7b8c9 100644
--- a/src/amd/vulkan/radv_meta_resolve_cs.c
+++ b/src/amd/vulkan/radv_meta_resolve_cs.c
@@ -402,7 +402,7 @@ void radv_meta_resolve_compute_image(struct radv_cmd_buffer 
*cmd_buffer,
                                                     .sType = 
VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
                                                             .image = 
radv_image_to_handle(dest_image),
                                                             .viewType = 
radv_meta_get_view_type(dest_image),
-                                                            .format = 
dest_image->vk_format,
+                                                            .format = 
vk_to_non_srgb_format(dest_image->vk_format),
                                                             .subresourceRange 
= {
                                                             .aspectMask = 
VK_IMAGE_ASPECT_COLOR_BIT,
                                                             .baseMipLevel = 
region->dstSubresource.mipLevel,
diff --git a/src/amd/vulkan/vk_format.h b/src/amd/vulkan/vk_format.h
index c2c7ca4ce2..43265ed3d9 100644
--- a/src/amd/vulkan/vk_format.h
+++ b/src/amd/vulkan/vk_format.h
@@ -465,4 +465,27 @@ vk_format_get_component_bits(VkFormat format,
        }
 }
 
+static inline VkFormat
+vk_to_non_srgb_format(VkFormat format)
+{
+       switch(format) {
+       case VK_FORMAT_R8_SRGB :
+               return VK_FORMAT_R8_UNORM;
+       case VK_FORMAT_R8G8_SRGB:
+               return VK_FORMAT_R8G8_UNORM;
+       case VK_FORMAT_R8G8B8_SRGB:
+               return VK_FORMAT_R8G8B8_UNORM;
+       case VK_FORMAT_B8G8R8_SRGB:
+               return VK_FORMAT_B8G8R8_UNORM;
+       case VK_FORMAT_R8G8B8A8_SRGB :
+               return VK_FORMAT_R8G8B8A8_UNORM;
+       case VK_FORMAT_B8G8R8A8_SRGB:
+               return VK_FORMAT_B8G8R8A8_UNORM;
+       case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
+               return VK_FORMAT_A8B8G8R8_UNORM_PACK32;
+       default:
+               return format;
+       }
+}
+
 #endif /* VK_FORMAT_H */

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to