Replace D24_UNORM with a packed version.
Adding an explicit X8 channel packs the format into 32 bits. This gives
the correct 4-byte alignment instead of a mysterious 3-byte version.
Bug: angleproject:2729
Change-Id: Id38f74db4ba61c500baeb6526a9d14e1d31d4363
Reviewed-on: https://chromium-review.googlesource.com/1140739
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/scripts/run_code_generation_hashes.json b/scripts/run_code_generation_hashes.json
index 9e7d05e..0a30e8a 100644
--- a/scripts/run_code_generation_hashes.json
+++ b/scripts/run_code_generation_hashes.json
@@ -4,7 +4,7 @@
"ANGLE format:src/libANGLE/renderer/angle_format_data.json":
"1ab73531d2d9655e669b5560fb43c698",
"ANGLE format:src/libANGLE/renderer/angle_format_map.json":
- "82d80c3be2cdfcc17aec07cf2223907f",
+ "ea6dfe3ebbc86e04f0d4b9f568ba22ae",
"ANGLE format:src/libANGLE/renderer/gen_angle_format_table.py":
"dcb81c64e2c89f57a7105ab07ef0ffd0",
"ANGLE load functions table:src/libANGLE/renderer/gen_load_functions_table.py":
@@ -26,7 +26,7 @@
"DXGI format:src/libANGLE/renderer/angle_format.py":
"b18ca0fe4835114a4a2f54977b19e798",
"DXGI format:src/libANGLE/renderer/angle_format_map.json":
- "82d80c3be2cdfcc17aec07cf2223907f",
+ "ea6dfe3ebbc86e04f0d4b9f568ba22ae",
"DXGI format:src/libANGLE/renderer/d3d/d3d11/dxgi_format_data.json":
"24f525b05dc665fbbc8c6d68fb863719",
"DXGI format:src/libANGLE/renderer/d3d/d3d11/gen_dxgi_format_table.py":
@@ -64,7 +64,7 @@
"Vulkan format:src/libANGLE/renderer/angle_format.py":
"b18ca0fe4835114a4a2f54977b19e798",
"Vulkan format:src/libANGLE/renderer/angle_format_map.json":
- "82d80c3be2cdfcc17aec07cf2223907f",
+ "ea6dfe3ebbc86e04f0d4b9f568ba22ae",
"Vulkan format:src/libANGLE/renderer/vulkan/gen_vk_format_table.py":
"2ecc99c12cd41bda7107a7d9ffe3786c",
"Vulkan format:src/libANGLE/renderer/vulkan/vk_format_map.json":
diff --git a/src/libANGLE/renderer/Format_ID_autogen.inl b/src/libANGLE/renderer/Format_ID_autogen.inl
index 17466c4..18a5b54 100644
--- a/src/libANGLE/renderer/Format_ID_autogen.inl
+++ b/src/libANGLE/renderer/Format_ID_autogen.inl
@@ -62,8 +62,8 @@
BC3_RGBA_UNORM_BLOCK,
BC3_RGBA_UNORM_SRGB_BLOCK,
D16_UNORM,
- D24_UNORM,
D24_UNORM_S8_UINT,
+ D24_UNORM_X8_UINT,
D32_FLOAT,
D32_FLOAT_S8X24_UINT,
D32_UNORM,
diff --git a/src/libANGLE/renderer/Format_table_autogen.cpp b/src/libANGLE/renderer/Format_table_autogen.cpp
index 70566a6..8cb4dc2 100644
--- a/src/libANGLE/renderer/Format_table_autogen.cpp
+++ b/src/libANGLE/renderer/Format_table_autogen.cpp
@@ -74,8 +74,8 @@
{ Format::ID::BC3_RGBA_UNORM_BLOCK, GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE, GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 0, 0, 0, 0, 0, 0, 0, true },
{ Format::ID::BC3_RGBA_UNORM_SRGB_BLOCK, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 0, 0, 0, 0, 0, 0, 0, true },
{ Format::ID::D16_UNORM, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT16, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 0, 0, 0, 0, 16, 0, 2, false },
- { Format::ID::D24_UNORM, GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT24, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 0, 0, 0, 0, 24, 0, 3, false },
{ Format::ID::D24_UNORM_S8_UINT, GL_DEPTH24_STENCIL8, GL_DEPTH24_STENCIL8, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 0, 0, 0, 0, 24, 8, 4, false },
+ { Format::ID::D24_UNORM_X8_UINT, GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT24, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 0, 0, 0, 0, 24, 0, 4, false },
{ Format::ID::D32_FLOAT, GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT32F, nullptr, NoCopyFunctions, nullptr, nullptr, GL_FLOAT, 0, 0, 0, 0, 32, 0, 4, false },
{ Format::ID::D32_FLOAT_S8X24_UINT, GL_DEPTH32F_STENCIL8, GL_DEPTH32F_STENCIL8, nullptr, NoCopyFunctions, nullptr, nullptr, GL_FLOAT, 0, 0, 0, 0, 32, 8, 8, false },
{ Format::ID::D32_UNORM, GL_DEPTH_COMPONENT32_OES, GL_DEPTH_COMPONENT32_OES, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 0, 0, 0, 0, 32, 0, 4, false },
@@ -328,7 +328,7 @@
case GL_DEPTH_COMPONENT16:
return Format::ID::D16_UNORM;
case GL_DEPTH_COMPONENT24:
- return Format::ID::D24_UNORM;
+ return Format::ID::D24_UNORM_X8_UINT;
case GL_DEPTH_COMPONENT32F:
return Format::ID::D32_FLOAT;
case GL_DEPTH_COMPONENT32_OES:
diff --git a/src/libANGLE/renderer/angle_format_map.json b/src/libANGLE/renderer/angle_format_map.json
index 76d2d1a..d601fac 100644
--- a/src/libANGLE/renderer/angle_format_map.json
+++ b/src/libANGLE/renderer/angle_format_map.json
@@ -57,7 +57,7 @@
[ "GL_DEPTH24_STENCIL8", "D24_UNORM_S8_UINT" ],
[ "GL_DEPTH32F_STENCIL8", "D32_FLOAT_S8X24_UINT" ],
[ "GL_DEPTH_COMPONENT16", "D16_UNORM" ],
- [ "GL_DEPTH_COMPONENT24", "D24_UNORM" ],
+ [ "GL_DEPTH_COMPONENT24", "D24_UNORM_X8_UINT" ],
[ "GL_DEPTH_COMPONENT32F", "D32_FLOAT" ],
[ "GL_DEPTH_COMPONENT32_OES", "D32_UNORM" ],
[ "GL_ETC1_RGB8_OES", "ETC1_R8G8B8_UNORM_BLOCK" ],
diff --git a/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp b/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp
index 362e95e..7d9ed48 100644
--- a/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp
+++ b/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp
@@ -478,10 +478,6 @@
vertexLoadRequiresConversion = false;
break;
- case angle::Format::ID::D24_UNORM:
- // This format is not implemented in Vulkan.
- break;
-
case angle::Format::ID::D24_UNORM_S8_UINT:
internalFormat = GL_DEPTH24_STENCIL8;
initTextureFallback(physicalDevice, angle::Format::ID::D24_UNORM_S8_UINT,
@@ -494,6 +490,10 @@
vertexLoadRequiresConversion = false;
break;
+ case angle::Format::ID::D24_UNORM_X8_UINT:
+ // This format is not implemented in Vulkan.
+ break;
+
case angle::Format::ID::D32_FLOAT:
internalFormat = GL_DEPTH_COMPONENT32F;
textureFormatID = angle::Format::ID::D32_FLOAT;