From 4a9bb444760b6d2d8a85618bbee582b8b47a802f Mon Sep 17 00:00:00 2001 From: Roman Kiryanov <rkir@google.com> Date: Tue, 30 Apr 2019 09:46:00 -0700 Subject: [PATCH] Set suggestedYcbcrModel to RGB_IDENTITY for RGB formats The YCBCR_601 model should be applied only for YUV formats. Bug: 131176903 Test: CtsGraphicsTestCases \ Test: android.graphics.cts.BasicVulkanGpuTest# \ Test: testBasicBufferImportAndRenderingExternalFormat\ Test: [AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM] Change-Id: I4701464e99928d62aa6e0382daff002d2cd90003 Merged-In: I1888238a890bcbc685b63b996790d8de5f55b412 Signed-off-by: Roman Kiryanov <rkir@google.com> --- system/vulkan_enc/AndroidHardwareBuffer.cpp | 5 ++++- system/vulkan_enc/vk_format_info.h | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/system/vulkan_enc/AndroidHardwareBuffer.cpp b/system/vulkan_enc/AndroidHardwareBuffer.cpp index 516791b..6bc1484 100644 --- a/system/vulkan_enc/AndroidHardwareBuffer.cpp +++ b/system/vulkan_enc/AndroidHardwareBuffer.cpp @@ -101,7 +101,10 @@ VkResult getAndroidHardwareBufferPropertiesANDROID( ahbFormatProps->samplerYcbcrConversionComponents.b = VK_COMPONENT_SWIZZLE_IDENTITY; ahbFormatProps->samplerYcbcrConversionComponents.a = VK_COMPONENT_SWIZZLE_IDENTITY; - ahbFormatProps->suggestedYcbcrModel = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601; + ahbFormatProps->suggestedYcbcrModel = + android_format_is_yuv(desc.format) ? + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 : + VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY; ahbFormatProps->suggestedYcbcrRange = VK_SAMPLER_YCBCR_RANGE_ITU_FULL; ahbFormatProps->suggestedXChromaOffset = VK_CHROMA_LOCATION_MIDPOINT; diff --git a/system/vulkan_enc/vk_format_info.h b/system/vulkan_enc/vk_format_info.h index 0337f95..c70f45f 100644 --- a/system/vulkan_enc/vk_format_info.h +++ b/system/vulkan_enc/vk_format_info.h @@ -78,6 +78,18 @@ android_format_from_vk(VkFormat vk_format) } } +static inline bool +android_format_is_yuv(unsigned android_format) +{ + switch (android_format) { + case HAL_PIXEL_FORMAT_NV12_Y_TILED_INTEL: + return true; + + default: + return false; + } +} + static inline VkImageAspectFlags vk_format_aspects(VkFormat format) { -- GitLab