diff options
author | 2023-07-17 12:52:05 +0800 | |
---|---|---|
committer | 2023-07-19 21:58:05 +0800 | |
commit | aa238976f9378543e8512e0e6e87e38e65c2103c (patch) | |
tree | 14cbe7786a92fed28a6ac8f20f20a4a3adb61798 /vulkan/libvulkan/swapchain.cpp | |
parent | 25537f8503565a35062ffe01a83914abb96a2db2 (diff) |
Fix bt2020 linear ext mapping issue in EGL and Vulkan.
- EGL_EXT_BT2020_LINEAR should be mapped to extend bt2020 linear if
output format is FP16.
Bug: 261485283
Test: builds
Change-Id: Ifd68cc10afc0b5b38b15af2a938d02bb3bcd3764
Diffstat (limited to 'vulkan/libvulkan/swapchain.cpp')
-rw-r--r-- | vulkan/libvulkan/swapchain.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp index 114f863fa8..07b95694d5 100644 --- a/vulkan/libvulkan/swapchain.cpp +++ b/vulkan/libvulkan/swapchain.cpp @@ -532,7 +532,8 @@ PixelFormat GetNativePixelFormat(VkFormat format) { return native_format; } -android_dataspace GetNativeDataspace(VkColorSpaceKHR colorspace) { +android_dataspace GetNativeDataspace(VkColorSpaceKHR colorspace, + PixelFormat pixelFormat) { switch (colorspace) { case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR: return HAL_DATASPACE_V0_SRGB; @@ -551,7 +552,14 @@ android_dataspace GetNativeDataspace(VkColorSpaceKHR colorspace) { case VK_COLOR_SPACE_BT709_NONLINEAR_EXT: return HAL_DATASPACE_V0_SRGB; case VK_COLOR_SPACE_BT2020_LINEAR_EXT: - return HAL_DATASPACE_BT2020_LINEAR; + if (pixelFormat == PixelFormat::RGBA_FP16) { + return static_cast<android_dataspace>( + HAL_DATASPACE_STANDARD_BT2020 | + HAL_DATASPACE_TRANSFER_LINEAR | + HAL_DATASPACE_RANGE_EXTENDED); + } else { + return HAL_DATASPACE_BT2020_LINEAR; + } case VK_COLOR_SPACE_HDR10_ST2084_EXT: return static_cast<android_dataspace>( HAL_DATASPACE_STANDARD_BT2020 | HAL_DATASPACE_TRANSFER_ST2084 | @@ -561,9 +569,7 @@ android_dataspace GetNativeDataspace(VkColorSpaceKHR colorspace) { HAL_DATASPACE_STANDARD_BT2020 | HAL_DATASPACE_TRANSFER_ST2084 | HAL_DATASPACE_RANGE_FULL); case VK_COLOR_SPACE_HDR10_HLG_EXT: - return static_cast<android_dataspace>( - HAL_DATASPACE_STANDARD_BT2020 | HAL_DATASPACE_TRANSFER_HLG | - HAL_DATASPACE_RANGE_FULL); + return static_cast<android_dataspace>(HAL_DATASPACE_BT2020_HLG); case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT: return static_cast<android_dataspace>( HAL_DATASPACE_STANDARD_ADOBE_RGB | @@ -1364,7 +1370,7 @@ VkResult CreateSwapchainKHR(VkDevice device, PixelFormat native_pixel_format = GetNativePixelFormat(create_info->imageFormat); android_dataspace native_dataspace = - GetNativeDataspace(create_info->imageColorSpace); + GetNativeDataspace(create_info->imageColorSpace, native_pixel_format); if (native_dataspace == HAL_DATASPACE_UNKNOWN) { ALOGE( "CreateSwapchainKHR(VkSwapchainCreateInfoKHR.imageColorSpace = %d) " |