Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca506338 authored by Jason Macnak's avatar Jason Macnak
Browse files

Only report PASS_THROUGH when VK_EXT_swapchain_colorspace enabled

Noticed by chrisforbes@.

aosp/2157379 and aosp/2155840 over aggressively enabled reporting
support for these surface formats.

Bug: b/258473421
Test: launch Cuttlefish with SwANGLE
Test: cts -m CtsMediaCodecTestCases
          -t android.media.codec.cts.EncodeDecodeTest
Test: cts -m CtsMediaCodecTestCases
          -t android.media.codec.cts.DecodeEditEncodeTest
Test: cts -m CtsDeqpTestCases
          --module-arg CtsDeqpTestCases:include-filter:dEQP-EGL.*
Test: cts -m CtsDeqpTestCases
          --module-arg CtsDeqpTestCases:include-filter:dEQP-VK.wsi.android.*
Change-Id: Id753d5a63399311b940cc05bc3de97821e84d190
parent 7e95846b
Loading
Loading
Loading
Loading
+23 −13
Original line number Diff line number Diff line
@@ -787,12 +787,13 @@ VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice pdev,
    std::vector<VkSurfaceFormatKHR> all_formats = {
        {VK_FORMAT_R8G8B8A8_UNORM, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR},
        {VK_FORMAT_R8G8B8A8_SRGB, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR},
        // Also allow to use PASS_THROUGH + HAL_DATASPACE_ARBITRARY
        {VK_FORMAT_R8G8B8A8_UNORM, VK_COLOR_SPACE_PASS_THROUGH_EXT},
        {VK_FORMAT_R8G8B8A8_SRGB, VK_COLOR_SPACE_PASS_THROUGH_EXT},
    };

    if (colorspace_ext) {
        all_formats.emplace_back(VkSurfaceFormatKHR{
            VK_FORMAT_R8G8B8A8_UNORM, VK_COLOR_SPACE_PASS_THROUGH_EXT});
        all_formats.emplace_back(VkSurfaceFormatKHR{
            VK_FORMAT_R8G8B8A8_SRGB, VK_COLOR_SPACE_PASS_THROUGH_EXT});
        all_formats.emplace_back(VkSurfaceFormatKHR{
            VK_FORMAT_R8G8B8A8_UNORM, VK_COLOR_SPACE_BT709_LINEAR_EXT});
    }
@@ -812,16 +813,22 @@ VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice pdev,
    if (AHardwareBuffer_isSupported(&desc)) {
        all_formats.emplace_back(VkSurfaceFormatKHR{
            VK_FORMAT_R5G6B5_UNORM_PACK16, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR});
        all_formats.emplace_back(VkSurfaceFormatKHR{
            VK_FORMAT_R5G6B5_UNORM_PACK16, VK_COLOR_SPACE_PASS_THROUGH_EXT});
        if (colorspace_ext) {
            all_formats.emplace_back(
                VkSurfaceFormatKHR{VK_FORMAT_R5G6B5_UNORM_PACK16,
                                   VK_COLOR_SPACE_PASS_THROUGH_EXT});
        }
    }

    desc.format = AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT;
    if (AHardwareBuffer_isSupported(&desc)) {
        all_formats.emplace_back(VkSurfaceFormatKHR{
            VK_FORMAT_R16G16B16A16_SFLOAT, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR});
        all_formats.emplace_back(VkSurfaceFormatKHR{
            VK_FORMAT_R16G16B16A16_SFLOAT, VK_COLOR_SPACE_PASS_THROUGH_EXT});
        if (colorspace_ext) {
            all_formats.emplace_back(
                VkSurfaceFormatKHR{VK_FORMAT_R16G16B16A16_SFLOAT,
                                   VK_COLOR_SPACE_PASS_THROUGH_EXT});
        }
        if (wide_color_support) {
            all_formats.emplace_back(
                VkSurfaceFormatKHR{VK_FORMAT_R16G16B16A16_SFLOAT,
@@ -837,9 +844,11 @@ VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice pdev,
        all_formats.emplace_back(
            VkSurfaceFormatKHR{VK_FORMAT_A2B10G10R10_UNORM_PACK32,
                               VK_COLOR_SPACE_SRGB_NONLINEAR_KHR});
        if (colorspace_ext) {
            all_formats.emplace_back(
                VkSurfaceFormatKHR{VK_FORMAT_A2B10G10R10_UNORM_PACK32,
                                   VK_COLOR_SPACE_PASS_THROUGH_EXT});
        }
        if (wide_color_support) {
            all_formats.emplace_back(
                VkSurfaceFormatKHR{VK_FORMAT_A2B10G10R10_UNORM_PACK32,
@@ -849,9 +858,10 @@ VkResult GetPhysicalDeviceSurfaceFormatsKHR(VkPhysicalDevice pdev,

    desc.format = AHARDWAREBUFFER_FORMAT_R8_UNORM;
    if (AHardwareBuffer_isSupported(&desc)) {
        all_formats.emplace_back(
            VkSurfaceFormatKHR{VK_FORMAT_R8_UNORM,
                               VK_COLOR_SPACE_PASS_THROUGH_EXT});
        if (colorspace_ext) {
            all_formats.emplace_back(VkSurfaceFormatKHR{
                VK_FORMAT_R8_UNORM, VK_COLOR_SPACE_PASS_THROUGH_EXT});
        }
    }

    // NOTE: Any new formats that are added must be coordinated across different