blob: c5c6646f24938c5185c8a59bf23fd190e4928dde [file] [log] [blame]
// GENERATED FILE - DO NOT EDIT.
// Generated by gen_mtl_format_table.py using data from mtl_format_map.json
//
// Copyright 2019 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Metal Format table:
// Conversion from ANGLE format to Metal format.
#import <Metal/Metal.h>
#include <TargetConditionals.h>
#include "libANGLE/renderer/Format.h"
#include "libANGLE/renderer/metal/DisplayMtl.h"
#include "libANGLE/renderer/metal/mtl_format_utils.h"
namespace rx
{
namespace mtl
{
void Format::init(const DisplayMtl *display, angle::FormatID intendedFormatId_)
{
this->intendedFormatId = intendedFormatId_;
id<MTLDevice> metalDevice = display->getMetalDevice();
// Actual conversion
switch (this->intendedFormatId)
{
case angle::FormatID::A8_UNORM:
this->metalFormat = MTLPixelFormatA8Unorm;
this->actualFormatId = angle::FormatID::A8_UNORM;
break;
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::B8G8R8A8_UNORM:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatBGRA8Unorm;
this->actualFormatId = angle::FormatID::B8G8R8A8_UNORM;
}
else
{
this->metalFormat = MTLPixelFormatRGBA8Unorm;
this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::B8G8R8A8_UNORM:
this->metalFormat = MTLPixelFormatBGRA8Unorm;
this->actualFormatId = angle::FormatID::B8G8R8A8_UNORM;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::B8G8R8A8_UNORM_SRGB:
this->metalFormat = MTLPixelFormatBGRA8Unorm_sRGB;
this->actualFormatId = angle::FormatID::B8G8R8A8_UNORM_SRGB;
break;
case angle::FormatID::D32_FLOAT:
this->metalFormat = MTLPixelFormatDepth32Float;
this->actualFormatId = angle::FormatID::D32_FLOAT;
break;
case angle::FormatID::D32_FLOAT_S8X24_UINT:
this->metalFormat = MTLPixelFormatDepth32Float_Stencil8;
this->actualFormatId = angle::FormatID::D32_FLOAT_S8X24_UINT;
break;
case angle::FormatID::NONE:
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
break;
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R16G16B16A16_FLOAT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatRGBA16Float;
this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R16G16B16A16_FLOAT:
this->metalFormat = MTLPixelFormatRGBA16Float;
this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R16G16_FLOAT:
this->metalFormat = MTLPixelFormatRG16Float;
this->actualFormatId = angle::FormatID::R16G16_FLOAT;
break;
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R16_FLOAT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatR16Float;
this->actualFormatId = angle::FormatID::R16_FLOAT;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R16_FLOAT:
this->metalFormat = MTLPixelFormatR16Float;
this->actualFormatId = angle::FormatID::R16_FLOAT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R16_UNORM:
this->metalFormat = MTLPixelFormatR16Unorm;
this->actualFormatId = angle::FormatID::R16_UNORM;
break;
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R32G32B32A32_FLOAT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatRGBA32Float;
this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R32G32B32A32_FLOAT:
this->metalFormat = MTLPixelFormatRGBA32Float;
this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R32G32_FLOAT:
this->metalFormat = MTLPixelFormatRG32Float;
this->actualFormatId = angle::FormatID::R32G32_FLOAT;
break;
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R32_FLOAT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatR32Float;
this->actualFormatId = angle::FormatID::R32_FLOAT;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R32_FLOAT:
this->metalFormat = MTLPixelFormatR32Float;
this->actualFormatId = angle::FormatID::R32_FLOAT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R8G8B8A8_UNORM:
this->metalFormat = MTLPixelFormatRGBA8Unorm;
this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM;
break;
case angle::FormatID::R8G8B8A8_UNORM_SRGB:
this->metalFormat = MTLPixelFormatRGBA8Unorm_sRGB;
this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM_SRGB;
break;
case angle::FormatID::R8G8_UNORM:
this->metalFormat = MTLPixelFormatRG8Unorm;
this->actualFormatId = angle::FormatID::R8G8_UNORM;
break;
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R8_UNORM:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatR8Unorm;
this->actualFormatId = angle::FormatID::R8_UNORM;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R8_UNORM:
this->metalFormat = MTLPixelFormatR8Unorm;
this->actualFormatId = angle::FormatID::R8_UNORM;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::S8_UINT:
this->metalFormat = MTLPixelFormatStencil8;
this->actualFormatId = angle::FormatID::S8_UINT;
break;
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::A16_FLOAT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatRGBA16Float;
this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::A16_FLOAT:
this->metalFormat = MTLPixelFormatRGBA16Float;
this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::A32_FLOAT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatRGBA32Float;
this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::A32_FLOAT:
this->metalFormat = MTLPixelFormatRGBA32Float;
this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::D24_UNORM_X8_UINT:
this->metalFormat = MTLPixelFormatDepth32Float;
this->actualFormatId = angle::FormatID::D32_FLOAT;
break;
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::L16A16_FLOAT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatRGBA16Float;
this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::L16A16_FLOAT:
this->metalFormat = MTLPixelFormatRGBA16Float;
this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::L16_FLOAT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatRGBA16Float;
this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::L16_FLOAT:
this->metalFormat = MTLPixelFormatRGBA16Float;
this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::L32A32_FLOAT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatRGBA32Float;
this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::L32A32_FLOAT:
this->metalFormat = MTLPixelFormatRGBA32Float;
this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::L32_FLOAT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatRGBA32Float;
this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::L32_FLOAT:
this->metalFormat = MTLPixelFormatRGBA32Float;
this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::L8A8_UNORM:
this->metalFormat = MTLPixelFormatRGBA8Unorm;
this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM;
break;
case angle::FormatID::L8_UNORM:
this->metalFormat = MTLPixelFormatRGBA8Unorm;
this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM;
break;
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R16G16B16_FLOAT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatRGBA16Float;
this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R16G16B16_FLOAT:
this->metalFormat = MTLPixelFormatRGBA16Float;
this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R32G32B32_FLOAT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatRGBA32Float;
this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT;
}
else
{
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
break;
#else // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R32G32B32_FLOAT:
this->metalFormat = MTLPixelFormatRGBA32Float;
this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::R8G8B8_UNORM:
this->metalFormat = MTLPixelFormatRGBA8Unorm;
this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM;
break;
case angle::FormatID::R8G8B8_UNORM_SRGB:
this->metalFormat = MTLPixelFormatRGBA8Unorm_sRGB;
this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM_SRGB;
break;
#if TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::BC1_RGBA_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatBC1_RGBA;
this->actualFormatId = angle::FormatID::BC1_RGBA_UNORM_BLOCK;
break;
case angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK:
this->metalFormat = MTLPixelFormatBC1_RGBA_sRGB;
this->actualFormatId = angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK;
break;
case angle::FormatID::BC1_RGB_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatBC1_RGBA;
this->actualFormatId = angle::FormatID::BC1_RGB_UNORM_BLOCK;
break;
case angle::FormatID::BC1_RGB_UNORM_SRGB_BLOCK:
this->metalFormat = MTLPixelFormatBC1_RGBA_sRGB;
this->actualFormatId = angle::FormatID::BC1_RGB_UNORM_SRGB_BLOCK;
break;
case angle::FormatID::BC2_RGBA_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatBC2_RGBA;
this->actualFormatId = angle::FormatID::BC2_RGBA_UNORM_BLOCK;
break;
case angle::FormatID::BC2_RGBA_UNORM_SRGB_BLOCK:
this->metalFormat = MTLPixelFormatBC2_RGBA_sRGB;
this->actualFormatId = angle::FormatID::BC2_RGBA_UNORM_SRGB_BLOCK;
break;
case angle::FormatID::BC3_RGBA_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatBC3_RGBA;
this->actualFormatId = angle::FormatID::BC3_RGBA_UNORM_BLOCK;
break;
case angle::FormatID::BC3_RGBA_UNORM_SRGB_BLOCK:
this->metalFormat = MTLPixelFormatBC3_RGBA_sRGB;
this->actualFormatId = angle::FormatID::BC3_RGBA_UNORM_SRGB_BLOCK;
break;
case angle::FormatID::D16_UNORM:
this->metalFormat = MTLPixelFormatDepth16Unorm;
this->actualFormatId = angle::FormatID::D16_UNORM;
break;
case angle::FormatID::D24_UNORM_S8_UINT:
if (metalDevice.depth24Stencil8PixelFormatSupported)
{
this->metalFormat = MTLPixelFormatDepth24Unorm_Stencil8;
this->actualFormatId = angle::FormatID::D24_UNORM_S8_UINT;
}
else
{
this->metalFormat = MTLPixelFormatDepth32Float_Stencil8;
this->actualFormatId = angle::FormatID::D32_FLOAT_S8X24_UINT;
}
break;
case angle::FormatID::R4G4B4A4_UNORM:
this->metalFormat = MTLPixelFormatRGBA8Unorm;
this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM;
break;
case angle::FormatID::R5G5B5A1_UNORM:
this->metalFormat = MTLPixelFormatRGBA8Unorm;
this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM;
break;
case angle::FormatID::R5G6B5_UNORM:
this->metalFormat = MTLPixelFormatRGBA8Unorm;
this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM;
break;
#elif TARGET_OS_IOS // TARGET_OS_OSX || TARGET_OS_MACCATALYST
case angle::FormatID::EAC_R11G11_SNORM_BLOCK:
this->metalFormat = MTLPixelFormatEAC_RG11Snorm;
this->actualFormatId = angle::FormatID::EAC_R11G11_SNORM_BLOCK;
break;
case angle::FormatID::EAC_R11G11_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatEAC_R11Unorm;
this->actualFormatId = angle::FormatID::EAC_R11G11_UNORM_BLOCK;
break;
case angle::FormatID::EAC_R11_SNORM_BLOCK:
this->metalFormat = MTLPixelFormatEAC_R11Snorm;
this->actualFormatId = angle::FormatID::EAC_R11_SNORM_BLOCK;
break;
case angle::FormatID::EAC_R11_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatEAC_R11Unorm;
this->actualFormatId = angle::FormatID::EAC_R11_UNORM_BLOCK;
break;
case angle::FormatID::ETC1_R8G8B8_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatETC2_RGB8;
this->actualFormatId = angle::FormatID::ETC1_R8G8B8_UNORM_BLOCK;
break;
case angle::FormatID::ETC2_R8G8B8A1_SRGB_BLOCK:
this->metalFormat = MTLPixelFormatETC2_RGB8A1_sRGB;
this->actualFormatId = angle::FormatID::ETC2_R8G8B8A1_SRGB_BLOCK;
break;
case angle::FormatID::ETC2_R8G8B8A1_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatETC2_RGB8A1;
this->actualFormatId = angle::FormatID::ETC2_R8G8B8A1_UNORM_BLOCK;
break;
case angle::FormatID::ETC2_R8G8B8A8_SRGB_BLOCK:
this->metalFormat = MTLPixelFormatEAC_RGBA8_sRGB;
this->actualFormatId = angle::FormatID::ETC2_R8G8B8A8_SRGB_BLOCK;
break;
case angle::FormatID::ETC2_R8G8B8A8_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatEAC_RGBA8;
this->actualFormatId = angle::FormatID::ETC2_R8G8B8A8_UNORM_BLOCK;
break;
case angle::FormatID::ETC2_R8G8B8_SRGB_BLOCK:
this->metalFormat = MTLPixelFormatETC2_RGB8_sRGB;
this->actualFormatId = angle::FormatID::ETC2_R8G8B8_SRGB_BLOCK;
break;
case angle::FormatID::ETC2_R8G8B8_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatETC2_RGB8;
this->actualFormatId = angle::FormatID::ETC2_R8G8B8_UNORM_BLOCK;
break;
case angle::FormatID::PVRTC1_RGBA_2BPP_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatPVRTC_RGBA_2BPP;
this->actualFormatId = angle::FormatID::PVRTC1_RGBA_2BPP_UNORM_BLOCK;
break;
case angle::FormatID::PVRTC1_RGBA_2BPP_UNORM_SRGB_BLOCK:
this->metalFormat = MTLPixelFormatPVRTC_RGBA_2BPP_sRGB;
this->actualFormatId = angle::FormatID::PVRTC1_RGBA_2BPP_UNORM_SRGB_BLOCK;
break;
case angle::FormatID::PVRTC1_RGBA_4BPP_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatPVRTC_RGBA_4BPP;
this->actualFormatId = angle::FormatID::PVRTC1_RGBA_4BPP_UNORM_BLOCK;
break;
case angle::FormatID::PVRTC1_RGBA_4BPP_UNORM_SRGB_BLOCK:
this->metalFormat = MTLPixelFormatPVRTC_RGBA_4BPP_sRGB;
this->actualFormatId = angle::FormatID::PVRTC1_RGBA_4BPP_UNORM_SRGB_BLOCK;
break;
case angle::FormatID::PVRTC1_RGB_2BPP_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatPVRTC_RGB_2BPP;
this->actualFormatId = angle::FormatID::PVRTC1_RGB_2BPP_UNORM_BLOCK;
break;
case angle::FormatID::PVRTC1_RGB_2BPP_UNORM_SRGB_BLOCK:
this->metalFormat = MTLPixelFormatPVRTC_RGB_2BPP_sRGB;
this->actualFormatId = angle::FormatID::PVRTC1_RGB_2BPP_UNORM_SRGB_BLOCK;
break;
case angle::FormatID::PVRTC1_RGB_4BPP_UNORM_BLOCK:
this->metalFormat = MTLPixelFormatPVRTC_RGB_4BPP;
this->actualFormatId = angle::FormatID::PVRTC1_RGB_4BPP_UNORM_BLOCK;
break;
case angle::FormatID::PVRTC1_RGB_4BPP_UNORM_SRGB_BLOCK:
this->metalFormat = MTLPixelFormatPVRTC_RGB_4BPP_sRGB;
this->actualFormatId = angle::FormatID::PVRTC1_RGB_4BPP_UNORM_SRGB_BLOCK;
break;
case angle::FormatID::R4G4B4A4_UNORM:
this->metalFormat = MTLPixelFormatABGR4Unorm;
this->actualFormatId = angle::FormatID::R4G4B4A4_UNORM;
break;
case angle::FormatID::R5G5B5A1_UNORM:
this->metalFormat = MTLPixelFormatBGR5A1Unorm;
this->actualFormatId = angle::FormatID::R5G5B5A1_UNORM;
break;
case angle::FormatID::R5G6B5_UNORM:
this->metalFormat = MTLPixelFormatB5G6R5Unorm;
this->actualFormatId = angle::FormatID::R5G6B5_UNORM;
break;
case angle::FormatID::D16_UNORM:
this->metalFormat = MTLPixelFormatDepth32Float;
this->actualFormatId = angle::FormatID::D32_FLOAT;
break;
case angle::FormatID::D24_UNORM_S8_UINT:
this->metalFormat = MTLPixelFormatDepth32Float_Stencil8;
this->actualFormatId = angle::FormatID::D32_FLOAT_S8X24_UINT;
break;
#endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST
default:
this->metalFormat = MTLPixelFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
}
}
void VertexFormat::init(angle::FormatID angleFormatId, bool tightlyPacked)
{
this->intendedFormatId = angleFormatId;
// Actual conversion
switch (this->intendedFormatId)
{
case angle::FormatID::NONE:
this->metalFormat = MTLVertexFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
this->vertexLoadFunction = nullptr;
break;
case angle::FormatID::R16G16B16A16_SINT:
this->metalFormat = MTLVertexFormatShort4;
this->actualFormatId = angle::FormatID::R16G16B16A16_SINT;
this->vertexLoadFunction = CopyNativeVertexData<GLshort, 4, 4, 0>;
break;
case angle::FormatID::R16G16B16A16_SNORM:
this->metalFormat = MTLVertexFormatShort4Normalized;
this->actualFormatId = angle::FormatID::R16G16B16A16_SNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLshort, 4, 4, 0>;
break;
case angle::FormatID::R16G16B16A16_SSCALED:
this->metalFormat = MTLVertexFormatShort4;
this->actualFormatId = angle::FormatID::R16G16B16A16_SSCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLshort, 4, 4, 0>;
break;
case angle::FormatID::R16G16B16A16_UINT:
this->metalFormat = MTLVertexFormatUShort4;
this->actualFormatId = angle::FormatID::R16G16B16A16_UINT;
this->vertexLoadFunction = CopyNativeVertexData<GLushort, 4, 4, 0>;
break;
case angle::FormatID::R16G16B16A16_UNORM:
this->metalFormat = MTLVertexFormatUShort4Normalized;
this->actualFormatId = angle::FormatID::R16G16B16A16_UNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLushort, 4, 4, 0>;
break;
case angle::FormatID::R16G16B16A16_USCALED:
this->metalFormat = MTLVertexFormatUShort4;
this->actualFormatId = angle::FormatID::R16G16B16A16_USCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLushort, 4, 4, 0>;
break;
case angle::FormatID::R16G16B16_SINT:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLshort, 3, 3, false>;
}
else
{
this->metalFormat = MTLVertexFormatShort3;
this->actualFormatId = angle::FormatID::R16G16B16_SINT;
this->vertexLoadFunction = CopyNativeVertexData<GLshort, 3, 3, 0>;
}
break;
case angle::FormatID::R16G16B16_SNORM:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLshort, 3, 3, true>;
}
else
{
this->metalFormat = MTLVertexFormatShort3Normalized;
this->actualFormatId = angle::FormatID::R16G16B16_SNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLshort, 3, 3, 0>;
}
break;
case angle::FormatID::R16G16B16_SSCALED:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLshort, 3, 3, false>;
}
else
{
this->metalFormat = MTLVertexFormatShort3;
this->actualFormatId = angle::FormatID::R16G16B16_SSCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLshort, 3, 3, 0>;
}
break;
case angle::FormatID::R16G16B16_UINT:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLushort, 3, 3, false>;
}
else
{
this->metalFormat = MTLVertexFormatUShort3;
this->actualFormatId = angle::FormatID::R16G16B16_UINT;
this->vertexLoadFunction = CopyNativeVertexData<GLushort, 3, 3, 0>;
}
break;
case angle::FormatID::R16G16B16_UNORM:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLushort, 3, 3, true>;
}
else
{
this->metalFormat = MTLVertexFormatUShort3Normalized;
this->actualFormatId = angle::FormatID::R16G16B16_UNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLushort, 3, 3, 0>;
}
break;
case angle::FormatID::R16G16B16_USCALED:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLushort, 3, 3, false>;
}
else
{
this->metalFormat = MTLVertexFormatUShort3;
this->actualFormatId = angle::FormatID::R16G16B16_USCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLushort, 3, 3, 0>;
}
break;
case angle::FormatID::R16G16_SINT:
this->metalFormat = MTLVertexFormatShort2;
this->actualFormatId = angle::FormatID::R16G16_SINT;
this->vertexLoadFunction = CopyNativeVertexData<GLshort, 2, 2, 0>;
break;
case angle::FormatID::R16G16_SNORM:
this->metalFormat = MTLVertexFormatShort2Normalized;
this->actualFormatId = angle::FormatID::R16G16_SNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLshort, 2, 2, 0>;
break;
case angle::FormatID::R16G16_SSCALED:
this->metalFormat = MTLVertexFormatShort2;
this->actualFormatId = angle::FormatID::R16G16_SSCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLshort, 2, 2, 0>;
break;
case angle::FormatID::R16G16_UINT:
this->metalFormat = MTLVertexFormatUShort2;
this->actualFormatId = angle::FormatID::R16G16_UINT;
this->vertexLoadFunction = CopyNativeVertexData<GLushort, 2, 2, 0>;
break;
case angle::FormatID::R16G16_UNORM:
this->metalFormat = MTLVertexFormatUShort2Normalized;
this->actualFormatId = angle::FormatID::R16G16_UNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLushort, 2, 2, 0>;
break;
case angle::FormatID::R16G16_USCALED:
this->metalFormat = MTLVertexFormatUShort2;
this->actualFormatId = angle::FormatID::R16G16_USCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLushort, 2, 2, 0>;
break;
case angle::FormatID::R16_SINT:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLshort, 1, 1, false>;
}
else
{
this->metalFormat = MTLVertexFormatShort;
this->actualFormatId = angle::FormatID::R16_SINT;
this->vertexLoadFunction = CopyNativeVertexData<GLshort, 1, 1, 0>;
}
break;
case angle::FormatID::R16_SNORM:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLshort, 1, 1, true>;
}
else
{
this->metalFormat = MTLVertexFormatShortNormalized;
this->actualFormatId = angle::FormatID::R16_SNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLshort, 1, 1, 0>;
}
break;
case angle::FormatID::R16_SSCALED:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLshort, 1, 1, false>;
}
else
{
this->metalFormat = MTLVertexFormatShort;
this->actualFormatId = angle::FormatID::R16_SSCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLshort, 1, 1, 0>;
}
break;
case angle::FormatID::R16_UINT:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLushort, 1, 1, false>;
}
else
{
this->metalFormat = MTLVertexFormatUShort;
this->actualFormatId = angle::FormatID::R16_UINT;
this->vertexLoadFunction = CopyNativeVertexData<GLushort, 1, 1, 0>;
}
break;
case angle::FormatID::R16_UNORM:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLushort, 1, 1, true>;
}
else
{
this->metalFormat = MTLVertexFormatUShortNormalized;
this->actualFormatId = angle::FormatID::R16_UNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLushort, 1, 1, 0>;
}
break;
case angle::FormatID::R16_USCALED:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLushort, 1, 1, false>;
}
else
{
this->metalFormat = MTLVertexFormatUShort;
this->actualFormatId = angle::FormatID::R16_USCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLushort, 1, 1, 0>;
}
break;
case angle::FormatID::R32G32B32A32_FLOAT:
this->metalFormat = MTLVertexFormatFloat4;
this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT;
this->vertexLoadFunction = CopyNativeVertexData<GLfloat, 4, 4, 0>;
break;
case angle::FormatID::R32G32B32_FLOAT:
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyNativeVertexData<GLfloat, 3, 3, 0>;
break;
case angle::FormatID::R32G32_FLOAT:
this->metalFormat = MTLVertexFormatFloat2;
this->actualFormatId = angle::FormatID::R32G32_FLOAT;
this->vertexLoadFunction = CopyNativeVertexData<GLfloat, 2, 2, 0>;
break;
case angle::FormatID::R32_FLOAT:
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyNativeVertexData<GLfloat, 1, 1, 0>;
break;
case angle::FormatID::R8G8B8A8_SINT:
this->metalFormat = MTLVertexFormatChar4;
this->actualFormatId = angle::FormatID::R8G8B8A8_SINT;
this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 4, 4, 0>;
break;
case angle::FormatID::R8G8B8A8_SNORM:
this->metalFormat = MTLVertexFormatChar4Normalized;
this->actualFormatId = angle::FormatID::R8G8B8A8_SNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 4, 4, 0>;
break;
case angle::FormatID::R8G8B8A8_SSCALED:
this->metalFormat = MTLVertexFormatChar4;
this->actualFormatId = angle::FormatID::R8G8B8A8_SSCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 4, 4, 0>;
break;
case angle::FormatID::R8G8B8A8_UINT:
this->metalFormat = MTLVertexFormatUChar4;
this->actualFormatId = angle::FormatID::R8G8B8A8_UINT;
this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 4, 4, 0>;
break;
case angle::FormatID::R8G8B8A8_UNORM:
this->metalFormat = MTLVertexFormatUChar4Normalized;
this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 4, 4, 0>;
break;
case angle::FormatID::R8G8B8A8_USCALED:
this->metalFormat = MTLVertexFormatUChar4;
this->actualFormatId = angle::FormatID::R8G8B8A8_USCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 4, 4, 0>;
break;
case angle::FormatID::R8G8B8_SINT:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLbyte, 3, 3, false>;
}
else
{
this->metalFormat = MTLVertexFormatChar3;
this->actualFormatId = angle::FormatID::R8G8B8_SINT;
this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 3, 3, 0>;
}
break;
case angle::FormatID::R8G8B8_SNORM:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLbyte, 3, 3, true>;
}
else
{
this->metalFormat = MTLVertexFormatChar3Normalized;
this->actualFormatId = angle::FormatID::R8G8B8_SNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 3, 3, 0>;
}
break;
case angle::FormatID::R8G8B8_SSCALED:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLbyte, 3, 3, false>;
}
else
{
this->metalFormat = MTLVertexFormatChar3;
this->actualFormatId = angle::FormatID::R8G8B8_SSCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 3, 3, 0>;
}
break;
case angle::FormatID::R8G8B8_UINT:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLubyte, 3, 3, false>;
}
else
{
this->metalFormat = MTLVertexFormatUChar3;
this->actualFormatId = angle::FormatID::R8G8B8_UINT;
this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 3, 3, 0>;
}
break;
case angle::FormatID::R8G8B8_UNORM:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLubyte, 3, 3, true>;
}
else
{
this->metalFormat = MTLVertexFormatUChar3Normalized;
this->actualFormatId = angle::FormatID::R8G8B8_UNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 3, 3, 0>;
}
break;
case angle::FormatID::R8G8B8_USCALED:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLubyte, 3, 3, false>;
}
else
{
this->metalFormat = MTLVertexFormatUChar3;
this->actualFormatId = angle::FormatID::R8G8B8_USCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 3, 3, 0>;
}
break;
case angle::FormatID::R8G8_SINT:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat2;
this->actualFormatId = angle::FormatID::R32G32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLbyte, 2, 2, false>;
}
else
{
this->metalFormat = MTLVertexFormatChar2;
this->actualFormatId = angle::FormatID::R8G8_SINT;
this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 2, 2, 0>;
}
break;
case angle::FormatID::R8G8_SNORM:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat2;
this->actualFormatId = angle::FormatID::R32G32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLbyte, 2, 2, true>;
}
else
{
this->metalFormat = MTLVertexFormatChar2Normalized;
this->actualFormatId = angle::FormatID::R8G8_SNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 2, 2, 0>;
}
break;
case angle::FormatID::R8G8_SSCALED:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat2;
this->actualFormatId = angle::FormatID::R32G32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLbyte, 2, 2, false>;
}
else
{
this->metalFormat = MTLVertexFormatChar2;
this->actualFormatId = angle::FormatID::R8G8_SSCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 2, 2, 0>;
}
break;
case angle::FormatID::R8G8_UINT:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat2;
this->actualFormatId = angle::FormatID::R32G32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLubyte, 2, 2, false>;
}
else
{
this->metalFormat = MTLVertexFormatUChar2;
this->actualFormatId = angle::FormatID::R8G8_UINT;
this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 2, 2, 0>;
}
break;
case angle::FormatID::R8G8_UNORM:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat2;
this->actualFormatId = angle::FormatID::R32G32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLubyte, 2, 2, true>;
}
else
{
this->metalFormat = MTLVertexFormatUChar2Normalized;
this->actualFormatId = angle::FormatID::R8G8_UNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 2, 2, 0>;
}
break;
case angle::FormatID::R8G8_USCALED:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat2;
this->actualFormatId = angle::FormatID::R32G32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLubyte, 2, 2, false>;
}
else
{
this->metalFormat = MTLVertexFormatUChar2;
this->actualFormatId = angle::FormatID::R8G8_USCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 2, 2, 0>;
}
break;
case angle::FormatID::R8_SINT:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLbyte, 1, 1, false>;
}
else
{
this->metalFormat = MTLVertexFormatChar;
this->actualFormatId = angle::FormatID::R8_SINT;
this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 1, 1, 0>;
}
break;
case angle::FormatID::R8_SNORM:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLbyte, 1, 1, true>;
}
else
{
this->metalFormat = MTLVertexFormatCharNormalized;
this->actualFormatId = angle::FormatID::R8_SNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 1, 1, 0>;
}
break;
case angle::FormatID::R8_SSCALED:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLbyte, 1, 1, false>;
}
else
{
this->metalFormat = MTLVertexFormatChar;
this->actualFormatId = angle::FormatID::R8_SSCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 1, 1, 0>;
}
break;
case angle::FormatID::R8_UINT:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLubyte, 1, 1, false>;
}
else
{
this->metalFormat = MTLVertexFormatUChar;
this->actualFormatId = angle::FormatID::R8_UINT;
this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 1, 1, 0>;
}
break;
case angle::FormatID::R8_UNORM:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLubyte, 1, 1, true>;
}
else
{
this->metalFormat = MTLVertexFormatUCharNormalized;
this->actualFormatId = angle::FormatID::R8_UNORM;
this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 1, 1, 0>;
}
break;
case angle::FormatID::R8_USCALED:
if (tightlyPacked)
{
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = CopyTo32FVertexData<GLubyte, 1, 1, false>;
}
else
{
this->metalFormat = MTLVertexFormatUChar;
this->actualFormatId = angle::FormatID::R8_USCALED;
this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 1, 1, 0>;
}
break;
case angle::FormatID::R32G32B32A32_FIXED:
this->metalFormat = MTLVertexFormatFloat4;
this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT;
this->vertexLoadFunction = Copy32FixedTo32FVertexData<4, 4>;
break;
case angle::FormatID::R32G32B32_FIXED:
this->metalFormat = MTLVertexFormatFloat3;
this->actualFormatId = angle::FormatID::R32G32B32_FLOAT;
this->vertexLoadFunction = Copy32FixedTo32FVertexData<3, 3>;
break;
case angle::FormatID::R32G32_FIXED:
this->metalFormat = MTLVertexFormatFloat2;
this->actualFormatId = angle::FormatID::R32G32_FLOAT;
this->vertexLoadFunction = Copy32FixedTo32FVertexData<2, 2>;
break;
case angle::FormatID::R32_FIXED:
this->metalFormat = MTLVertexFormatFloat;
this->actualFormatId = angle::FormatID::R32_FLOAT;
this->vertexLoadFunction = Copy32FixedTo32FVertexData<1, 1>;
break;
default:
this->metalFormat = MTLVertexFormatInvalid;
this->actualFormatId = angle::FormatID::NONE;
this->vertexLoadFunction = nullptr;
}
}
} // namespace mtl
} // namespace rx