Commit f54191ab by Mohan Maiya Committed by Commit Bot

Vulkan: Add YUV G8_B8R8_2PLANE_420_UNORM support.

Add support for YCbCr_420_888 and YCrCb_420_888 formats, more commonly known as NV12 and NV21. Bug: angleproject:5773 Change-Id: I1568d543c221ad110e7f199eb2ffd5df23a6134e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2787251 Commit-Queue: Mohan Maiya <m.maiya@samsung.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org>
parent a9bcbac3
{ {
"src/libANGLE/renderer/FormatID_autogen.h": "src/libANGLE/renderer/FormatID_autogen.h":
"6f4f189645a02e35e5f0c07c65d8124f", "9ba2d452bf05b9ae21ed86e57490c703",
"src/libANGLE/renderer/Format_table_autogen.cpp": "src/libANGLE/renderer/Format_table_autogen.cpp":
"fe2b6b0f7a76fdb3d3113b5bbdc4dad3", "969f821f7241fbc3df16864daeafa68e",
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "32ba71942c0fd00e6807104f1bb80a3c",
"src/libANGLE/renderer/angle_format_data.json": "src/libANGLE/renderer/angle_format_data.json":
"6d7adfa00bbff38c4d3dc81eff826958", "4b3b5d4beef95c282ba4f20fdc2b20ed",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
"ae32dfce450f7b7ffc62d746d6fddf83", "46b589fc0fc306b2f7c97ee7bb08baee",
"src/libANGLE/renderer/gen_angle_format_table.py": "src/libANGLE/renderer/gen_angle_format_table.py":
"428255701f3a3a9630593ab110ca98c1" "428255701f3a3a9630593ab110ca98c1"
} }
\ No newline at end of file
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
"src/libANGLE/renderer/gen_load_functions_table.py": "src/libANGLE/renderer/gen_load_functions_table.py":
"bbc2f2cbce34313d7c06a3511eff5a1f", "bbc2f2cbce34313d7c06a3511eff5a1f",
"src/libANGLE/renderer/load_functions_data.json": "src/libANGLE/renderer/load_functions_data.json":
"15c8cb8e78a1491c4befa7921c5194e3", "09e92e0cb6a1f3034df1c43769d533b9",
"src/libANGLE/renderer/load_functions_table_autogen.cpp": "src/libANGLE/renderer/load_functions_table_autogen.cpp":
"3439701afe487ff33d9eccc5febb8421" "0f35afffa4c8a4a78ae49bd0e4956565"
} }
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "32ba71942c0fd00e6807104f1bb80a3c",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
"ae32dfce450f7b7ffc62d746d6fddf83", "46b589fc0fc306b2f7c97ee7bb08baee",
"src/libANGLE/renderer/dxgi_format_data.json": "src/libANGLE/renderer/dxgi_format_data.json":
"3428e4761ccd05f960adffd6ccbd86c5", "3428e4761ccd05f960adffd6ccbd86c5",
"src/libANGLE/renderer/dxgi_format_map_autogen.cpp": "src/libANGLE/renderer/dxgi_format_map_autogen.cpp":
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "32ba71942c0fd00e6807104f1bb80a3c",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
"ae32dfce450f7b7ffc62d746d6fddf83", "46b589fc0fc306b2f7c97ee7bb08baee",
"src/libANGLE/renderer/gen_angle_format_table.py": "src/libANGLE/renderer/gen_angle_format_table.py":
"428255701f3a3a9630593ab110ca98c1", "428255701f3a3a9630593ab110ca98c1",
"src/libANGLE/renderer/metal/shaders/blit.metal": "src/libANGLE/renderer/metal/shaders/blit.metal":
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
"src/libANGLE/renderer/metal/shaders/copy_buffer.metal": "src/libANGLE/renderer/metal/shaders/copy_buffer.metal":
"83d33cc789cb5df7b173b98c50770c0f", "83d33cc789cb5df7b173b98c50770c0f",
"src/libANGLE/renderer/metal/shaders/format_autogen.h": "src/libANGLE/renderer/metal/shaders/format_autogen.h":
"01f206f1fd873c5f9da2f3627b49bcf2", "0b8cbcd9b2e94f0688a334813c67f629",
"src/libANGLE/renderer/metal/shaders/gen_indices.metal": "src/libANGLE/renderer/metal/shaders/gen_indices.metal":
"06e2b6f259fe019b46e2a9710eb11bff", "06e2b6f259fe019b46e2a9710eb11bff",
"src/libANGLE/renderer/metal/shaders/gen_mipmap.metal": "src/libANGLE/renderer/metal/shaders/gen_mipmap.metal":
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
"src/libANGLE/renderer/metal/shaders/gen_mtl_internal_shaders.py": "src/libANGLE/renderer/metal/shaders/gen_mtl_internal_shaders.py":
"af7a98ffaa3f3885b1e3cc7160c8549b", "af7a98ffaa3f3885b1e3cc7160c8549b",
"src/libANGLE/renderer/metal/shaders/mtl_default_shaders_src_autogen.inc": "src/libANGLE/renderer/metal/shaders/mtl_default_shaders_src_autogen.inc":
"80ebc484aa7fea40e5a8a9078b0a7c81", "47961cdeb7bed0367b74d2bf0f99a1c6",
"src/libANGLE/renderer/metal/shaders/visibility.metal": "src/libANGLE/renderer/metal/shaders/visibility.metal":
"b82aa740cf4b0aed606aacef1024beea" "b82aa740cf4b0aed606aacef1024beea"
} }
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "32ba71942c0fd00e6807104f1bb80a3c",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
"ae32dfce450f7b7ffc62d746d6fddf83", "46b589fc0fc306b2f7c97ee7bb08baee",
"src/libANGLE/renderer/metal/gen_mtl_format_table.py": "src/libANGLE/renderer/metal/gen_mtl_format_table.py":
"ee0b5db245a6672b86b122426a16d395", "ee0b5db245a6672b86b122426a16d395",
"src/libANGLE/renderer/metal/mtl_format_map.json": "src/libANGLE/renderer/metal/mtl_format_map.json":
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "32ba71942c0fd00e6807104f1bb80a3c",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
"ae32dfce450f7b7ffc62d746d6fddf83", "46b589fc0fc306b2f7c97ee7bb08baee",
"src/libANGLE/renderer/vulkan/gen_vk_format_table.py": "src/libANGLE/renderer/vulkan/gen_vk_format_table.py":
"0bc8a6deefd856387da0bccf3817dde7", "0bc8a6deefd856387da0bccf3817dde7",
"src/libANGLE/renderer/vulkan/vk_format_map.json": "src/libANGLE/renderer/vulkan/vk_format_map.json":
"d7bb44b9fa6f6e4038c2a415fe1711a1", "5aa1df6574944082788c0dadccf4f136",
"src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp": "src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp":
"1f1587af2b31877abe281a1a1b84e15e" "57594ef67cdb88f9940b786ba1bb04ac"
} }
\ No newline at end of file
...@@ -4,11 +4,11 @@ ...@@ -4,11 +4,11 @@
"src/libANGLE/renderer/vulkan/gen_vk_mandatory_format_support_table.py": "src/libANGLE/renderer/vulkan/gen_vk_mandatory_format_support_table.py":
"3e2b8cd80373275e862bb7c8ba20a745", "3e2b8cd80373275e862bb7c8ba20a745",
"src/libANGLE/renderer/vulkan/vk_format_map.json": "src/libANGLE/renderer/vulkan/vk_format_map.json":
"d7bb44b9fa6f6e4038c2a415fe1711a1", "5aa1df6574944082788c0dadccf4f136",
"src/libANGLE/renderer/vulkan/vk_mandatory_format_support_data.json": "src/libANGLE/renderer/vulkan/vk_mandatory_format_support_data.json":
"fa2bd54c1bb0ab2cf1d386061a4bc5c5", "fa2bd54c1bb0ab2cf1d386061a4bc5c5",
"src/libANGLE/renderer/vulkan/vk_mandatory_format_support_table_autogen.cpp": "src/libANGLE/renderer/vulkan/vk_mandatory_format_support_table_autogen.cpp":
"201340f2709707e5ce88a7c2f6d21f9a", "16d7c971fcdf6050b065d38ece822d0b",
"third_party/vulkan-deps/vulkan-headers/src/registry/vk.xml": "third_party/vulkan-deps/vulkan-headers/src/registry/vk.xml":
"a30c26e541c88b2c20284dbbc1d0b26a" "a30c26e541c88b2c20284dbbc1d0b26a"
} }
\ No newline at end of file
...@@ -292,6 +292,7 @@ inline bool IsLittleEndian() ...@@ -292,6 +292,7 @@ inline bool IsLittleEndian()
// YUV formats // YUV formats
#define GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX 0x6B00 #define GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX 0x6B00
#define GL_G8_B8R8_2PLANE_420_UNORM_ANGLEX 0x6B01
#define ANGLE_CHECK_GL_ALLOC(context, result) \ #define ANGLE_CHECK_GL_ALLOC(context, result) \
ANGLE_CHECK(context, result, "Failed to allocate host memory", GL_OUT_OF_MEMORY) ANGLE_CHECK(context, result, "Failed to allocate host memory", GL_OUT_OF_MEMORY)
......
...@@ -120,6 +120,7 @@ enum class FormatID ...@@ -120,6 +120,7 @@ enum class FormatID
ETC2_R8G8B8A8_UNORM_BLOCK, ETC2_R8G8B8A8_UNORM_BLOCK,
ETC2_R8G8B8_SRGB_BLOCK, ETC2_R8G8B8_SRGB_BLOCK,
ETC2_R8G8B8_UNORM_BLOCK, ETC2_R8G8B8_UNORM_BLOCK,
G8_B8R8_2PLANE_420_UNORM,
G8_B8_R8_3PLANE_420_UNORM, G8_B8_R8_3PLANE_420_UNORM,
L16A16_FLOAT, L16A16_FLOAT,
L16_FLOAT, L16_FLOAT,
...@@ -244,7 +245,7 @@ enum class FormatID ...@@ -244,7 +245,7 @@ enum class FormatID
X2R10G10B10_USCALED_VERTEX X2R10G10B10_USCALED_VERTEX
}; };
constexpr uint32_t kNumANGLEFormats = 225; constexpr uint32_t kNumANGLEFormats = 226;
} // namespace angle } // namespace angle
......
...@@ -127,6 +127,7 @@ const Format gFormatInfoTable[] = { ...@@ -127,6 +127,7 @@ const Format gFormatInfoTable[] = {
{ FormatID::ETC2_R8G8B8A8_UNORM_BLOCK, GL_COMPRESSED_RGBA8_ETC2_EAC, GL_COMPRESSED_RGBA8_ETC2_EAC, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 8, 8, 8, 8, 0, 0, 0, 16, 0, true, false, false, false, false, gl::VertexAttribType::UnsignedByte }, { FormatID::ETC2_R8G8B8A8_UNORM_BLOCK, GL_COMPRESSED_RGBA8_ETC2_EAC, GL_COMPRESSED_RGBA8_ETC2_EAC, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 8, 8, 8, 8, 0, 0, 0, 16, 0, true, false, false, false, false, gl::VertexAttribType::UnsignedByte },
{ FormatID::ETC2_R8G8B8_SRGB_BLOCK, GL_COMPRESSED_SRGB8_ETC2, GL_COMPRESSED_SRGB8_ETC2, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 8, 8, 8, 0, 0, 0, 0, 8, 0, true, false, false, true, false, gl::VertexAttribType::Byte }, { FormatID::ETC2_R8G8B8_SRGB_BLOCK, GL_COMPRESSED_SRGB8_ETC2, GL_COMPRESSED_SRGB8_ETC2, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 8, 8, 8, 0, 0, 0, 0, 8, 0, true, false, false, true, false, gl::VertexAttribType::Byte },
{ FormatID::ETC2_R8G8B8_UNORM_BLOCK, GL_COMPRESSED_RGB8_ETC2, GL_COMPRESSED_RGB8_ETC2, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 8, 8, 8, 0, 0, 0, 0, 8, 0, true, false, false, false, false, gl::VertexAttribType::UnsignedByte }, { FormatID::ETC2_R8G8B8_UNORM_BLOCK, GL_COMPRESSED_RGB8_ETC2, GL_COMPRESSED_RGB8_ETC2, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 8, 8, 8, 0, 0, 0, 0, 8, 0, true, false, false, false, false, gl::VertexAttribType::UnsignedByte },
{ FormatID::G8_B8R8_2PLANE_420_UNORM, GL_G8_B8R8_2PLANE_420_UNORM_ANGLEX, GL_G8_B8R8_2PLANE_420_UNORM_ANGLEX, GenerateMip<R8G8B8>, NoCopyFunctions, ReadColor<R8G8B8, GLfloat>, WriteColor<R8G8B8, GLfloat>, GL_UNSIGNED_NORMALIZED, 8, 8, 8, 0, 0, 0, 0, 3, 0, false, false, false, false, true, gl::VertexAttribType::UnsignedByte },
{ FormatID::G8_B8_R8_3PLANE_420_UNORM, GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX, GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX, GenerateMip<R8G8B8>, NoCopyFunctions, ReadColor<R8G8B8, GLfloat>, WriteColor<R8G8B8, GLfloat>, GL_UNSIGNED_NORMALIZED, 8, 8, 8, 0, 0, 0, 0, 3, 0, false, false, false, false, true, gl::VertexAttribType::UnsignedByte }, { FormatID::G8_B8_R8_3PLANE_420_UNORM, GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX, GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX, GenerateMip<R8G8B8>, NoCopyFunctions, ReadColor<R8G8B8, GLfloat>, WriteColor<R8G8B8, GLfloat>, GL_UNSIGNED_NORMALIZED, 8, 8, 8, 0, 0, 0, 0, 3, 0, false, false, false, false, true, gl::VertexAttribType::UnsignedByte },
{ FormatID::L16A16_FLOAT, GL_LUMINANCE_ALPHA16F_EXT, GL_LUMINANCE_ALPHA16F_EXT, GenerateMip<L16A16F>, NoCopyFunctions, ReadColor<L16A16F, GLfloat>, WriteColor<L16A16F, GLfloat>, GL_FLOAT, 0, 0, 0, 16, 16, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, false, false, false, gl::VertexAttribType::Float }, { FormatID::L16A16_FLOAT, GL_LUMINANCE_ALPHA16F_EXT, GL_LUMINANCE_ALPHA16F_EXT, GenerateMip<L16A16F>, NoCopyFunctions, ReadColor<L16A16F, GLfloat>, WriteColor<L16A16F, GLfloat>, GL_FLOAT, 0, 0, 0, 16, 16, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, false, false, false, gl::VertexAttribType::Float },
{ FormatID::L16_FLOAT, GL_LUMINANCE16F_EXT, GL_LUMINANCE16F_EXT, GenerateMip<L16F>, NoCopyFunctions, ReadColor<L16F, GLfloat>, WriteColor<L16F, GLfloat>, GL_FLOAT, 0, 0, 0, 0, 16, 0, 0, 2, std::numeric_limits<GLuint>::max(), false, false, false, false, false, gl::VertexAttribType::Float }, { FormatID::L16_FLOAT, GL_LUMINANCE16F_EXT, GL_LUMINANCE16F_EXT, GenerateMip<L16F>, NoCopyFunctions, ReadColor<L16F, GLfloat>, WriteColor<L16F, GLfloat>, GL_FLOAT, 0, 0, 0, 0, 16, 0, 0, 2, std::numeric_limits<GLuint>::max(), false, false, false, false, false, gl::VertexAttribType::Float },
...@@ -471,6 +472,8 @@ FormatID Format::InternalFormatToID(GLenum internalFormat) ...@@ -471,6 +472,8 @@ FormatID Format::InternalFormatToID(GLenum internalFormat)
return FormatID::ETC1_LOSSY_DECODE_R8G8B8_UNORM_BLOCK; return FormatID::ETC1_LOSSY_DECODE_R8G8B8_UNORM_BLOCK;
case GL_ETC1_RGB8_OES: case GL_ETC1_RGB8_OES:
return FormatID::ETC1_R8G8B8_UNORM_BLOCK; return FormatID::ETC1_R8G8B8_UNORM_BLOCK;
case GL_G8_B8R8_2PLANE_420_UNORM_ANGLEX:
return FormatID::G8_B8R8_2PLANE_420_UNORM;
case GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX: case GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX:
return FormatID::G8_B8_R8_3PLANE_420_UNORM; return FormatID::G8_B8_R8_3PLANE_420_UNORM;
case GL_INT_10_10_10_2_OES: case GL_INT_10_10_10_2_OES:
......
...@@ -287,5 +287,8 @@ ...@@ -287,5 +287,8 @@
}, },
"G8_B8_R8_3PLANE_420_UNORM": { "G8_B8_R8_3PLANE_420_UNORM": {
"channelStruct": "R8G8B8" "channelStruct": "R8G8B8"
},
"G8_B8R8_2PLANE_420_UNORM": {
"channelStruct": "R8G8B8"
} }
} }
...@@ -225,5 +225,6 @@ ...@@ -225,5 +225,6 @@
[ "GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT", "PVRTC1_RGB_4BPP_UNORM_SRGB_BLOCK" ], [ "GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT", "PVRTC1_RGB_4BPP_UNORM_SRGB_BLOCK" ],
[ "GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT", "PVRTC1_RGBA_2BPP_UNORM_SRGB_BLOCK" ], [ "GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT", "PVRTC1_RGBA_2BPP_UNORM_SRGB_BLOCK" ],
[ "GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT", "PVRTC1_RGBA_4BPP_UNORM_SRGB_BLOCK" ], [ "GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT", "PVRTC1_RGBA_4BPP_UNORM_SRGB_BLOCK" ],
[ "GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX", "G8_B8_R8_3PLANE_420_UNORM" ] [ "GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX", "G8_B8_R8_3PLANE_420_UNORM" ],
[ "GL_G8_B8R8_2PLANE_420_UNORM_ANGLEX", "G8_B8R8_2PLANE_420_UNORM" ]
] ]
...@@ -1175,5 +1175,10 @@ ...@@ -1175,5 +1175,10 @@
"NONE": { "NONE": {
"GL_UNSIGNED_BYTE": "UnimplementedLoadFunction" "GL_UNSIGNED_BYTE": "UnimplementedLoadFunction"
} }
},
"GL_G8_B8R8_2PLANE_420_UNORM_ANGLEX": {
"NONE": {
"GL_UNSIGNED_BYTE": "UnimplementedLoadFunction"
}
} }
} }
...@@ -1608,6 +1608,18 @@ LoadImageFunctionInfo ETC1_RGB8_OES_to_R8G8B8A8_UNORM(GLenum type) ...@@ -1608,6 +1608,18 @@ LoadImageFunctionInfo ETC1_RGB8_OES_to_R8G8B8A8_UNORM(GLenum type)
} }
} }
LoadImageFunctionInfo G8_B8R8_2PLANE_420_UNORM_ANGLEX_to_default(GLenum type)
{
switch (type)
{
case GL_UNSIGNED_BYTE:
return LoadImageFunctionInfo(UnimplementedLoadFunction, true);
default:
UNREACHABLE();
return LoadImageFunctionInfo(UnreachableLoadFunction, true);
}
}
LoadImageFunctionInfo G8_B8_R8_3PLANE_420_UNORM_ANGLEX_to_default(GLenum type) LoadImageFunctionInfo G8_B8_R8_3PLANE_420_UNORM_ANGLEX_to_default(GLenum type)
{ {
switch (type) switch (type)
...@@ -3690,6 +3702,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat) ...@@ -3690,6 +3702,8 @@ LoadFunctionMap GetLoadFunctionsMap(GLenum internalFormat, FormatID angleFormat)
} }
break; break;
} }
case GL_G8_B8R8_2PLANE_420_UNORM_ANGLEX:
return G8_B8R8_2PLANE_420_UNORM_ANGLEX_to_default;
case GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX: case GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX:
return G8_B8_R8_3PLANE_420_UNORM_ANGLEX_to_default; return G8_B8_R8_3PLANE_420_UNORM_ANGLEX_to_default;
case GL_LUMINANCE: case GL_LUMINANCE:
......
...@@ -120,6 +120,7 @@ enum ...@@ -120,6 +120,7 @@ enum
ETC2_R8G8B8A8_UNORM_BLOCK, ETC2_R8G8B8A8_UNORM_BLOCK,
ETC2_R8G8B8_SRGB_BLOCK, ETC2_R8G8B8_SRGB_BLOCK,
ETC2_R8G8B8_UNORM_BLOCK, ETC2_R8G8B8_UNORM_BLOCK,
G8_B8R8_2PLANE_420_UNORM,
G8_B8_R8_3PLANE_420_UNORM, G8_B8_R8_3PLANE_420_UNORM,
L16A16_FLOAT, L16A16_FLOAT,
L16_FLOAT, L16_FLOAT,
......
...@@ -1238,6 +1238,7 @@ enum ...@@ -1238,6 +1238,7 @@ enum
ETC2_R8G8B8A8_UNORM_BLOCK, ETC2_R8G8B8A8_UNORM_BLOCK,
ETC2_R8G8B8_SRGB_BLOCK, ETC2_R8G8B8_SRGB_BLOCK,
ETC2_R8G8B8_UNORM_BLOCK, ETC2_R8G8B8_UNORM_BLOCK,
G8_B8R8_2PLANE_420_UNORM,
G8_B8_R8_3PLANE_420_UNORM, G8_B8_R8_3PLANE_420_UNORM,
L16A16_FLOAT, L16A16_FLOAT,
L16_FLOAT, L16_FLOAT,
......
...@@ -165,7 +165,8 @@ ...@@ -165,7 +165,8 @@
"ASTC_12x10_SRGB_BLOCK": "VK_FORMAT_ASTC_12x10_SRGB_BLOCK", "ASTC_12x10_SRGB_BLOCK": "VK_FORMAT_ASTC_12x10_SRGB_BLOCK",
"ASTC_12x12_UNORM_BLOCK": "VK_FORMAT_ASTC_12x12_UNORM_BLOCK", "ASTC_12x12_UNORM_BLOCK": "VK_FORMAT_ASTC_12x12_UNORM_BLOCK",
"ASTC_12x12_SRGB_BLOCK": "VK_FORMAT_ASTC_12x12_SRGB_BLOCK", "ASTC_12x12_SRGB_BLOCK": "VK_FORMAT_ASTC_12x12_SRGB_BLOCK",
"G8_B8_R8_3PLANE_420_UNORM": "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM" "G8_B8_R8_3PLANE_420_UNORM": "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM",
"G8_B8R8_2PLANE_420_UNORM": "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"
}, },
"fallbacks": { "fallbacks": {
"A16_FLOAT": { "A16_FLOAT": {
......
...@@ -960,6 +960,16 @@ void Format::initialize(RendererVk *renderer, const angle::Format &angleFormat) ...@@ -960,6 +960,16 @@ void Format::initialize(RendererVk *renderer, const angle::Format &angleFormat)
vertexLoadRequiresConversion = false; vertexLoadRequiresConversion = false;
break; break;
case angle::FormatID::G8_B8R8_2PLANE_420_UNORM:
intendedGLFormat = GL_G8_B8R8_2PLANE_420_UNORM_ANGLEX;
actualImageFormatID = angle::FormatID::G8_B8R8_2PLANE_420_UNORM;
imageInitializerFunction = nullptr;
actualBufferFormatID = angle::FormatID::G8_B8R8_2PLANE_420_UNORM;
vkBufferFormatIsPacked = false;
vertexLoadFunction = CopyNativeVertexData<GLubyte, 3, 3, 0>;
vertexLoadRequiresConversion = false;
break;
case angle::FormatID::G8_B8_R8_3PLANE_420_UNORM: case angle::FormatID::G8_B8_R8_3PLANE_420_UNORM:
intendedGLFormat = GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX; intendedGLFormat = GL_G8_B8_R8_3PLANE_420_UNORM_ANGLEX;
actualImageFormatID = angle::FormatID::G8_B8_R8_3PLANE_420_UNORM; actualImageFormatID = angle::FormatID::G8_B8_R8_3PLANE_420_UNORM;
...@@ -2395,6 +2405,7 @@ VkFormat GetVkFormatFromFormatID(angle::FormatID formatID) ...@@ -2395,6 +2405,7 @@ VkFormat GetVkFormatFromFormatID(angle::FormatID formatID)
{angle::FormatID::R16G16_SSCALED, VK_FORMAT_R16G16_SSCALED}, {angle::FormatID::R16G16_SSCALED, VK_FORMAT_R16G16_SSCALED},
{angle::FormatID::B8G8R8A8_UNORM_SRGB, VK_FORMAT_B8G8R8A8_SRGB}, {angle::FormatID::B8G8R8A8_UNORM_SRGB, VK_FORMAT_B8G8R8A8_SRGB},
{angle::FormatID::BC3_RGBA_UNORM_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK}, {angle::FormatID::BC3_RGBA_UNORM_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK},
{angle::FormatID::G8_B8R8_2PLANE_420_UNORM, VK_FORMAT_G8_B8R8_2PLANE_420_UNORM},
{angle::FormatID::R16_FLOAT, VK_FORMAT_R16_SFLOAT}, {angle::FormatID::R16_FLOAT, VK_FORMAT_R16_SFLOAT},
{angle::FormatID::R8G8B8A8_SNORM, VK_FORMAT_R8G8B8A8_SNORM}, {angle::FormatID::R8G8B8A8_SNORM, VK_FORMAT_R8G8B8A8_SNORM},
{angle::FormatID::R8G8B8A8_SSCALED, VK_FORMAT_R8G8B8A8_SSCALED}, {angle::FormatID::R8G8B8A8_SSCALED, VK_FORMAT_R8G8B8A8_SSCALED},
...@@ -2586,6 +2597,8 @@ angle::FormatID GetFormatIDFromVkFormat(VkFormat vkFormat) ...@@ -2586,6 +2597,8 @@ angle::FormatID GetFormatIDFromVkFormat(VkFormat vkFormat)
return angle::FormatID::B8G8R8A8_UNORM_SRGB; return angle::FormatID::B8G8R8A8_UNORM_SRGB;
case VK_FORMAT_BC3_UNORM_BLOCK: case VK_FORMAT_BC3_UNORM_BLOCK:
return angle::FormatID::BC3_RGBA_UNORM_BLOCK; return angle::FormatID::BC3_RGBA_UNORM_BLOCK;
case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
return angle::FormatID::G8_B8R8_2PLANE_420_UNORM;
case VK_FORMAT_R16_SFLOAT: case VK_FORMAT_R16_SFLOAT:
return angle::FormatID::R16_FLOAT; return angle::FormatID::R16_FLOAT;
case VK_FORMAT_R8G8B8A8_SNORM: case VK_FORMAT_R8G8B8A8_SNORM:
......
...@@ -93,6 +93,7 @@ constexpr FormatMap<VkFormatProperties> kFormatProperties = { ...@@ -93,6 +93,7 @@ constexpr FormatMap<VkFormatProperties> kFormatProperties = {
SAMPLED_IMAGE_FILTER_LINEAR, SAMPLED_IMAGE_FILTER_LINEAR,
0}}, 0}},
{FormatID::BC3_RGBA_UNORM_BLOCK, {0, 0, 0}}, {FormatID::BC3_RGBA_UNORM_BLOCK, {0, 0, 0}},
{FormatID::G8_B8R8_2PLANE_420_UNORM, {0, 0, 0}},
{FormatID::R16_FLOAT, {FormatID::R16_FLOAT,
{0, {0,
BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE | BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment