Vulkan: Refactor format table.
This moves the Vulkan format table to dynamically generated, but
keeps it easily indexed. Because Vulkan format support is not able
to be fully determined until runtime, we'll need a dynamic way to
build the table. The most straight-forward way seems to be to keep
a copy of the full table in the Renderer. Initializing it once at
startup makes it a bit slower to init, but saves us from any threading
shenanigans with lazy init when (and if) we ever support multi-
threaded Contexts.
BUG=angleproject:2207
Change-Id: Ib1ac879daa562c7ad1a965390be401fa2314e42c
Reviewed-on: https://chromium-review.googlesource.com/742374
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/RendererVk.cpp b/src/libANGLE/renderer/vulkan/RendererVk.cpp
index 494d624..d81b215 100644
--- a/src/libANGLE/renderer/vulkan/RendererVk.cpp
+++ b/src/libANGLE/renderer/vulkan/RendererVk.cpp
@@ -343,6 +343,9 @@
mGlslangWrapper = GlslangWrapper::GetReference();
+ // Initialize the format table.
+ mFormatTable.initialize(mPhysicalDevice, &mNativeTextureCaps);
+
return vk::NoError();
}
diff --git a/src/libANGLE/renderer/vulkan/RendererVk.h b/src/libANGLE/renderer/vulkan/RendererVk.h
index a54cc5e..306579b 100644
--- a/src/libANGLE/renderer/vulkan/RendererVk.h
+++ b/src/libANGLE/renderer/vulkan/RendererVk.h
@@ -15,6 +15,7 @@
#include "common/angleutils.h"
#include "libANGLE/Caps.h"
+#include "libANGLE/renderer/vulkan/formatutilsvk.h"
#include "libANGLE/renderer/vulkan/renderervk_utils.h"
namespace egl
@@ -105,6 +106,12 @@
// This is necessary to update the cached current RenderPass Framebuffer.
void onReleaseRenderPass(const FramebufferVk *framebufferVk);
+ // TODO(jmadill): We could pass angle::Format::ID here.
+ const vk::Format &getFormat(GLenum internalFormat) const
+ {
+ return mFormatTable[internalFormat];
+ }
+
private:
void ensureCapsInitialized() const;
void generateCaps(gl::Caps *outCaps,
@@ -143,6 +150,7 @@
std::vector<vk::FenceAndSerial> mInFlightFences;
std::vector<vk::GarbageObject> mGarbage;
vk::MemoryProperties mMemoryProperties;
+ vk::FormatTable mFormatTable;
// TODO(jmadill): Don't keep a single renderpass in the Renderer.
FramebufferVk *mCurrentRenderPassFramebuffer;
diff --git a/src/libANGLE/renderer/vulkan/SurfaceVk.cpp b/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
index 5ac4b4f..ff29b81 100644
--- a/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
+++ b/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
@@ -24,10 +24,10 @@
namespace
{
-const vk::Format &GetVkFormatFromConfig(const egl::Config &config)
+const vk::Format &GetVkFormatFromConfig(RendererVk *renderer, const egl::Config &config)
{
// TODO(jmadill): Properly handle format interpretation.
- return vk::Format::Get(GL_BGRA8_EXT);
+ return renderer->getFormat(GL_BGRA8_EXT);
}
VkPresentModeKHR GetDesiredPresentMode(const std::vector<VkPresentModeKHR> &presentModes,
@@ -301,7 +301,7 @@
ANGLE_VK_TRY(vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, mSurface, &surfaceFormatCount,
surfaceFormats.data()));
- mRenderTarget.format = &GetVkFormatFromConfig(*mState.config);
+ mRenderTarget.format = &GetVkFormatFromConfig(renderer, *mState.config);
auto nativeFormat = mRenderTarget.format->native;
if (surfaceFormatCount == 1u && surfaceFormats[0].format == VK_FORMAT_UNDEFINED)
@@ -345,7 +345,7 @@
swapchainInfo.clipped = VK_TRUE;
swapchainInfo.oldSwapchain = VK_NULL_HANDLE;
- const auto &device = renderer->getDevice();
+ VkDevice device = renderer->getDevice();
ANGLE_VK_TRY(vkCreateSwapchainKHR(device, &swapchainInfo, nullptr, &mSwapchain));
// Intialize the swapchain image views.
diff --git a/src/libANGLE/renderer/vulkan/TextureVk.cpp b/src/libANGLE/renderer/vulkan/TextureVk.cpp
index 9553972..81b7d6f 100644
--- a/src/libANGLE/renderer/vulkan/TextureVk.cpp
+++ b/src/libANGLE/renderer/vulkan/TextureVk.cpp
@@ -51,6 +51,7 @@
{
ContextVk *contextVk = vk::GetImpl(context);
RendererVk *renderer = contextVk->getRenderer();
+ VkDevice device = contextVk->getDevice();
// TODO(jmadill): support multi-level textures.
ASSERT(level == 0);
@@ -74,9 +75,7 @@
// Convert internalFormat to sized internal format.
const gl::InternalFormat &formatInfo = gl::GetInternalFormatInfo(internalFormat, type);
- const vk::Format &vkFormat = vk::Format::Get(formatInfo.sizedInternalFormat);
-
- VkDevice device = contextVk->getDevice();
+ const vk::Format &vkFormat = renderer->getFormat(formatInfo.sizedInternalFormat);
if (!mImage.valid())
{
@@ -203,7 +202,7 @@
formatInfo.computeSkipBytes(inputRowPitch, inputDepthPitch, unpack, applySkipImages),
inputSkipBytes);
- auto loadFunction = vkFormat.getLoadFunctions()(type);
+ auto loadFunction = vkFormat.loadFunctions(type);
uint8_t *mapPointer = nullptr;
ANGLE_TRY(stagingImage.getDeviceMemory().map(device, 0, VK_WHOLE_SIZE, 0, &mapPointer));
diff --git a/src/libANGLE/renderer/vulkan/formatutilsvk.cpp b/src/libANGLE/renderer/vulkan/formatutilsvk.cpp
index 2f59c10..281e2c3 100644
--- a/src/libANGLE/renderer/vulkan/formatutilsvk.cpp
+++ b/src/libANGLE/renderer/vulkan/formatutilsvk.cpp
@@ -16,14 +16,45 @@
namespace vk
{
+Format::Format()
+ : internalFormat(GL_NONE),
+ formatID(angle::Format::ID::NONE),
+ native(VK_FORMAT_UNDEFINED),
+ dataInitializerFunction(nullptr),
+ loadFunctions()
+{
+}
+
const angle::Format &Format::format() const
{
return angle::Format::Get(formatID);
}
-LoadFunctionMap Format::getLoadFunctions() const
+FormatTable::FormatTable()
{
- return GetLoadFunctionsMap(internalFormat, formatID);
+}
+
+FormatTable::~FormatTable()
+{
+}
+
+void FormatTable::initialize(VkPhysicalDevice physicalDevice, gl::TextureCapsMap *textureCapsMap)
+{
+ for (size_t formatIndex = 0; formatIndex < angle::kNumANGLEFormats; ++formatIndex)
+ {
+ angle::Format::ID formatID = static_cast<angle::Format::ID>(formatIndex);
+ const angle::Format &angleFormat = angle::Format::Get(formatID);
+ mFormatData[formatIndex].initialize(physicalDevice, angleFormat);
+
+ mFormatData[formatIndex].loadFunctions =
+ GetLoadFunctionsMap(mFormatData[formatIndex].internalFormat, formatID);
+ }
+}
+
+const Format &FormatTable::operator[](GLenum internalFormat) const
+{
+ angle::Format::ID formatID = angle::Format::InternalFormatToID(internalFormat);
+ return mFormatData[static_cast<size_t>(formatID)];
}
// TODO(jmadill): This is temporary. Figure out how to handle format conversions.
diff --git a/src/libANGLE/renderer/vulkan/formatutilsvk.h b/src/libANGLE/renderer/vulkan/formatutilsvk.h
index 7dae0ef..f88d6e2 100644
--- a/src/libANGLE/renderer/vulkan/formatutilsvk.h
+++ b/src/libANGLE/renderer/vulkan/formatutilsvk.h
@@ -11,9 +11,17 @@
#include <vulkan/vulkan.h>
+#include "libANGLE/formatutils.h"
#include "libANGLE/renderer/Format.h"
#include "libANGLE/renderer/renderer_utils.h"
+#include <array>
+
+namespace gl
+{
+class TextureCapsMap;
+} // namespace gl
+
namespace rx
{
@@ -22,32 +30,35 @@
struct Format final : private angle::NonCopyable
{
- constexpr Format(GLenum internalFormat,
- angle::Format::ID formatID,
- VkFormat native,
- InitializeTextureDataFunction initFunction);
+ Format();
- static const Format &Get(GLenum internalFormat);
+ // This is an auto-generated method in vk_format_table_autogen.cpp.
+ void initialize(VkPhysicalDevice physicalDevice, const angle::Format &angleFormat);
const angle::Format &format() const;
- LoadFunctionMap getLoadFunctions() const;
GLenum internalFormat;
angle::Format::ID formatID;
VkFormat native;
InitializeTextureDataFunction dataInitializerFunction;
+ LoadFunctionMap loadFunctions;
};
-constexpr Format::Format(GLenum internalFormat,
- angle::Format::ID formatID,
- VkFormat native,
- InitializeTextureDataFunction initFunction)
- : internalFormat(internalFormat),
- formatID(formatID),
- native(native),
- dataInitializerFunction(initFunction)
+class FormatTable final : angle::NonCopyable
{
-}
+ public:
+ FormatTable();
+ ~FormatTable();
+
+ // Also initializes the TextureCapsMap.
+ void initialize(VkPhysicalDevice physicalDevice, gl::TextureCapsMap *textureCapsMap);
+
+ const Format &operator[](GLenum internalFormat) const;
+
+ private:
+ // The table data is indexed by angle::Format::ID.
+ std::array<Format, angle::kNumANGLEFormats> mFormatData;
+};
// TODO(jmadill): This is temporary. Figure out how to handle format conversions.
VkFormat GetNativeVertexFormat(gl::VertexFormatType vertexFormat);
diff --git a/src/libANGLE/renderer/vulkan/gen_vk_format_table.py b/src/libANGLE/renderer/vulkan/gen_vk_format_table.py
index 38e7c58..a62d1f8 100644
--- a/src/libANGLE/renderer/vulkan/gen_vk_format_table.py
+++ b/src/libANGLE/renderer/vulkan/gen_vk_format_table.py
@@ -41,21 +41,15 @@
namespace vk
{{
-// static
-const Format &Format::Get(GLenum internalFormat)
+void Format::initialize(VkPhysicalDevice physicalDevice, const angle::Format &angleFormat)
{{
- // clang-format off
- switch (internalFormat)
+ switch (angleFormat.id)
{{
{format_case_data}
default:
+ UNREACHABLE();
break;
}}
- // clang-format on
-
- UNREACHABLE();
- static const Format noInfo(GL_NONE, angle::Format::ID::NONE, VK_FORMAT_UNDEFINED, nullptr);
- return noInfo;
}}
}} // namespace vk
@@ -63,57 +57,49 @@
}} // namespace rx
"""
-format_entry_template = """{space}{{
-{space} static constexpr Format info({internalFormat},
-{space} angle::Format::ID::{formatName},
-{space} {vkFormat},
-{space} {initializer});
-{space} return info;
+empty_format_entry_template = """{space}case angle::Format::ID::{formatName}:
+{space} // This format is not implemented in Vulkan.
+{space} break;
+"""
+
+format_entry_template = """{space}case angle::Format::ID::{formatName}:
+{space}{{
+{space} internalFormat = {internalFormat};
+{space} formatID = angle::Format::ID::{formatName};
+{space} native = {vkFormat};
+{space} dataInitializerFunction = {initializer};
+{space} break;
{space}}}
"""
-def parse_format_case(internal_format, format_name, native_format):
+def gen_format_case(angle, internal_format, vk_map):
- table_data = ""
+ if angle not in vk_map or angle == 'NONE':
+ return empty_format_entry_template.format(
+ space = ' ',
+ formatName = angle)
- parsed = {
- "space": " ",
- "internalFormat": internal_format,
- "formatName": format_name,
- "vkFormat": native_format,
- }
+ vk_format_name = vk_map[angle]
+ initializer = angle_format.get_internal_format_initializer(
+ internal_format, vk_format_name)
- # Derived values.
- parsed["initializer"] = angle_format.get_internal_format_initializer(
- internal_format, format_name)
-
- return format_entry_template.format(**parsed)
-
-def parse_json_into_cases(json_map, vk_map):
- table_data = ''
-
- for internal_format, format_name in sorted(json_map.iteritems()):
-
- if format_name not in vk_map:
- continue
-
- native_format = vk_map[format_name]
-
- table_data += ' case ' + internal_format + ':\n'
- table_data += parse_format_case(internal_format, format_name, native_format)
-
- return table_data
+ return format_entry_template.format(
+ space = ' ',
+ internalFormat = internal_format,
+ formatName = angle,
+ vkFormat = vk_format_name,
+ initializer = initializer)
input_file_name = 'vk_format_map.json'
out_file_name = 'vk_format_table'
-json_map = angle_format.load_without_override()
+angle_to_gl = angle_format.load_inverse_table(os.path.join('..', 'angle_format_map.json'))
vk_map = angle_format.load_json(input_file_name)
+vk_cases = [gen_format_case(angle, gl, vk_map) for angle, gl in sorted(angle_to_gl.iteritems())]
-format_case_data = parse_json_into_cases(json_map, vk_map)
output_cpp = template_table_autogen_cpp.format(
copyright_year = date.today().year,
- format_case_data = format_case_data,
+ format_case_data = "\n".join(vk_cases),
script_name = __file__,
out_file_name = out_file_name,
input_file_name = input_file_name)
diff --git a/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp b/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp
index f2039a7..6975504 100644
--- a/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp
+++ b/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp
@@ -22,845 +22,1004 @@
namespace vk
{
-// static
-const Format &Format::Get(GLenum internalFormat)
+void Format::initialize(VkPhysicalDevice physicalDevice, const angle::Format &angleFormat)
{
- // clang-format off
- switch (internalFormat)
+ switch (angleFormat.id)
{
- case GL_BGR565_ANGLEX:
+ case angle::Format::ID::A16_FLOAT:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::A32_FLOAT:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::A8_UNORM:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::ASTC_10x10_SRGB_BLOCK:
{
- static constexpr Format info(GL_BGR565_ANGLEX,
- angle::Format::ID::B5G6R5_UNORM,
- VK_FORMAT_B5G6R5_UNORM_PACK16,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR;
+ formatID = angle::Format::ID::ASTC_10x10_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_10x10_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_BGR5_A1_ANGLEX:
+
+ case angle::Format::ID::ASTC_10x10_UNORM_BLOCK:
{
- static constexpr Format info(GL_BGR5_A1_ANGLEX,
- angle::Format::ID::B5G5R5A1_UNORM,
- VK_FORMAT_B5G5R5A1_UNORM_PACK16,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_10x10_KHR;
+ formatID = angle::Format::ID::ASTC_10x10_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_10x10_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_BGRA4_ANGLEX:
+
+ case angle::Format::ID::ASTC_10x5_SRGB_BLOCK:
{
- static constexpr Format info(GL_BGRA4_ANGLEX,
- angle::Format::ID::B4G4R4A4_UNORM,
- VK_FORMAT_B4G4R4A4_UNORM_PACK16,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR;
+ formatID = angle::Format::ID::ASTC_10x5_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_10x5_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_BGRA8_EXT:
+
+ case angle::Format::ID::ASTC_10x5_UNORM_BLOCK:
{
- static constexpr Format info(GL_BGRA8_EXT,
- angle::Format::ID::B8G8R8A8_UNORM,
- VK_FORMAT_B8G8R8A8_UNORM,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_10x5_KHR;
+ formatID = angle::Format::ID::ASTC_10x5_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_10x5_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_R11_EAC:
+
+ case angle::Format::ID::ASTC_10x6_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_R11_EAC,
- angle::Format::ID::EAC_R11_UNORM_BLOCK,
- VK_FORMAT_EAC_R11_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR;
+ formatID = angle::Format::ID::ASTC_10x6_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_10x6_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RG11_EAC:
+
+ case angle::Format::ID::ASTC_10x6_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RG11_EAC,
- angle::Format::ID::EAC_R11G11_UNORM_BLOCK,
- VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_10x6_KHR;
+ formatID = angle::Format::ID::ASTC_10x6_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_10x6_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGB8_ETC2:
+
+ case angle::Format::ID::ASTC_10x8_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGB8_ETC2,
- angle::Format::ID::ETC2_R8G8B8_UNORM_BLOCK,
- VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR;
+ formatID = angle::Format::ID::ASTC_10x8_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_10x8_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
+
+ case angle::Format::ID::ASTC_10x8_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
- angle::Format::ID::ETC2_R8G8B8A1_UNORM_BLOCK,
- VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
- Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_10x8_KHR;
+ formatID = angle::Format::ID::ASTC_10x8_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_10x8_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA8_ETC2_EAC:
+
+ case angle::Format::ID::ASTC_12x10_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA8_ETC2_EAC,
- angle::Format::ID::ETC2_R8G8B8A8_UNORM_BLOCK,
- VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR;
+ formatID = angle::Format::ID::ASTC_12x10_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_12x10_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_10x10_KHR:
+
+ case angle::Format::ID::ASTC_12x10_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x10_KHR,
- angle::Format::ID::ASTC_10x10_UNORM_BLOCK,
- VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_12x10_KHR;
+ formatID = angle::Format::ID::ASTC_12x10_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_12x10_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_10x5_KHR:
+
+ case angle::Format::ID::ASTC_12x12_SRGB_BLOCK:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::ASTC_12x12_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x5_KHR,
- angle::Format::ID::ASTC_10x5_UNORM_BLOCK,
- VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_12x12_KHR;
+ formatID = angle::Format::ID::ASTC_12x12_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_12x12_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_10x6_KHR:
+
+ case angle::Format::ID::ASTC_4x4_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x6_KHR,
- angle::Format::ID::ASTC_10x6_UNORM_BLOCK,
- VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR;
+ formatID = angle::Format::ID::ASTC_4x4_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_4x4_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_10x8_KHR:
+
+ case angle::Format::ID::ASTC_4x4_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_10x8_KHR,
- angle::Format::ID::ASTC_10x8_UNORM_BLOCK,
- VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_4x4_KHR;
+ formatID = angle::Format::ID::ASTC_4x4_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_4x4_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_12x10_KHR:
+
+ case angle::Format::ID::ASTC_5x4_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_12x10_KHR,
- angle::Format::ID::ASTC_12x10_UNORM_BLOCK,
- VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR;
+ formatID = angle::Format::ID::ASTC_5x4_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_5x4_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_12x12_KHR:
+
+ case angle::Format::ID::ASTC_5x4_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_12x12_KHR,
- angle::Format::ID::ASTC_12x12_UNORM_BLOCK,
- VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_5x4_KHR;
+ formatID = angle::Format::ID::ASTC_5x4_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_5x4_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_4x4_KHR:
+
+ case angle::Format::ID::ASTC_5x5_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_4x4_KHR,
- angle::Format::ID::ASTC_4x4_UNORM_BLOCK,
- VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR;
+ formatID = angle::Format::ID::ASTC_5x5_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_5x5_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_5x4_KHR:
+
+ case angle::Format::ID::ASTC_5x5_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x4_KHR,
- angle::Format::ID::ASTC_5x4_UNORM_BLOCK,
- VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_5x5_KHR;
+ formatID = angle::Format::ID::ASTC_5x5_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_5x5_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_5x5_KHR:
+
+ case angle::Format::ID::ASTC_6x5_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_5x5_KHR,
- angle::Format::ID::ASTC_5x5_UNORM_BLOCK,
- VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR;
+ formatID = angle::Format::ID::ASTC_6x5_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_6x5_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_6x5_KHR:
+
+ case angle::Format::ID::ASTC_6x5_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x5_KHR,
- angle::Format::ID::ASTC_6x5_UNORM_BLOCK,
- VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_6x5_KHR;
+ formatID = angle::Format::ID::ASTC_6x5_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_6x5_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_6x6_KHR:
+
+ case angle::Format::ID::ASTC_6x6_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_6x6_KHR,
- angle::Format::ID::ASTC_6x6_UNORM_BLOCK,
- VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR;
+ formatID = angle::Format::ID::ASTC_6x6_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_6x6_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_8x5_KHR:
+
+ case angle::Format::ID::ASTC_6x6_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x5_KHR,
- angle::Format::ID::ASTC_8x5_UNORM_BLOCK,
- VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_6x6_KHR;
+ formatID = angle::Format::ID::ASTC_6x6_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_6x6_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_8x6_KHR:
+
+ case angle::Format::ID::ASTC_8x5_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x6_KHR,
- angle::Format::ID::ASTC_8x6_UNORM_BLOCK,
- VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR;
+ formatID = angle::Format::ID::ASTC_8x5_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_8x5_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_ASTC_8x8_KHR:
+
+ case angle::Format::ID::ASTC_8x5_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_ASTC_8x8_KHR,
- angle::Format::ID::ASTC_8x8_UNORM_BLOCK,
- VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_8x5_KHR;
+ formatID = angle::Format::ID::ASTC_8x5_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_8x5_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
+
+ case angle::Format::ID::ASTC_8x6_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGBA_S3TC_DXT1_EXT,
- angle::Format::ID::BC1_RGBA_UNORM_BLOCK,
- VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR;
+ formatID = angle::Format::ID::ASTC_8x6_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_8x6_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
+
+ case angle::Format::ID::ASTC_8x6_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_RGB_S3TC_DXT1_EXT,
- angle::Format::ID::BC1_RGB_UNORM_BLOCK,
- VK_FORMAT_BC1_RGB_UNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_8x6_KHR;
+ formatID = angle::Format::ID::ASTC_8x6_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_8x6_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SIGNED_R11_EAC:
+
+ case angle::Format::ID::ASTC_8x8_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_SIGNED_R11_EAC,
- angle::Format::ID::EAC_R11_SNORM_BLOCK,
- VK_FORMAT_EAC_R11_SNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR;
+ formatID = angle::Format::ID::ASTC_8x8_SRGB_BLOCK;
+ native = VK_FORMAT_ASTC_8x8_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SIGNED_RG11_EAC:
+
+ case angle::Format::ID::ASTC_8x8_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_SIGNED_RG11_EAC,
- angle::Format::ID::EAC_R11G11_SNORM_BLOCK,
- VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_ASTC_8x8_KHR;
+ formatID = angle::Format::ID::ASTC_8x8_UNORM_BLOCK;
+ native = VK_FORMAT_ASTC_8x8_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
+
+ case angle::Format::ID::B4G4R4A4_UNORM:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,
- angle::Format::ID::ASTC_10x10_SRGB_BLOCK,
- VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_BGRA4_ANGLEX;
+ formatID = angle::Format::ID::B4G4R4A4_UNORM;
+ native = VK_FORMAT_B4G4R4A4_UNORM_PACK16;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
+
+ case angle::Format::ID::B5G5R5A1_UNORM:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,
- angle::Format::ID::ASTC_10x5_SRGB_BLOCK,
- VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_BGR5_A1_ANGLEX;
+ formatID = angle::Format::ID::B5G5R5A1_UNORM;
+ native = VK_FORMAT_B5G5R5A1_UNORM_PACK16;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
+
+ case angle::Format::ID::B5G6R5_UNORM:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,
- angle::Format::ID::ASTC_10x6_SRGB_BLOCK,
- VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_BGR565_ANGLEX;
+ formatID = angle::Format::ID::B5G6R5_UNORM;
+ native = VK_FORMAT_B5G6R5_UNORM_PACK16;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
+
+ case angle::Format::ID::B8G8R8A8_UNORM:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,
- angle::Format::ID::ASTC_10x8_SRGB_BLOCK,
- VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_BGRA8_EXT;
+ formatID = angle::Format::ID::B8G8R8A8_UNORM;
+ native = VK_FORMAT_B8G8R8A8_UNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
+
+ case angle::Format::ID::B8G8R8X8_UNORM:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::BC1_RGBA_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,
- angle::Format::ID::ASTC_12x10_SRGB_BLOCK,
- VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
+ formatID = angle::Format::ID::BC1_RGBA_UNORM_BLOCK;
+ native = VK_FORMAT_BC1_RGBA_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
+
+ case angle::Format::ID::BC1_RGBA_UNORM_SRGB_BLOCK:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::BC1_RGB_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,
- angle::Format::ID::ASTC_4x4_SRGB_BLOCK,
- VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
+ formatID = angle::Format::ID::BC1_RGB_UNORM_BLOCK;
+ native = VK_FORMAT_BC1_RGB_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
+
+ case angle::Format::ID::BC1_RGB_UNORM_SRGB_BLOCK:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::BC2_RGBA_UNORM_BLOCK:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::BC2_RGBA_UNORM_SRGB_BLOCK:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::BC3_RGBA_UNORM_BLOCK:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::BC3_RGBA_UNORM_SRGB_BLOCK:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::D16_UNORM:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,
- angle::Format::ID::ASTC_5x4_SRGB_BLOCK,
- VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_DEPTH_COMPONENT16;
+ formatID = angle::Format::ID::D16_UNORM;
+ native = VK_FORMAT_D16_UNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
+
+ case angle::Format::ID::D24_UNORM:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::D24_UNORM_S8_UINT:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,
- angle::Format::ID::ASTC_5x5_SRGB_BLOCK,
- VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_DEPTH24_STENCIL8;
+ formatID = angle::Format::ID::D24_UNORM_S8_UINT;
+ native = VK_FORMAT_D24_UNORM_S8_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
+
+ case angle::Format::ID::D32_FLOAT:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,
- angle::Format::ID::ASTC_6x5_SRGB_BLOCK,
- VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_DEPTH_COMPONENT32F;
+ formatID = angle::Format::ID::D32_FLOAT;
+ native = VK_FORMAT_D32_SFLOAT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
+
+ case angle::Format::ID::D32_FLOAT_S8X24_UINT:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::D32_UNORM:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::EAC_R11G11_SNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,
- angle::Format::ID::ASTC_6x6_SRGB_BLOCK,
- VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SIGNED_RG11_EAC;
+ formatID = angle::Format::ID::EAC_R11G11_SNORM_BLOCK;
+ native = VK_FORMAT_EAC_R11G11_SNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
+
+ case angle::Format::ID::EAC_R11G11_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,
- angle::Format::ID::ASTC_8x5_SRGB_BLOCK,
- VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RG11_EAC;
+ formatID = angle::Format::ID::EAC_R11G11_UNORM_BLOCK;
+ native = VK_FORMAT_EAC_R11G11_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
+
+ case angle::Format::ID::EAC_R11_SNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,
- angle::Format::ID::ASTC_8x6_SRGB_BLOCK,
- VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SIGNED_R11_EAC;
+ formatID = angle::Format::ID::EAC_R11_SNORM_BLOCK;
+ native = VK_FORMAT_EAC_R11_SNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
+
+ case angle::Format::ID::EAC_R11_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,
- angle::Format::ID::ASTC_8x8_SRGB_BLOCK,
- VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_R11_EAC;
+ formatID = angle::Format::ID::EAC_R11_UNORM_BLOCK;
+ native = VK_FORMAT_EAC_R11_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
+
+ case angle::Format::ID::ETC2_R8G8B8A1_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
- angle::Format::ID::ETC2_R8G8B8A8_SRGB_BLOCK,
- VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2;
+ formatID = angle::Format::ID::ETC2_R8G8B8A1_SRGB_BLOCK;
+ native = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_COMPRESSED_SRGB8_ETC2:
+
+ case angle::Format::ID::ETC2_R8G8B8A1_UNORM_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_ETC2,
- angle::Format::ID::ETC2_R8G8B8_SRGB_BLOCK,
- VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2;
+ formatID = angle::Format::ID::ETC2_R8G8B8A1_UNORM_BLOCK;
+ native = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK;
+ dataInitializerFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>;
+ break;
}
- case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
+
+ case angle::Format::ID::ETC2_R8G8B8A8_SRGB_BLOCK:
{
- static constexpr Format info(GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
- angle::Format::ID::ETC2_R8G8B8A1_SRGB_BLOCK,
- VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC;
+ formatID = angle::Format::ID::ETC2_R8G8B8A8_SRGB_BLOCK;
+ native = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_DEPTH24_STENCIL8:
+
+ case angle::Format::ID::ETC2_R8G8B8A8_UNORM_BLOCK:
{
- static constexpr Format info(GL_DEPTH24_STENCIL8,
- angle::Format::ID::D24_UNORM_S8_UINT,
- VK_FORMAT_D24_UNORM_S8_UINT,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGBA8_ETC2_EAC;
+ formatID = angle::Format::ID::ETC2_R8G8B8A8_UNORM_BLOCK;
+ native = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_DEPTH_COMPONENT16:
+
+ case angle::Format::ID::ETC2_R8G8B8_SRGB_BLOCK:
{
- static constexpr Format info(GL_DEPTH_COMPONENT16,
- angle::Format::ID::D16_UNORM,
- VK_FORMAT_D16_UNORM,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_SRGB8_ETC2;
+ formatID = angle::Format::ID::ETC2_R8G8B8_SRGB_BLOCK;
+ native = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_DEPTH_COMPONENT32F:
+
+ case angle::Format::ID::ETC2_R8G8B8_UNORM_BLOCK:
{
- static constexpr Format info(GL_DEPTH_COMPONENT32F,
- angle::Format::ID::D32_FLOAT,
- VK_FORMAT_D32_SFLOAT,
- nullptr);
- return info;
+ internalFormat = GL_COMPRESSED_RGB8_ETC2;
+ formatID = angle::Format::ID::ETC2_R8G8B8_UNORM_BLOCK;
+ native = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_ETC1_RGB8_LOSSY_DECODE_ANGLE:
+
+ case angle::Format::ID::L16A16_FLOAT:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::L16_FLOAT:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::L32A32_FLOAT:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::L32_FLOAT:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::L8A8_UNORM:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::L8_UNORM:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::NONE:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::R10G10B10A2_UINT:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::R10G10B10A2_UNORM:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::R11G11B10_FLOAT:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::R16G16B16A16_FLOAT:
{
- static constexpr Format info(GL_ETC1_RGB8_LOSSY_DECODE_ANGLE,
- angle::Format::ID::NONE,
- VK_FORMAT_UNDEFINED,
- nullptr);
- return info;
+ internalFormat = GL_RGBA16F;
+ formatID = angle::Format::ID::R16G16B16A16_FLOAT;
+ native = VK_FORMAT_R16G16B16A16_SFLOAT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_ETC1_RGB8_OES:
+
+ case angle::Format::ID::R16G16B16A16_SINT:
{
- static constexpr Format info(GL_ETC1_RGB8_OES,
- angle::Format::ID::NONE,
- VK_FORMAT_UNDEFINED,
- nullptr);
- return info;
- }
- case GL_NONE:
- {
- static constexpr Format info(GL_NONE,
- angle::Format::ID::NONE,
- VK_FORMAT_UNDEFINED,
- nullptr);
- return info;
- }
- case GL_R16F:
- {
- static constexpr Format info(GL_R16F,
- angle::Format::ID::R16_FLOAT,
- VK_FORMAT_R16_SFLOAT,
- nullptr);
- return info;
- }
- case GL_R16I:
- {
- static constexpr Format info(GL_R16I,
- angle::Format::ID::R16_SINT,
- VK_FORMAT_R16_SINT,
- nullptr);
- return info;
- }
- case GL_R16UI:
- {
- static constexpr Format info(GL_R16UI,
- angle::Format::ID::R16_UINT,
- VK_FORMAT_R16_UINT,
- nullptr);
- return info;
- }
- case GL_R16_EXT:
- {
- static constexpr Format info(GL_R16_EXT,
- angle::Format::ID::R16_UNORM,
- VK_FORMAT_R16_UNORM,
- nullptr);
- return info;
+ internalFormat = GL_RGBA16I;
+ formatID = angle::Format::ID::R16G16B16A16_SINT;
+ native = VK_FORMAT_R16G16B16A16_SINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_R16_SNORM_EXT:
+
+ case angle::Format::ID::R16G16B16A16_SNORM:
{
- static constexpr Format info(GL_R16_SNORM_EXT,
- angle::Format::ID::R16_SNORM,
- VK_FORMAT_R16_SNORM,
- nullptr);
- return info;
+ internalFormat = GL_RGBA16_SNORM_EXT;
+ formatID = angle::Format::ID::R16G16B16A16_SNORM;
+ native = VK_FORMAT_R16G16B16A16_SNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_R32F:
+
+ case angle::Format::ID::R16G16B16A16_UINT:
{
- static constexpr Format info(GL_R32F,
- angle::Format::ID::R32_FLOAT,
- VK_FORMAT_R32_SFLOAT,
- nullptr);
- return info;
+ internalFormat = GL_RGBA16UI;
+ formatID = angle::Format::ID::R16G16B16A16_UINT;
+ native = VK_FORMAT_R16G16B16A16_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_R32I:
+
+ case angle::Format::ID::R16G16B16A16_UNORM:
{
- static constexpr Format info(GL_R32I,
- angle::Format::ID::R32_SINT,
- VK_FORMAT_R32_SINT,
- nullptr);
- return info;
+ internalFormat = GL_RGBA16_EXT;
+ formatID = angle::Format::ID::R16G16B16A16_UNORM;
+ native = VK_FORMAT_R16G16B16A16_UNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_R32UI:
+
+ case angle::Format::ID::R16G16B16_FLOAT:
{
- static constexpr Format info(GL_R32UI,
- angle::Format::ID::R32_UINT,
- VK_FORMAT_R32_UINT,
- nullptr);
- return info;
+ internalFormat = GL_RGB16F;
+ formatID = angle::Format::ID::R16G16B16_FLOAT;
+ native = VK_FORMAT_R16G16B16_SFLOAT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_R8:
+
+ case angle::Format::ID::R16G16B16_SINT:
{
- static constexpr Format info(GL_R8,
- angle::Format::ID::R8_UNORM,
- VK_FORMAT_R8_UNORM,
- nullptr);
- return info;
+ internalFormat = GL_RGB16I;
+ formatID = angle::Format::ID::R16G16B16_SINT;
+ native = VK_FORMAT_R16G16B16_SINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_R8I:
+
+ case angle::Format::ID::R16G16B16_SNORM:
{
- static constexpr Format info(GL_R8I,
- angle::Format::ID::R8_SINT,
- VK_FORMAT_R8_SINT,
- nullptr);
- return info;
+ internalFormat = GL_RGB16_SNORM_EXT;
+ formatID = angle::Format::ID::R16G16B16_SNORM;
+ native = VK_FORMAT_R16G16B16_SNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_R8UI:
+
+ case angle::Format::ID::R16G16B16_UINT:
{
- static constexpr Format info(GL_R8UI,
- angle::Format::ID::R8_UINT,
- VK_FORMAT_R8_UINT,
- nullptr);
- return info;
+ internalFormat = GL_RGB16UI;
+ formatID = angle::Format::ID::R16G16B16_UINT;
+ native = VK_FORMAT_R16G16B16_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_R8_SNORM:
+
+ case angle::Format::ID::R16G16B16_UNORM:
{
- static constexpr Format info(GL_R8_SNORM,
- angle::Format::ID::R8_SNORM,
- VK_FORMAT_R8_SNORM,
- nullptr);
- return info;
+ internalFormat = GL_RGB16_EXT;
+ formatID = angle::Format::ID::R16G16B16_UNORM;
+ native = VK_FORMAT_R16G16B16_UNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RG16F:
+
+ case angle::Format::ID::R16G16_FLOAT:
{
- static constexpr Format info(GL_RG16F,
- angle::Format::ID::R16G16_FLOAT,
- VK_FORMAT_R16G16_SFLOAT,
- nullptr);
- return info;
+ internalFormat = GL_RG16F;
+ formatID = angle::Format::ID::R16G16_FLOAT;
+ native = VK_FORMAT_R16G16_SFLOAT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RG16I:
+
+ case angle::Format::ID::R16G16_SINT:
{
- static constexpr Format info(GL_RG16I,
- angle::Format::ID::R16G16_SINT,
- VK_FORMAT_R16G16_SINT,
- nullptr);
- return info;
+ internalFormat = GL_RG16I;
+ formatID = angle::Format::ID::R16G16_SINT;
+ native = VK_FORMAT_R16G16_SINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RG16UI:
+
+ case angle::Format::ID::R16G16_SNORM:
{
- static constexpr Format info(GL_RG16UI,
- angle::Format::ID::R16G16_UINT,
- VK_FORMAT_R16G16_UINT,
- nullptr);
- return info;
+ internalFormat = GL_RG16_SNORM_EXT;
+ formatID = angle::Format::ID::R16G16_SNORM;
+ native = VK_FORMAT_R16G16_SNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RG16_EXT:
+
+ case angle::Format::ID::R16G16_UINT:
{
- static constexpr Format info(GL_RG16_EXT,
- angle::Format::ID::R16G16_UNORM,
- VK_FORMAT_R16G16_UNORM,
- nullptr);
- return info;
+ internalFormat = GL_RG16UI;
+ formatID = angle::Format::ID::R16G16_UINT;
+ native = VK_FORMAT_R16G16_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RG16_SNORM_EXT:
+
+ case angle::Format::ID::R16G16_UNORM:
{
- static constexpr Format info(GL_RG16_SNORM_EXT,
- angle::Format::ID::R16G16_SNORM,
- VK_FORMAT_R16G16_SNORM,
- nullptr);
- return info;
+ internalFormat = GL_RG16_EXT;
+ formatID = angle::Format::ID::R16G16_UNORM;
+ native = VK_FORMAT_R16G16_UNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RG32F:
+
+ case angle::Format::ID::R16_FLOAT:
{
- static constexpr Format info(GL_RG32F,
- angle::Format::ID::R32G32_FLOAT,
- VK_FORMAT_R32G32_SFLOAT,
- nullptr);
- return info;
+ internalFormat = GL_R16F;
+ formatID = angle::Format::ID::R16_FLOAT;
+ native = VK_FORMAT_R16_SFLOAT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RG32I:
+
+ case angle::Format::ID::R16_SINT:
{
- static constexpr Format info(GL_RG32I,
- angle::Format::ID::R32G32_SINT,
- VK_FORMAT_R32G32_SINT,
- nullptr);
- return info;
+ internalFormat = GL_R16I;
+ formatID = angle::Format::ID::R16_SINT;
+ native = VK_FORMAT_R16_SINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RG32UI:
+
+ case angle::Format::ID::R16_SNORM:
{
- static constexpr Format info(GL_RG32UI,
- angle::Format::ID::R32G32_UINT,
- VK_FORMAT_R32G32_UINT,
- nullptr);
- return info;
+ internalFormat = GL_R16_SNORM_EXT;
+ formatID = angle::Format::ID::R16_SNORM;
+ native = VK_FORMAT_R16_SNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RG8:
+
+ case angle::Format::ID::R16_UINT:
{
- static constexpr Format info(GL_RG8,
- angle::Format::ID::R8G8_UNORM,
- VK_FORMAT_R8G8_UNORM,
- nullptr);
- return info;
+ internalFormat = GL_R16UI;
+ formatID = angle::Format::ID::R16_UINT;
+ native = VK_FORMAT_R16_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RG8I:
+
+ case angle::Format::ID::R16_UNORM:
{
- static constexpr Format info(GL_RG8I,
- angle::Format::ID::R8G8_SINT,
- VK_FORMAT_R8G8_SINT,
- nullptr);
- return info;
+ internalFormat = GL_R16_EXT;
+ formatID = angle::Format::ID::R16_UNORM;
+ native = VK_FORMAT_R16_UNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RG8UI:
+
+ case angle::Format::ID::R32G32B32A32_FLOAT:
{
- static constexpr Format info(GL_RG8UI,
- angle::Format::ID::R8G8_UINT,
- VK_FORMAT_R8G8_UINT,
- nullptr);
- return info;
+ internalFormat = GL_RGBA32F;
+ formatID = angle::Format::ID::R32G32B32A32_FLOAT;
+ native = VK_FORMAT_R32G32B32A32_SFLOAT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RG8_SNORM:
+
+ case angle::Format::ID::R32G32B32A32_SINT:
{
- static constexpr Format info(GL_RG8_SNORM,
- angle::Format::ID::R8G8_SNORM,
- VK_FORMAT_R8G8_SNORM,
- nullptr);
- return info;
+ internalFormat = GL_RGBA32I;
+ formatID = angle::Format::ID::R32G32B32A32_SINT;
+ native = VK_FORMAT_R32G32B32A32_SINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB:
+
+ case angle::Format::ID::R32G32B32A32_UINT:
{
- static constexpr Format info(GL_RGB,
- angle::Format::ID::R8G8B8_UNORM,
- VK_FORMAT_R8G8B8_UNORM,
- nullptr);
- return info;
+ internalFormat = GL_RGBA32UI;
+ formatID = angle::Format::ID::R32G32B32A32_UINT;
+ native = VK_FORMAT_R32G32B32A32_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB16F:
+
+ case angle::Format::ID::R32G32B32_FLOAT:
{
- static constexpr Format info(GL_RGB16F,
- angle::Format::ID::R16G16B16_FLOAT,
- VK_FORMAT_R16G16B16_SFLOAT,
- nullptr);
- return info;
+ internalFormat = GL_RGB32F;
+ formatID = angle::Format::ID::R32G32B32_FLOAT;
+ native = VK_FORMAT_R32G32B32_SFLOAT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB16I:
+
+ case angle::Format::ID::R32G32B32_SINT:
{
- static constexpr Format info(GL_RGB16I,
- angle::Format::ID::R16G16B16_SINT,
- VK_FORMAT_R16G16B16_SINT,
- nullptr);
- return info;
+ internalFormat = GL_RGB32I;
+ formatID = angle::Format::ID::R32G32B32_SINT;
+ native = VK_FORMAT_R32G32B32_SINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB16UI:
+
+ case angle::Format::ID::R32G32B32_UINT:
{
- static constexpr Format info(GL_RGB16UI,
- angle::Format::ID::R16G16B16_UINT,
- VK_FORMAT_R16G16B16_UINT,
- nullptr);
- return info;
+ internalFormat = GL_RGB32UI;
+ formatID = angle::Format::ID::R32G32B32_UINT;
+ native = VK_FORMAT_R32G32B32_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB16_EXT:
+
+ case angle::Format::ID::R32G32_FLOAT:
{
- static constexpr Format info(GL_RGB16_EXT,
- angle::Format::ID::R16G16B16_UNORM,
- VK_FORMAT_R16G16B16_UNORM,
- nullptr);
- return info;
+ internalFormat = GL_RG32F;
+ formatID = angle::Format::ID::R32G32_FLOAT;
+ native = VK_FORMAT_R32G32_SFLOAT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB16_SNORM_EXT:
+
+ case angle::Format::ID::R32G32_SINT:
{
- static constexpr Format info(GL_RGB16_SNORM_EXT,
- angle::Format::ID::R16G16B16_SNORM,
- VK_FORMAT_R16G16B16_SNORM,
- nullptr);
- return info;
+ internalFormat = GL_RG32I;
+ formatID = angle::Format::ID::R32G32_SINT;
+ native = VK_FORMAT_R32G32_SINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB32F:
+
+ case angle::Format::ID::R32G32_UINT:
{
- static constexpr Format info(GL_RGB32F,
- angle::Format::ID::R32G32B32_FLOAT,
- VK_FORMAT_R32G32B32_SFLOAT,
- nullptr);
- return info;
+ internalFormat = GL_RG32UI;
+ formatID = angle::Format::ID::R32G32_UINT;
+ native = VK_FORMAT_R32G32_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB32I:
+
+ case angle::Format::ID::R32_FLOAT:
{
- static constexpr Format info(GL_RGB32I,
- angle::Format::ID::R32G32B32_SINT,
- VK_FORMAT_R32G32B32_SINT,
- nullptr);
- return info;
+ internalFormat = GL_R32F;
+ formatID = angle::Format::ID::R32_FLOAT;
+ native = VK_FORMAT_R32_SFLOAT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB32UI:
+
+ case angle::Format::ID::R32_SINT:
{
- static constexpr Format info(GL_RGB32UI,
- angle::Format::ID::R32G32B32_UINT,
- VK_FORMAT_R32G32B32_UINT,
- nullptr);
- return info;
+ internalFormat = GL_R32I;
+ formatID = angle::Format::ID::R32_SINT;
+ native = VK_FORMAT_R32_SINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB565:
+
+ case angle::Format::ID::R32_UINT:
{
- static constexpr Format info(GL_RGB565,
- angle::Format::ID::R5G6B5_UNORM,
- VK_FORMAT_R5G6B5_UNORM_PACK16,
- nullptr);
- return info;
+ internalFormat = GL_R32UI;
+ formatID = angle::Format::ID::R32_UINT;
+ native = VK_FORMAT_R32_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB5_A1:
+
+ case angle::Format::ID::R4G4B4A4_UNORM:
{
- static constexpr Format info(GL_RGB5_A1,
- angle::Format::ID::R5G5B5A1_UNORM,
- VK_FORMAT_R5G5B5A1_UNORM_PACK16,
- nullptr);
- return info;
+ internalFormat = GL_RGBA4;
+ formatID = angle::Format::ID::R4G4B4A4_UNORM;
+ native = VK_FORMAT_R4G4B4A4_UNORM_PACK16;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB8:
+
+ case angle::Format::ID::R5G5B5A1_UNORM:
{
- static constexpr Format info(GL_RGB8,
- angle::Format::ID::R8G8B8_UNORM,
- VK_FORMAT_R8G8B8_UNORM,
- nullptr);
- return info;
+ internalFormat = GL_RGB5_A1;
+ formatID = angle::Format::ID::R5G5B5A1_UNORM;
+ native = VK_FORMAT_R5G5B5A1_UNORM_PACK16;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB8I:
+
+ case angle::Format::ID::R5G6B5_UNORM:
{
- static constexpr Format info(GL_RGB8I,
- angle::Format::ID::R8G8B8_SINT,
- VK_FORMAT_R8G8B8_SINT,
- nullptr);
- return info;
+ internalFormat = GL_RGB565;
+ formatID = angle::Format::ID::R5G6B5_UNORM;
+ native = VK_FORMAT_R5G6B5_UNORM_PACK16;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB8UI:
+
+ case angle::Format::ID::R8G8B8A8_SINT:
{
- static constexpr Format info(GL_RGB8UI,
- angle::Format::ID::R8G8B8_UINT,
- VK_FORMAT_R8G8B8_UINT,
- nullptr);
- return info;
+ internalFormat = GL_RGBA8I;
+ formatID = angle::Format::ID::R8G8B8A8_SINT;
+ native = VK_FORMAT_R8G8B8A8_SINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGB8_SNORM:
+
+ case angle::Format::ID::R8G8B8A8_SNORM:
{
- static constexpr Format info(GL_RGB8_SNORM,
- angle::Format::ID::R8G8B8_SNORM,
- VK_FORMAT_R8G8B8_SNORM,
- nullptr);
- return info;
+ internalFormat = GL_RGBA8_SNORM;
+ formatID = angle::Format::ID::R8G8B8A8_SNORM;
+ native = VK_FORMAT_R8G8B8A8_SNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA:
+
+ case angle::Format::ID::R8G8B8A8_UINT:
{
- static constexpr Format info(GL_RGBA,
- angle::Format::ID::R8G8B8A8_UNORM,
- VK_FORMAT_R8G8B8A8_UNORM,
- nullptr);
- return info;
+ internalFormat = GL_RGBA8UI;
+ formatID = angle::Format::ID::R8G8B8A8_UINT;
+ native = VK_FORMAT_R8G8B8A8_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA16F:
+
+ case angle::Format::ID::R8G8B8A8_UNORM:
{
- static constexpr Format info(GL_RGBA16F,
- angle::Format::ID::R16G16B16A16_FLOAT,
- VK_FORMAT_R16G16B16A16_SFLOAT,
- nullptr);
- return info;
+ internalFormat = GL_RGBA8;
+ formatID = angle::Format::ID::R8G8B8A8_UNORM;
+ native = VK_FORMAT_R8G8B8A8_UNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA16I:
+
+ case angle::Format::ID::R8G8B8A8_UNORM_SRGB:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::R8G8B8_SINT:
{
- static constexpr Format info(GL_RGBA16I,
- angle::Format::ID::R16G16B16A16_SINT,
- VK_FORMAT_R16G16B16A16_SINT,
- nullptr);
- return info;
+ internalFormat = GL_RGB8I;
+ formatID = angle::Format::ID::R8G8B8_SINT;
+ native = VK_FORMAT_R8G8B8_SINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA16UI:
+
+ case angle::Format::ID::R8G8B8_SNORM:
{
- static constexpr Format info(GL_RGBA16UI,
- angle::Format::ID::R16G16B16A16_UINT,
- VK_FORMAT_R16G16B16A16_UINT,
- nullptr);
- return info;
+ internalFormat = GL_RGB8_SNORM;
+ formatID = angle::Format::ID::R8G8B8_SNORM;
+ native = VK_FORMAT_R8G8B8_SNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA16_EXT:
+
+ case angle::Format::ID::R8G8B8_UINT:
{
- static constexpr Format info(GL_RGBA16_EXT,
- angle::Format::ID::R16G16B16A16_UNORM,
- VK_FORMAT_R16G16B16A16_UNORM,
- nullptr);
- return info;
+ internalFormat = GL_RGB8UI;
+ formatID = angle::Format::ID::R8G8B8_UINT;
+ native = VK_FORMAT_R8G8B8_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA16_SNORM_EXT:
+
+ case angle::Format::ID::R8G8B8_UNORM:
{
- static constexpr Format info(GL_RGBA16_SNORM_EXT,
- angle::Format::ID::R16G16B16A16_SNORM,
- VK_FORMAT_R16G16B16A16_SNORM,
- nullptr);
- return info;
+ internalFormat = GL_RGB8;
+ formatID = angle::Format::ID::R8G8B8_UNORM;
+ native = VK_FORMAT_R8G8B8_UNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA32F:
+
+ case angle::Format::ID::R8G8B8_UNORM_SRGB:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::R8G8_SINT:
{
- static constexpr Format info(GL_RGBA32F,
- angle::Format::ID::R32G32B32A32_FLOAT,
- VK_FORMAT_R32G32B32A32_SFLOAT,
- nullptr);
- return info;
+ internalFormat = GL_RG8I;
+ formatID = angle::Format::ID::R8G8_SINT;
+ native = VK_FORMAT_R8G8_SINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA32I:
+
+ case angle::Format::ID::R8G8_SNORM:
{
- static constexpr Format info(GL_RGBA32I,
- angle::Format::ID::R32G32B32A32_SINT,
- VK_FORMAT_R32G32B32A32_SINT,
- nullptr);
- return info;
+ internalFormat = GL_RG8_SNORM;
+ formatID = angle::Format::ID::R8G8_SNORM;
+ native = VK_FORMAT_R8G8_SNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA32UI:
+
+ case angle::Format::ID::R8G8_UINT:
{
- static constexpr Format info(GL_RGBA32UI,
- angle::Format::ID::R32G32B32A32_UINT,
- VK_FORMAT_R32G32B32A32_UINT,
- nullptr);
- return info;
+ internalFormat = GL_RG8UI;
+ formatID = angle::Format::ID::R8G8_UINT;
+ native = VK_FORMAT_R8G8_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA4:
+
+ case angle::Format::ID::R8G8_UNORM:
{
- static constexpr Format info(GL_RGBA4,
- angle::Format::ID::R4G4B4A4_UNORM,
- VK_FORMAT_R4G4B4A4_UNORM_PACK16,
- nullptr);
- return info;
+ internalFormat = GL_RG8;
+ formatID = angle::Format::ID::R8G8_UNORM;
+ native = VK_FORMAT_R8G8_UNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA8:
+
+ case angle::Format::ID::R8_SINT:
{
- static constexpr Format info(GL_RGBA8,
- angle::Format::ID::R8G8B8A8_UNORM,
- VK_FORMAT_R8G8B8A8_UNORM,
- nullptr);
- return info;
+ internalFormat = GL_R8I;
+ formatID = angle::Format::ID::R8_SINT;
+ native = VK_FORMAT_R8_SINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA8I:
+
+ case angle::Format::ID::R8_SNORM:
{
- static constexpr Format info(GL_RGBA8I,
- angle::Format::ID::R8G8B8A8_SINT,
- VK_FORMAT_R8G8B8A8_SINT,
- nullptr);
- return info;
+ internalFormat = GL_R8_SNORM;
+ formatID = angle::Format::ID::R8_SNORM;
+ native = VK_FORMAT_R8_SNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA8UI:
+
+ case angle::Format::ID::R8_UINT:
{
- static constexpr Format info(GL_RGBA8UI,
- angle::Format::ID::R8G8B8A8_UINT,
- VK_FORMAT_R8G8B8A8_UINT,
- nullptr);
- return info;
+ internalFormat = GL_R8UI;
+ formatID = angle::Format::ID::R8_UINT;
+ native = VK_FORMAT_R8_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_RGBA8_SNORM:
+
+ case angle::Format::ID::R8_UNORM:
{
- static constexpr Format info(GL_RGBA8_SNORM,
- angle::Format::ID::R8G8B8A8_SNORM,
- VK_FORMAT_R8G8B8A8_SNORM,
- nullptr);
- return info;
+ internalFormat = GL_R8;
+ formatID = angle::Format::ID::R8_UNORM;
+ native = VK_FORMAT_R8_UNORM;
+ dataInitializerFunction = nullptr;
+ break;
}
- case GL_STENCIL_INDEX8:
+
+ case angle::Format::ID::R9G9B9E5_SHAREDEXP:
+ // This format is not implemented in Vulkan.
+ break;
+
+ case angle::Format::ID::S8_UINT:
{
- static constexpr Format info(GL_STENCIL_INDEX8,
- angle::Format::ID::S8_UINT,
- VK_FORMAT_S8_UINT,
- nullptr);
- return info;
+ internalFormat = GL_STENCIL_INDEX8;
+ formatID = angle::Format::ID::S8_UINT;
+ native = VK_FORMAT_S8_UINT;
+ dataInitializerFunction = nullptr;
+ break;
}
default:
+ UNREACHABLE();
break;
}
- // clang-format on
-
- UNREACHABLE();
- static const Format noInfo(GL_NONE, angle::Format::ID::NONE, VK_FORMAT_UNDEFINED, nullptr);
- return noInfo;
}
} // namespace vk