From 55fde14a80141ad41b8d19f5a23f322c84a64ee6 Mon Sep 17 00:00:00 2001
From: Niklas Haas <git@haasn.xyz>
Date: Wed, 27 May 2020 21:19:55 +0200
Subject: [PATCH] vulkan: only accept 10-bit for non-linear colorspaces

The code as written allows 10-bit+linear, which is a bad combination. So
explicitly ban it.
---
 src/vulkan/swapchain.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/vulkan/swapchain.c b/src/vulkan/swapchain.c
index e44f3a32c..431a8cf50 100644
--- a/src/vulkan/swapchain.c
+++ b/src/vulkan/swapchain.c
@@ -206,9 +206,14 @@ static bool pick_surf_format(const struct pl_gpu *gpu, const struct vk_ctx *vk,
                 break; // accept
             continue;
 
-        // Accept 10/16 bit formats universally
+        // Only accept 10 bit formats for non-linear curves
         case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
         case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
+            if (space->transfer != PL_COLOR_TRC_LINEAR)
+                break; // accept
+            continue;
+
+        // Accept 16-bit formats for everything
         case VK_FORMAT_R16G16B16_UNORM:
         case VK_FORMAT_R16G16B16A16_UNORM:
              break; // accept
-- 
GitLab