From ca04de855d172a91ba611a9fbef4be22fc105d88 Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Tue, 3 Mar 2020 09:59:42 -0700 Subject: [PATCH] Vulkan: blacklist VK_FORMAT_R8G8B8_UNORM Chrome makes assumptions that depend on ANGLE implementing 24bit RGB as 32 RGBX. Since that was the behavior of ANGLE for a while, remove those formats from the VK format table to force that behavior again. Test: Chrome on Fuchsia Bug: angleproject:4282 Change-Id: I22a3f07b00d7870044ed6b3326dd528721b89af8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2085043 Reviewed-by: Jamie Madill Commit-Queue: Michael Spang --- .../code_generation_hashes/Vulkan_format.json | 4 +-- .../renderer/vulkan/vk_format_map.json | 1 - .../vulkan/vk_format_table_autogen.cpp | 25 +++++++------------ 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/scripts/code_generation_hashes/Vulkan_format.json b/scripts/code_generation_hashes/Vulkan_format.json index 1db8cc229..1f7f6276b 100644 --- a/scripts/code_generation_hashes/Vulkan_format.json +++ b/scripts/code_generation_hashes/Vulkan_format.json @@ -6,7 +6,7 @@ "src/libANGLE/renderer/vulkan/gen_vk_format_table.py": "d8a0f2278c09a49049a73930b9da3719", "src/libANGLE/renderer/vulkan/vk_format_map.json": - "e203fb283bfb2f0c446d523f7b290af6", + "cc593afd850712a04600c9badf1544a6", "src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp": - "a77060d7b772d1a94bdd32ce4b31399e" + "0b818cbddfa88311b853eb1c30eb137d" } \ No newline at end of file diff --git a/src/libANGLE/renderer/vulkan/vk_format_map.json b/src/libANGLE/renderer/vulkan/vk_format_map.json index 1b9f332de..3f7d718b9 100644 --- a/src/libANGLE/renderer/vulkan/vk_format_map.json +++ b/src/libANGLE/renderer/vulkan/vk_format_map.json @@ -40,7 +40,6 @@ "R8G8_SINT": "VK_FORMAT_R8G8_SINT", "R8G8_USCALED": "VK_FORMAT_R8G8_USCALED", "R8G8_SSCALED": "VK_FORMAT_R8G8_SSCALED", - "R8G8B8_UNORM": "VK_FORMAT_R8G8B8_UNORM", "R8G8B8_SNORM": "VK_FORMAT_R8G8B8_SNORM", "R8G8B8_UINT": "VK_FORMAT_R8G8B8_UINT", "R8G8B8_SINT": "VK_FORMAT_R8G8B8_SINT", diff --git a/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp b/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp index 3554d80d8..298e62fe8 100644 --- a/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp +++ b/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp @@ -2273,22 +2273,15 @@ void Format::initialize(RendererVk *renderer, const angle::Format &angleFormat) break; case angle::FormatID::R8G8B8_UNORM: - internalFormat = GL_RGB8; - { - static constexpr ImageFormatInitInfo kInfo[] = { - {angle::FormatID::R8G8B8_UNORM, VK_FORMAT_R8G8B8_UNORM, nullptr}, - {angle::FormatID::R8G8B8A8_UNORM, VK_FORMAT_R8G8B8A8_UNORM, - Initialize4ComponentData}}; - initImageFallback(renderer, kInfo, ArraySize(kInfo)); - } - { - static constexpr BufferFormatInitInfo kInfo[] = { - {angle::FormatID::R8G8B8_UNORM, VK_FORMAT_R8G8B8_UNORM, false, - CopyNativeVertexData, false}, - {angle::FormatID::R32G32B32_FLOAT, VK_FORMAT_R32G32B32_SFLOAT, false, - CopyTo32FVertexData, true}}; - initBufferFallback(renderer, kInfo, ArraySize(kInfo)); - } + internalFormat = GL_RGB8; + actualImageFormatID = angle::FormatID::R8G8B8A8_UNORM; + vkImageFormat = VK_FORMAT_R8G8B8A8_UNORM; + imageInitializerFunction = Initialize4ComponentData; + actualBufferFormatID = angle::FormatID::R32G32B32_FLOAT; + vkBufferFormat = VK_FORMAT_R32G32B32_SFLOAT; + vkBufferFormatIsPacked = false; + vertexLoadFunction = CopyTo32FVertexData; + vertexLoadRequiresConversion = true; break; case angle::FormatID::R8G8B8_UNORM_SRGB: