Commit 0273ea3f by Shahbaz Youssefi Committed by Commit Bot

Vulkan: Use RGBA16_FLOAT for buffer format fallback

... instead of RGBA32_FLOAT. VK_FORMAT_R16G16B16A16_SFLOAT has mandatory support for vertex buffers. Bug: b/184163871 Change-Id: I7ef2933cd15e46bb984e6fd1b020d2ec15b9c60e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2807780 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarIan Elliott <ianelliott@google.com> Reviewed-by: 's avatarTim Van Patten <timvp@google.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent b17a9317
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
"src/libANGLE/renderer/Format_table_autogen.cpp": "src/libANGLE/renderer/Format_table_autogen.cpp":
"969f821f7241fbc3df16864daeafa68e", "969f821f7241fbc3df16864daeafa68e",
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "e5ac2fcfbc930ac2e3f3d54effeafed9",
"src/libANGLE/renderer/angle_format_data.json": "src/libANGLE/renderer/angle_format_data.json":
"4b3b5d4beef95c282ba4f20fdc2b20ed", "4b3b5d4beef95c282ba4f20fdc2b20ed",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
......
{ {
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "e5ac2fcfbc930ac2e3f3d54effeafed9",
"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":
......
{ {
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "e5ac2fcfbc930ac2e3f3d54effeafed9",
"src/libANGLE/renderer/d3d/d3d11/gen_texture_format_table.py": "src/libANGLE/renderer/d3d/d3d11/gen_texture_format_table.py":
"8ad208de51aafef78452ae7f6cf8b340", "8ad208de51aafef78452ae7f6cf8b340",
"src/libANGLE/renderer/d3d/d3d11/texture_format_data.json": "src/libANGLE/renderer/d3d/d3d11/texture_format_data.json":
......
{ {
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "e5ac2fcfbc930ac2e3f3d54effeafed9",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
"46b589fc0fc306b2f7c97ee7bb08baee", "46b589fc0fc306b2f7c97ee7bb08baee",
"src/libANGLE/renderer/dxgi_format_data.json": "src/libANGLE/renderer/dxgi_format_data.json":
......
...@@ -6,5 +6,5 @@ ...@@ -6,5 +6,5 @@
"src/libANGLE/gen_copy_conversion_table.py": "src/libANGLE/gen_copy_conversion_table.py":
"52b879061499e456a3469da3d452f6c5", "52b879061499e456a3469da3d452f6c5",
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c" "e5ac2fcfbc930ac2e3f3d54effeafed9"
} }
\ No newline at end of file
...@@ -8,5 +8,5 @@ ...@@ -8,5 +8,5 @@
"src/libANGLE/gen_format_map.py": "src/libANGLE/gen_format_map.py":
"4062c6247b9c81ab3e8e6422fbd55349", "4062c6247b9c81ab3e8e6422fbd55349",
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c" "e5ac2fcfbc930ac2e3f3d54effeafed9"
} }
\ No newline at end of file
{ {
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "e5ac2fcfbc930ac2e3f3d54effeafed9",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
"46b589fc0fc306b2f7c97ee7bb08baee", "46b589fc0fc306b2f7c97ee7bb08baee",
"src/libANGLE/renderer/gen_angle_format_table.py": "src/libANGLE/renderer/gen_angle_format_table.py":
...@@ -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":
"47961cdeb7bed0367b74d2bf0f99a1c6", "94260983944013d7b094aaab74f37a17",
"src/libANGLE/renderer/metal/shaders/visibility.metal": "src/libANGLE/renderer/metal/shaders/visibility.metal":
"b82aa740cf4b0aed606aacef1024beea" "b82aa740cf4b0aed606aacef1024beea"
} }
\ No newline at end of file
{ {
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "e5ac2fcfbc930ac2e3f3d54effeafed9",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
"46b589fc0fc306b2f7c97ee7bb08baee", "46b589fc0fc306b2f7c97ee7bb08baee",
"src/libANGLE/renderer/metal/gen_mtl_format_table.py": "src/libANGLE/renderer/metal/gen_mtl_format_table.py":
"ee0b5db245a6672b86b122426a16d395", "50165403832b36233870f612e60530da",
"src/libANGLE/renderer/metal/mtl_format_map.json": "src/libANGLE/renderer/metal/mtl_format_map.json":
"848c1e2f6d76115e3d0499346b5684d5", "848c1e2f6d76115e3d0499346b5684d5",
"src/libANGLE/renderer/metal/mtl_format_table_autogen.mm": "src/libANGLE/renderer/metal/mtl_format_table_autogen.mm":
"7765df9be304bf08d1c1c510c7b171ac" "1972cdd31eff1fddaa965e2027710fa0"
} }
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"scripts/gl.xml": "scripts/gl.xml":
"2a73a58a7e26d8676a2c0af6d528cae6", "2a73a58a7e26d8676a2c0af6d528cae6",
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "e5ac2fcfbc930ac2e3f3d54effeafed9",
"src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp": "src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp":
"54a5c8b87d54114ee61a4c535931ea48", "54a5c8b87d54114ee61a4c535931ea48",
"src/libANGLE/renderer/gl/DispatchTableGL_autogen.h": "src/libANGLE/renderer/gl/DispatchTableGL_autogen.h":
......
{ {
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "e5ac2fcfbc930ac2e3f3d54effeafed9",
"src/libANGLE/renderer/angle_format_map.json": "src/libANGLE/renderer/angle_format_map.json":
"46b589fc0fc306b2f7c97ee7bb08baee", "46b589fc0fc306b2f7c97ee7bb08baee",
"src/libANGLE/renderer/vulkan/gen_vk_format_table.py": "src/libANGLE/renderer/vulkan/gen_vk_format_table.py":
"0bc8a6deefd856387da0bccf3817dde7", "bcd28f46d41727b93943129edfeda12d",
"src/libANGLE/renderer/vulkan/vk_format_map.json": "src/libANGLE/renderer/vulkan/vk_format_map.json":
"5aa1df6574944082788c0dadccf4f136", "3b4563c98576280cbe4bcb9af4aafdde",
"src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp": "src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp":
"57594ef67cdb88f9940b786ba1bb04ac" "c5e18754528e417628eb72186b8465ce"
} }
\ No newline at end of file
...@@ -78,19 +78,17 @@ ...@@ -78,19 +78,17 @@
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000001.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000001.inc":
"858bfa39d98b609277d72a0e02a2f0ba", "858bfa39d98b609277d72a0e02a2f0ba",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000002.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000002.inc":
"362b1ae836678351d0632b87befa3dd0", "3373498b3c5fcfdc8990f79be64ede79",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000003.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000003.inc":
"0e77edb045b64490a312a9a3c650b36b", "cb850a123abdf8eb3019ec1b0a16c7f8",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000004.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000004.inc":
"535352811ea6f55a6673d1bfcb71f0cf", "7c6d728712eb398b70ba1364bc41b0db",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000005.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000005.inc":
"42cf2a739179a016d5586c177dda82f7", "07505469598a4af919473b29f47458c3",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000006.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000006.inc":
"23d8451e0453ec3c7334f474927b5213", "394896c467e258e14ee90d6a01c6993a",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000007.inc": "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000007.inc":
"a9e306149eb75a0b3cc5df0fda37a59c", "2488e829762327084cce0825a65b826b",
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc":
"50f7e62c77fb7258de6133c1ae32ba04",
"src/libANGLE/renderer/vulkan/shaders/gen/FullScreenQuad.vert.00000000.inc": "src/libANGLE/renderer/vulkan/shaders/gen/FullScreenQuad.vert.00000000.inc":
"c12bc017be0826f1d9b9d7f25a2e3127", "c12bc017be0826f1d9b9d7f25a2e3127",
"src/libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000000.inc": "src/libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000000.inc":
...@@ -300,9 +298,9 @@ ...@@ -300,9 +298,9 @@
"src/libANGLE/renderer/vulkan/shaders/src/ConvertIndirectLineLoop.comp.json": "src/libANGLE/renderer/vulkan/shaders/src/ConvertIndirectLineLoop.comp.json":
"c2c79c40b0fbcb4876637aa06e8aa919", "c2c79c40b0fbcb4876637aa06e8aa919",
"src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp": "src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp":
"d656da7733a59771d91b0511643cf9f7", "22e382bf289af71b22862bd7685ed613",
"src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp.json": "src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp.json":
"f2abd98463e46c0af45e8a1a5e5af88f", "e4a95aae7f216780946e7332d22aa74e",
"src/libANGLE/renderer/vulkan/shaders/src/FullScreenQuad.vert": "src/libANGLE/renderer/vulkan/shaders/src/FullScreenQuad.vert":
"fd6d015b20709364c90ff41fb687ed0f", "fd6d015b20709364c90ff41fb687ed0f",
"src/libANGLE/renderer/vulkan/shaders/src/GenerateMipmap.comp": "src/libANGLE/renderer/vulkan/shaders/src/GenerateMipmap.comp":
...@@ -326,9 +324,9 @@ ...@@ -326,9 +324,9 @@
"src/libANGLE/renderer/vulkan/shaders/src/OverlayDraw.comp.json": "src/libANGLE/renderer/vulkan/shaders/src/OverlayDraw.comp.json":
"af79e5153c99cdb1e6b551b11bbf7f6b", "af79e5153c99cdb1e6b551b11bbf7f6b",
"src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp": "src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp":
"cb9819e35a326118b075b55b6a57ee3f", "16b75d27a845f71dfc99ab8543ce3f9a",
"src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h": "src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h":
"8ccd01e9e29c88da308998a81030bf6b", "3a56299974fc0519704bbc14a80f5e85",
"tools/glslang/glslang_validator.exe.sha1": "tools/glslang/glslang_validator.exe.sha1":
"17e862cc6f462fecbf50b24ed6544a27", "17e862cc6f462fecbf50b24ed6544a27",
"tools/glslang/glslang_validator.sha1": "tools/glslang/glslang_validator.sha1":
......
{ {
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "e5ac2fcfbc930ac2e3f3d54effeafed9",
"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":
"5aa1df6574944082788c0dadccf4f136", "3b4563c98576280cbe4bcb9af4aafdde",
"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":
......
...@@ -252,9 +252,9 @@ def get_vertex_copy_function(src_format, dst_format): ...@@ -252,9 +252,9 @@ def get_vertex_copy_function(src_format, dst_format):
is_signed = 'true' if 'SINT' in src_format or 'SNORM' in src_format or 'SSCALED' in src_format else 'false' is_signed = 'true' if 'SINT' in src_format or 'SNORM' in src_format or 'SSCALED' in src_format else 'false'
is_normal = 'true' if 'NORM' in src_format else 'false' is_normal = 'true' if 'NORM' in src_format else 'false'
if 'A2' in src_format: if 'A2' in src_format:
return 'CopyW2XYZ10ToXYZW32FVertexData<%s, %s>' % (is_signed, is_normal) return 'CopyW2XYZ10ToXYZWFloatVertexData<%s, %s, true>' % (is_signed, is_normal)
else: else:
return 'CopyXYZ10ToXYZW32FVertexData<%s, %s>' % (is_signed, is_normal) return 'CopyXYZ10ToXYZWFloatVertexData<%s, %s, true>' % (is_signed, is_normal)
if 'FIXED' in src_format: if 'FIXED' in src_format:
assert 'FLOAT' in dst_format, ( assert 'FLOAT' in dst_format, (
...@@ -275,5 +275,6 @@ def get_vertex_copy_function(src_format, dst_format): ...@@ -275,5 +275,6 @@ def get_vertex_copy_function(src_format, dst_format):
'get_vertex_copy_function: can only convert to float,' + ' not to ' + dst_format) 'get_vertex_copy_function: can only convert to float,' + ' not to ' + dst_format)
normalized = 'true' if 'NORM' in src_format else 'false' normalized = 'true' if 'NORM' in src_format else 'false'
return "CopyTo32FVertexData<%s, %d, %d, %s>" % (src_gl_type, num_channel, num_channel, dst_is_half = 'true' if dst_gl_type == 'GLhalf' else 'false'
normalized) return "CopyToFloatVertexData<%s, %d, %d, %s, %s>" % (src_gl_type, num_channel, num_channel,
normalized, dst_is_half)
...@@ -41,8 +41,12 @@ void Copy8SnormTo16SnormVertexData(const uint8_t *input, ...@@ -41,8 +41,12 @@ void Copy8SnormTo16SnormVertexData(const uint8_t *input,
template <size_t inputComponentCount, size_t outputComponentCount> template <size_t inputComponentCount, size_t outputComponentCount>
void Copy32FixedTo32FVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output); void Copy32FixedTo32FVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
template <typename T, size_t inputComponentCount, size_t outputComponentCount, bool normalized> template <typename T,
void CopyTo32FVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output); size_t inputComponentCount,
size_t outputComponentCount,
bool normalized,
bool toHalf>
void CopyToFloatVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
template <size_t inputComponentCount, size_t outputComponentCount> template <size_t inputComponentCount, size_t outputComponentCount>
void Copy32FTo16FVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output); void Copy32FTo16FVertexData(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
...@@ -51,24 +55,24 @@ void CopyXYZ32FToXYZ9E5(const uint8_t *input, size_t stride, size_t count, uint8 ...@@ -51,24 +55,24 @@ void CopyXYZ32FToXYZ9E5(const uint8_t *input, size_t stride, size_t count, uint8
void CopyXYZ32FToX11Y11B10F(const uint8_t *input, size_t stride, size_t count, uint8_t *output); void CopyXYZ32FToX11Y11B10F(const uint8_t *input, size_t stride, size_t count, uint8_t *output);
template <bool isSigned, bool normalized, bool toFloat> template <bool isSigned, bool normalized, bool toFloat, bool toHalf>
void CopyXYZ10W2ToXYZW32FVertexData(const uint8_t *input, void CopyXYZ10W2ToXYZWFloatVertexData(const uint8_t *input,
size_t stride, size_t stride,
size_t count, size_t count,
uint8_t *output); uint8_t *output);
template <bool isSigned, bool normalized>
void CopyXYZ10ToXYZW32FVertexData(const uint8_t *input,
size_t stride,
size_t count,
uint8_t *output);
template <bool isSigned, bool normalized> template <bool isSigned, bool normalized, bool toHalf>
void CopyW2XYZ10ToXYZW32FVertexData(const uint8_t *input, void CopyXYZ10ToXYZWFloatVertexData(const uint8_t *input,
size_t stride, size_t stride,
size_t count, size_t count,
uint8_t *output); uint8_t *output);
template <bool isSigned, bool normalized, bool toHalf>
void CopyW2XYZ10ToXYZWFloatVertexData(const uint8_t *input,
size_t stride,
size_t count,
uint8_t *output);
} // namespace rx } // namespace rx
#include "copyvertex.inc.h" #include "copyvertex.inc.h"
......
...@@ -322,26 +322,30 @@ const VertexFormat *GetVertexFormatInfo_FL_9_3(angle::FormatID vertexFormatID) ...@@ -322,26 +322,30 @@ const VertexFormat *GetVertexFormatInfo_FL_9_3(angle::FormatID vertexFormatID)
// GL_UNSIGNED_SHORT -- un-normalized // GL_UNSIGNED_SHORT -- un-normalized
case angle::FormatID::R16_USCALED: case angle::FormatID::R16_USCALED:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32_FLOAT, static constexpr VertexFormat info(
&CopyTo32FVertexData<GLushort, 1, 2, false>); VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32_FLOAT,
&CopyToFloatVertexData<GLushort, 1, 2, false, false>);
return &info; return &info;
} }
case angle::FormatID::R16G16_USCALED: case angle::FormatID::R16G16_USCALED:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32_FLOAT, static constexpr VertexFormat info(
&CopyTo32FVertexData<GLushort, 2, 2, false>); VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32_FLOAT,
&CopyToFloatVertexData<GLushort, 2, 2, false, false>);
return &info; return &info;
} }
case angle::FormatID::R16G16B16_USCALED: case angle::FormatID::R16G16B16_USCALED:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32_FLOAT, static constexpr VertexFormat info(
&CopyTo32FVertexData<GLushort, 3, 3, false>); VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32_FLOAT,
&CopyToFloatVertexData<GLushort, 3, 3, false, false>);
return &info; return &info;
} }
case angle::FormatID::R16G16B16A16_USCALED: case angle::FormatID::R16G16B16A16_USCALED:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT, static constexpr VertexFormat info(
&CopyTo32FVertexData<GLushort, 4, 4, false>); VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT,
&CopyToFloatVertexData<GLushort, 4, 4, false, false>);
return &info; return &info;
} }
...@@ -349,25 +353,25 @@ const VertexFormat *GetVertexFormatInfo_FL_9_3(angle::FormatID vertexFormatID) ...@@ -349,25 +353,25 @@ const VertexFormat *GetVertexFormatInfo_FL_9_3(angle::FormatID vertexFormatID)
case angle::FormatID::R16_UNORM: case angle::FormatID::R16_UNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32_FLOAT, static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32_FLOAT,
&CopyTo32FVertexData<GLushort, 1, 2, true>); &CopyToFloatVertexData<GLushort, 1, 2, true, false>);
return &info; return &info;
} }
case angle::FormatID::R16G16_UNORM: case angle::FormatID::R16G16_UNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32_FLOAT, static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32_FLOAT,
&CopyTo32FVertexData<GLushort, 2, 2, true>); &CopyToFloatVertexData<GLushort, 2, 2, true, false>);
return &info; return &info;
} }
case angle::FormatID::R16G16B16_UNORM: case angle::FormatID::R16G16B16_UNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32_FLOAT, static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32_FLOAT,
&CopyTo32FVertexData<GLushort, 3, 3, true>); &CopyToFloatVertexData<GLushort, 3, 3, true, false>);
return &info; return &info;
} }
case angle::FormatID::R16G16B16A16_UNORM: case angle::FormatID::R16G16B16A16_UNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT, static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT,
&CopyTo32FVertexData<GLushort, 4, 4, true>); &CopyToFloatVertexData<GLushort, 4, 4, true, false>);
return &info; return &info;
} }
...@@ -652,25 +656,25 @@ const VertexFormat &GetVertexFormatInfo(angle::FormatID vertexFormatID, ...@@ -652,25 +656,25 @@ const VertexFormat &GetVertexFormatInfo(angle::FormatID vertexFormatID,
case angle::FormatID::R32_SNORM: case angle::FormatID::R32_SNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32_FLOAT, static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32_FLOAT,
&CopyTo32FVertexData<GLint, 1, 1, true>); &CopyToFloatVertexData<GLint, 1, 1, true, false>);
return info; return info;
} }
case angle::FormatID::R32G32_SNORM: case angle::FormatID::R32G32_SNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32_FLOAT, static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32_FLOAT,
&CopyTo32FVertexData<GLint, 2, 2, true>); &CopyToFloatVertexData<GLint, 2, 2, true, false>);
return info; return info;
} }
case angle::FormatID::R32G32B32_SNORM: case angle::FormatID::R32G32B32_SNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32_FLOAT, static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32_FLOAT,
&CopyTo32FVertexData<GLint, 3, 3, true>); &CopyToFloatVertexData<GLint, 3, 3, true, false>);
return info; return info;
} }
case angle::FormatID::R32G32B32A32_SNORM: case angle::FormatID::R32G32B32A32_SNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT, static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT,
&CopyTo32FVertexData<GLint, 4, 4, true>); &CopyToFloatVertexData<GLint, 4, 4, true, false>);
return info; return info;
} }
...@@ -704,25 +708,25 @@ const VertexFormat &GetVertexFormatInfo(angle::FormatID vertexFormatID, ...@@ -704,25 +708,25 @@ const VertexFormat &GetVertexFormatInfo(angle::FormatID vertexFormatID,
case angle::FormatID::R32_UNORM: case angle::FormatID::R32_UNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32_FLOAT, static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32_FLOAT,
&CopyTo32FVertexData<GLuint, 1, 1, true>); &CopyToFloatVertexData<GLuint, 1, 1, true, false>);
return info; return info;
} }
case angle::FormatID::R32G32_UNORM: case angle::FormatID::R32G32_UNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32_FLOAT, static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32_FLOAT,
&CopyTo32FVertexData<GLuint, 2, 2, true>); &CopyToFloatVertexData<GLuint, 2, 2, true, false>);
return info; return info;
} }
case angle::FormatID::R32G32B32_UNORM: case angle::FormatID::R32G32B32_UNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32_FLOAT, static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32_FLOAT,
&CopyTo32FVertexData<GLuint, 3, 3, true>); &CopyToFloatVertexData<GLuint, 3, 3, true, false>);
return info; return info;
} }
case angle::FormatID::R32G32B32A32_UNORM: case angle::FormatID::R32G32B32A32_UNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT, static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT,
&CopyTo32FVertexData<GLuint, 4, 4, true>); &CopyToFloatVertexData<GLuint, 4, 4, true, false>);
return info; return info;
} }
...@@ -807,22 +811,25 @@ const VertexFormat &GetVertexFormatInfo(angle::FormatID vertexFormatID, ...@@ -807,22 +811,25 @@ const VertexFormat &GetVertexFormatInfo(angle::FormatID vertexFormatID,
// GL_INT_2_10_10_10_REV // GL_INT_2_10_10_10_REV
case angle::FormatID::R10G10B10A2_SSCALED: case angle::FormatID::R10G10B10A2_SSCALED:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT, static constexpr VertexFormat info(
&CopyXYZ10W2ToXYZW32FVertexData<true, false, true>); VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT,
&CopyXYZ10W2ToXYZWFloatVertexData<true, false, true, false>);
return info; return info;
} }
case angle::FormatID::R10G10B10A2_SNORM: case angle::FormatID::R10G10B10A2_SNORM:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT, static constexpr VertexFormat info(
&CopyXYZ10W2ToXYZW32FVertexData<true, true, true>); VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT,
&CopyXYZ10W2ToXYZWFloatVertexData<true, true, true, false>);
return info; return info;
} }
// GL_UNSIGNED_INT_2_10_10_10_REV // GL_UNSIGNED_INT_2_10_10_10_REV
case angle::FormatID::R10G10B10A2_USCALED: case angle::FormatID::R10G10B10A2_USCALED:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT, static constexpr VertexFormat info(
&CopyXYZ10W2ToXYZW32FVertexData<false, false, true>); VERTEX_CONVERT_CPU, DXGI_FORMAT_R32G32B32A32_FLOAT,
&CopyXYZ10W2ToXYZWFloatVertexData<false, false, true, false>);
return info; return info;
} }
case angle::FormatID::R10G10B10A2_UNORM: case angle::FormatID::R10G10B10A2_UNORM:
...@@ -995,8 +1002,9 @@ const VertexFormat &GetVertexFormatInfo(angle::FormatID vertexFormatID, ...@@ -995,8 +1002,9 @@ const VertexFormat &GetVertexFormatInfo(angle::FormatID vertexFormatID,
// GL_INT_2_10_10_10_REV // GL_INT_2_10_10_10_REV
case angle::FormatID::R10G10B10A2_SINT: case angle::FormatID::R10G10B10A2_SINT:
{ {
static constexpr VertexFormat info(VERTEX_CONVERT_CPU, DXGI_FORMAT_R16G16B16A16_SINT, static constexpr VertexFormat info(
&CopyXYZ10W2ToXYZW32FVertexData<true, true, false>); VERTEX_CONVERT_CPU, DXGI_FORMAT_R16G16B16A16_SINT,
&CopyXYZ10W2ToXYZWFloatVertexData<true, true, false, false>);
return info; return info;
} }
......
...@@ -205,7 +205,8 @@ def get_vertex_copy_function_and_default_alpha(src_format, dst_format): ...@@ -205,7 +205,8 @@ def get_vertex_copy_function_and_default_alpha(src_format, dst_format):
' not to ' + dst_format) ' not to ' + dst_format)
is_signed = 'true' if 'SINT' in src_format or 'SNORM' in src_format or 'SSCALED' in src_format else 'false' is_signed = 'true' if 'SINT' in src_format or 'SNORM' in src_format or 'SSCALED' in src_format else 'false'
is_normal = 'true' if 'NORM' in src_format else 'false' is_normal = 'true' if 'NORM' in src_format else 'false'
return 'CopyXYZ10W2ToXYZW32FVertexData<%s, %s, true>' % (is_signed, is_normal), 0, "false" return 'CopyXYZ10W2ToXYZWFloatVertexData<%s, %s, true, false>' % (is_signed,
is_normal), 0, "false"
return angle_format_utils.get_vertex_copy_function(src_format, dst_format), 0, "false" return angle_format_utils.get_vertex_copy_function(src_format, dst_format), 0, "false"
...@@ -287,8 +288,8 @@ def gen_image_map_switch_mac_case(angle_format, actual_angle_format_info, angle_ ...@@ -287,8 +288,8 @@ def gen_image_map_switch_mac_case(angle_format, actual_angle_format_info, angle_
mtl_format_fallback=angle_to_mtl_map[actual_angle_format_fallback], mtl_format_fallback=angle_to_mtl_map[actual_angle_format_fallback],
init_function_fallback=angle_format_utils.get_internal_format_initializer( init_function_fallback=angle_format_utils.get_internal_format_initializer(
gl_format, actual_angle_format_fallback), gl_format, actual_angle_format_fallback),
fallback_condition="metalDevice.depth24Stencil8PixelFormatSupported && \ fallback_condition=("metalDevice.depth24Stencil8PixelFormatSupported && " +
!display->getFeatures().forceD24S8AsUnsupported.enabled") "!display->getFeatures().forceD24S8AsUnsupported.enabled"))
else: else:
# return ordinary block: # return ordinary block:
return image_format_assign_template1.format( return image_format_assign_template1.format(
......
...@@ -14,7 +14,7 @@ static char gDefaultMetallibSrc[] = R"( ...@@ -14,7 +14,7 @@ static char gDefaultMetallibSrc[] = R"(
# 1 "temp_master_source.metal" # 1 "temp_master_source.metal"
# 1 "<built-in>" 1 # 1 "<built-in>" 1
# 1 "<built-in>" 3 # 1 "<built-in>" 3
# 367 "<built-in>" 3 # 384 "<built-in>" 3
# 1 "<command line>" 1 # 1 "<command line>" 1
# 1 "<built-in>" 2 # 1 "<built-in>" 2
# 1 "temp_master_source.metal" 2 # 1 "temp_master_source.metal" 2
......
...@@ -115,10 +115,6 @@ uint32_t GetConvertVertexFlags(const UtilsVk::ConvertVertexParameters &params) ...@@ -115,10 +115,6 @@ uint32_t GetConvertVertexFlags(const UtilsVk::ConvertVertexParameters &params)
// Note that HalfFloat conversion uses the same shader as Uint. // Note that HalfFloat conversion uses the same shader as Uint.
flags = ConvertVertex_comp::kUintToUint; flags = ConvertVertex_comp::kUintToUint;
} }
else if (srcIsFloat && destIsHalfFloat)
{
flags = ConvertVertex_comp::kFloatToHalf;
}
else if (srcIsSint && destIsSint) else if (srcIsSint && destIsSint)
{ {
flags = ConvertVertex_comp::kSintToSint; flags = ConvertVertex_comp::kSintToSint;
...@@ -1844,7 +1840,6 @@ angle::Result UtilsVk::convertVertexBuffer(ContextVk *contextVk, ...@@ -1844,7 +1840,6 @@ angle::Result UtilsVk::convertVertexBuffer(ContextVk *contextVk,
shaderParams.srcEmulatedAlpha = 0x10000; shaderParams.srcEmulatedAlpha = 0x10000;
break; break;
case ConvertVertex_comp::kFloatToHalf:
case ConvertVertex_comp::kFloatToFloat: case ConvertVertex_comp::kFloatToFloat:
ASSERT(ValidateFloatOneAsUint()); ASSERT(ValidateFloatOneAsUint());
shaderParams.srcEmulatedAlpha = kFloatOneAsUint; shaderParams.srcEmulatedAlpha = kFloatOneAsUint;
......
...@@ -147,7 +147,9 @@ def get_vertex_copy_function(src_format, dst_format, vk_format): ...@@ -147,7 +147,9 @@ def get_vertex_copy_function(src_format, dst_format, vk_format):
is_signed = 'false' if 'UINT' in src_format or 'UNORM' in src_format or 'USCALED' in src_format else 'true' is_signed = 'false' if 'UINT' in src_format or 'UNORM' in src_format or 'USCALED' in src_format else 'true'
normalized = 'true' if 'NORM' in src_format else 'false' normalized = 'true' if 'NORM' in src_format else 'false'
to_float = 'false' if 'INT' in src_format else 'true' to_float = 'false' if 'INT' in src_format else 'true'
return 'CopyXYZ10W2ToXYZW32FVertexData<%s, %s, %s>' % (is_signed, normalized, to_float) to_half = to_float
return 'CopyXYZ10W2ToXYZWFloatVertexData<%s, %s, %s, %s>' % (is_signed, normalized,
to_float, to_half)
return angle_format.get_vertex_copy_function(src_format, dst_format) return angle_format.get_vertex_copy_function(src_format, dst_format)
......
...@@ -46,20 +46,22 @@ ...@@ -46,20 +46,22 @@
// * UnormToFloat: Similar to UintToFloat, but normalized. // * UnormToFloat: Similar to UintToFloat, but normalized.
// * FixedToFloat: 16.16 signed fixed-point to floating point. // * FixedToFloat: 16.16 signed fixed-point to floating point.
// * FloatToFloat: float. // * FloatToFloat: float.
// * FloatToHalf: float to half-float
// //
// SintToSint, UintToUint and FloatToFloat correspond to CopyNativeVertexData() and // The *ToFloat conversions can convert to a half-precision float based on a parameter. When not
// Copy8SintTo16SintVertexData() in renderer/copyvertex.inc. // converting to half:
// //
// FixedToFloat corresponds to Copy32FixedTo32FVertexData. // - SintToSint, UintToUint and FloatToFloat correspond to CopyNativeVertexData() and
// Copy8SintTo16SintVertexData() in renderer/copyvertex.inc.
// //
// SintToFloat and UintToFloat correspond to CopyTo32FVertexData with normalized=false. // - FixedToFloat corresponds to Copy32FixedTo32FVertexData.
// //
// SnormToFloat and UnormToFloat correspond to CopyTo32FVertexData with normalized=true. // - SintToFloat and UintToFloat correspond to CopyToFloatVertexData with normalized=false.
// //
// If isSrcHDR, SintToSint, UintToUint, SintToFloat, UintToFloat and SnormToFloat // - SnormToFloat and UnormToFloat correspond to CopyToFloatVertexData with normalized=true.
// correspond to CopyXYZ10W2ToXYZW32FVertexData (if isSrcA2BGR10) or CopyW2XYZ10ToXYZW32FVertexData //
// (if !isSrcA2BGR10) with the proper options. // - If isSrcHDR, SintToSint, UintToUint, SintToFloat, UintToFloat and SnormToFloat correspond to
// CopyXYZ10W2ToXYZWFloatVertexData (if isSrcA2BGR10) or CopyW2XYZ10ToXYZWFloatVertexData (if
// !isSrcA2BGR10) with the proper options.
#version 450 core #version 450 core
...@@ -68,7 +70,7 @@ ...@@ -68,7 +70,7 @@
#define SrcType int #define SrcType int
#elif UintToUint || UintToFloat #elif UintToUint || UintToFloat
#define SrcType uint #define SrcType uint
#elif SnormToFloat || UnormToFloat || FixedToFloat || FloatToFloat || FloatToHalf #elif SnormToFloat || UnormToFloat || FixedToFloat || FloatToFloat
#define SrcType float #define SrcType float
#else #else
#error "Not all conversions are accounted for" #error "Not all conversions are accounted for"
...@@ -77,16 +79,10 @@ ...@@ -77,16 +79,10 @@
// Destination type // Destination type
#if SintToSint #if SintToSint
#define DestType int #define DestType int
#define IsDestFloat 0
#elif UintToUint #elif UintToUint
#define DestType uint #define DestType uint
#define IsDestFloat 0
#elif SintToFloat || UintToFloat || SnormToFloat || UnormToFloat || FixedToFloat || FloatToFloat #elif SintToFloat || UintToFloat || SnormToFloat || UnormToFloat || FixedToFloat || FloatToFloat
#define DestType float #define DestType float
#define IsDestFloat 1
#elif FloatToHalf
#define DestType float
#define IsDestFloat 0
#else #else
#error "Not all conversions are accounted for" #error "Not all conversions are accounted for"
#endif #endif
...@@ -134,8 +130,8 @@ layout (push_constant) uniform PushConstants ...@@ -134,8 +130,8 @@ layout (push_constant) uniform PushConstants
// other data from source is. // other data from source is.
uint srcEmulatedAlpha; uint srcEmulatedAlpha;
bool isSrcHDR; // Whether source is either of A2BGR10 or RGB10A2 bool isSrcHDR; // Whether source is either of A2BGR10 or RGB10A2
bool isSrcA2BGR10; // Whether source is A2BGR10 bool isSrcA2BGR10; // Whether source is A2BGR10
} params; } params;
// Define shorthands for more readable formulas: // Define shorthands for more readable formulas:
...@@ -144,8 +140,8 @@ layout (push_constant) uniform PushConstants ...@@ -144,8 +140,8 @@ layout (push_constant) uniform PushConstants
#define Nd params.Nd #define Nd params.Nd
#define Sd params.Sd #define Sd params.Sd
// With fixed-point and float types, Bs and Bd can only be 4, so they are hardcoded for more // With fixed-point and float types, Bs can only be 4, so it is hardcoded for more efficiency. The
// efficiency. // same is not true for Bd because it can be a half-float type.
#if FixedToFloat || FloatToFloat #if FixedToFloat || FloatToFloat
#define Bs 4 #define Bs 4
#define Es 1 #define Es 1
...@@ -154,13 +150,8 @@ layout (push_constant) uniform PushConstants ...@@ -154,13 +150,8 @@ layout (push_constant) uniform PushConstants
#define Es params.Es #define Es params.Es
#endif #endif
#if IsDestFloat
#define Bd 4
#define Ed 1
#else
#define Bd params.Bd #define Bd params.Bd
#define Ed params.Ed #define Ed params.Ed
#endif
uint getSourceComponentOffset(uint vertex, uint component) uint getSourceComponentOffset(uint vertex, uint component)
{ {
...@@ -288,7 +279,7 @@ SrcType loadSourceComponent(uint cd) ...@@ -288,7 +279,7 @@ SrcType loadSourceComponent(uint cd)
#elif FixedToFloat #elif FixedToFloat
float divisor = 1.0f / 65536.0f; float divisor = 1.0f / 65536.0f;
SrcType value = int(valueAsUint) * divisor; SrcType value = int(valueAsUint) * divisor;
#elif FloatToFloat || FloatToHalf #elif FloatToFloat
SrcType value = uintBitsToFloat(valueAsUint); SrcType value = uintBitsToFloat(valueAsUint);
#else #else
#error "Not all conversions are accounted for" #error "Not all conversions are accounted for"
...@@ -320,14 +311,19 @@ uint makeDestinationComponent(uint cd, DestType value) ...@@ -320,14 +311,19 @@ uint makeDestinationComponent(uint cd, DestType value)
uint valueMask = valueBits == 32 ? -1 : (1 << valueBits) - 1; uint valueMask = valueBits == 32 ? -1 : (1 << valueBits) - 1;
uint valueAsUint = (uint(value) & valueMask) << shiftBits; uint valueAsUint = (uint(value) & valueMask) << shiftBits;
#elif FloatToHalf #elif SintToFloat || UintToFloat || SnormToFloat || UnormToFloat || FixedToFloat || FloatToFloat
uint shift = ((cd & 1) == 0) ? 0 : 16; uint valueAsUint;
uint valueAsUint = packHalf2x16(vec2(value, 0.0)) << shift;
#elif IsDestFloat
// If the destination is float, it will occupy the whole result.
uint valueAsUint = floatBitsToInt(value);
if (Bd == 2)
{
// It's a half-precision float.
uint shift = ((cd & 1) == 0) ? 0 : 16;
valueAsUint = packHalf2x16(vec2(value, 0.0)) << shift;
}
else
{
valueAsUint = floatBitsToInt(value);
}
#else #else
#error "Not all conversions are accounted for" #error "Not all conversions are accounted for"
#endif #endif
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
[ "SnormToFloat", "-Od" ], [ "SnormToFloat", "-Od" ],
[ "UnormToFloat", "-Od" ], [ "UnormToFloat", "-Od" ],
[ "FixedToFloat", "-Od" ], [ "FixedToFloat", "-Od" ],
[ "FloatToFloat", "-Od" ], [ "FloatToFloat", "-Od" ]
[ "FloatToHalf", "-Od" ]
] ]
} }
...@@ -299,51 +299,51 @@ ...@@ -299,51 +299,51 @@
}, },
"A2R10G10B10_SINT_VERTEX": { "A2R10G10B10_SINT_VERTEX": {
"image": "NONE", "image": "NONE",
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"A2R10G10B10_UINT_VERTEX": { "A2R10G10B10_UINT_VERTEX": {
"image": "NONE", "image": "NONE",
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"A2R10G10B10_SSCALED_VERTEX": { "A2R10G10B10_SSCALED_VERTEX": {
"image": "NONE", "image": "NONE",
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"A2R10G10B10_USCALED_VERTEX": { "A2R10G10B10_USCALED_VERTEX": {
"image": "NONE", "image": "NONE",
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"A2R10G10B10_SNORM_VERTEX": { "A2R10G10B10_SNORM_VERTEX": {
"image": "NONE", "image": "NONE",
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"A2R10G10B10_UNORM_VERTEX": { "A2R10G10B10_UNORM_VERTEX": {
"image": "NONE", "image": "NONE",
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"X2R10G10B10_SINT_VERTEX": { "X2R10G10B10_SINT_VERTEX": {
"image": "NONE", "image": "NONE",
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"X2R10G10B10_USCALED_VERTEX": { "X2R10G10B10_USCALED_VERTEX": {
"image": "NONE", "image": "NONE",
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"X2R10G10B10_SSCALED_VERTEX": { "X2R10G10B10_SSCALED_VERTEX": {
"image": "NONE", "image": "NONE",
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"X2R10G10B10_UINT_VERTEX": { "X2R10G10B10_UINT_VERTEX": {
"image": "NONE", "image": "NONE",
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"X2R10G10B10_SNORM_VERTEX": { "X2R10G10B10_SNORM_VERTEX": {
"image": "NONE", "image": "NONE",
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"X2R10G10B10_UNORM_VERTEX": { "X2R10G10B10_UNORM_VERTEX": {
"image": "NONE", "image": "NONE",
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"D32_FLOAT_S8X24_UINT": { "D32_FLOAT_S8X24_UINT": {
"image": ["D24_UNORM_S8_UINT", "D32_FLOAT_S8X24_UINT"] "image": ["D24_UNORM_S8_UINT", "D32_FLOAT_S8X24_UINT"]
...@@ -390,16 +390,16 @@ ...@@ -390,16 +390,16 @@
"buffer": "R32G32B32_FLOAT" "buffer": "R32G32B32_FLOAT"
}, },
"R8G8B8A8_UNORM": { "R8G8B8A8_UNORM": {
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"R8G8B8A8_SNORM": { "R8G8B8A8_SNORM": {
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"R8G8B8A8_USCALED": { "R8G8B8A8_USCALED": {
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"R8G8B8A8_SSCALED": { "R8G8B8A8_SSCALED": {
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"R16_UNORM": { "R16_UNORM": {
...@@ -445,10 +445,12 @@ ...@@ -445,10 +445,12 @@
"buffer": "R32G32B32A32_FLOAT" "buffer": "R32G32B32A32_FLOAT"
}, },
"R16G16B16A16_USCALED": { "R16G16B16A16_USCALED": {
"buffer": "R32G32B32A32_FLOAT" "buffer": "R32G32B32A32_FLOAT",
"buffer_compressed": "R16G16B16A16_FLOAT"
}, },
"R16G16B16A16_SSCALED": { "R16G16B16A16_SSCALED": {
"buffer": "R32G32B32A32_FLOAT" "buffer": "R32G32B32A32_FLOAT",
"buffer_compressed": "R16G16B16A16_FLOAT"
}, },
"R32G32B32_UINT": { "R32G32B32_UINT": {
"image": "R32G32B32A32_UINT" "image": "R32G32B32A32_UINT"
...@@ -511,13 +513,13 @@ ...@@ -511,13 +513,13 @@
"image": ["R16G16_SNORM", "R16G16_FLOAT"] "image": ["R16G16_SNORM", "R16G16_FLOAT"]
}, },
"R10G10B10A2_SNORM": { "R10G10B10A2_SNORM": {
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"R10G10B10A2_USCALED": { "R10G10B10A2_USCALED": {
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"R10G10B10A2_SSCALED": { "R10G10B10A2_SSCALED": {
"buffer": "R32G32B32A32_FLOAT" "buffer": "R16G16B16A16_FLOAT"
}, },
"R10G10B10A2_UINT": { "R10G10B10A2_UINT": {
"buffer": "R16G16B16A16_UINT" "buffer": "R16G16B16A16_UINT"
......
...@@ -63,7 +63,6 @@ namespace ...@@ -63,7 +63,6 @@ namespace
#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000005.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000005.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000006.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000006.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000007.inc" #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000007.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/FullScreenQuad.vert.00000000.inc" #include "libANGLE/renderer/vulkan/shaders/gen/FullScreenQuad.vert.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000000.inc" #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000001.inc" #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000001.inc"
...@@ -224,7 +223,6 @@ constexpr CompressedShaderBlob kConvertVertex_comp_shaders[] = { ...@@ -224,7 +223,6 @@ constexpr CompressedShaderBlob kConvertVertex_comp_shaders[] = {
{kConvertVertex_comp_00000005, sizeof(kConvertVertex_comp_00000005)}, {kConvertVertex_comp_00000005, sizeof(kConvertVertex_comp_00000005)},
{kConvertVertex_comp_00000006, sizeof(kConvertVertex_comp_00000006)}, {kConvertVertex_comp_00000006, sizeof(kConvertVertex_comp_00000006)},
{kConvertVertex_comp_00000007, sizeof(kConvertVertex_comp_00000007)}, {kConvertVertex_comp_00000007, sizeof(kConvertVertex_comp_00000007)},
{kConvertVertex_comp_00000008, sizeof(kConvertVertex_comp_00000008)},
}; };
constexpr CompressedShaderBlob kFullScreenQuad_vert_shaders[] = { constexpr CompressedShaderBlob kFullScreenQuad_vert_shaders[] = {
{kFullScreenQuad_vert_00000000, sizeof(kFullScreenQuad_vert_00000000)}, {kFullScreenQuad_vert_00000000, sizeof(kFullScreenQuad_vert_00000000)},
......
...@@ -53,7 +53,6 @@ angle_vulkan_internal_shaders = [ ...@@ -53,7 +53,6 @@ angle_vulkan_internal_shaders = [
"shaders/gen/ConvertVertex.comp.00000005.inc", "shaders/gen/ConvertVertex.comp.00000005.inc",
"shaders/gen/ConvertVertex.comp.00000006.inc", "shaders/gen/ConvertVertex.comp.00000006.inc",
"shaders/gen/ConvertVertex.comp.00000007.inc", "shaders/gen/ConvertVertex.comp.00000007.inc",
"shaders/gen/ConvertVertex.comp.00000008.inc",
"shaders/gen/FullScreenQuad.vert.00000000.inc", "shaders/gen/FullScreenQuad.vert.00000000.inc",
"shaders/gen/GenerateMipmap.comp.00000000.inc", "shaders/gen/GenerateMipmap.comp.00000000.inc",
"shaders/gen/GenerateMipmap.comp.00000001.inc", "shaders/gen/GenerateMipmap.comp.00000001.inc",
......
...@@ -86,9 +86,8 @@ enum Conversion ...@@ -86,9 +86,8 @@ enum Conversion
kUnormToFloat = 0x00000005, kUnormToFloat = 0x00000005,
kFixedToFloat = 0x00000006, kFixedToFloat = 0x00000006,
kFloatToFloat = 0x00000007, kFloatToFloat = 0x00000007,
kFloatToHalf = 0x00000008,
}; };
constexpr size_t kArrayLen = 0x00000009; constexpr size_t kArrayLen = 0x00000008;
} // namespace ConvertVertex_comp } // namespace ConvertVertex_comp
namespace FullScreenQuad_vert namespace FullScreenQuad_vert
......
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