| // GENERATED FILE - DO NOT EDIT. |
| // Generated by gen_mtl_format_table.py using data from mtl_format_map.json |
| // |
| // Copyright 2020 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 "image_util/copyimage.h" |
| #include "image_util/generatemip.h" |
| #include "image_util/loadimage.h" |
| #include "libANGLE/renderer/Format.h" |
| #include "libANGLE/renderer/metal/DisplayMtl.h" |
| #include "libANGLE/renderer/metal/mtl_format_utils.h" |
| #include "libANGLE/renderer/metal/mtl_utils.h" |
| |
| using namespace angle; |
| |
| namespace rx |
| { |
| namespace mtl |
| { |
| |
| angle::FormatID Format::MetalToAngleFormatID(MTLPixelFormat formatMtl) |
| { |
| // Actual conversion |
| switch (formatMtl) |
| { |
| case MTLPixelFormatA8Unorm: |
| return angle::FormatID::A8_UNORM; |
| case MTLPixelFormatBGR10A2Unorm: |
| return angle::FormatID::B10G10R10A2_UNORM; |
| case MTLPixelFormatBGRA8Unorm: |
| return angle::FormatID::B8G8R8A8_UNORM; |
| case MTLPixelFormatBGRA8Unorm_sRGB: |
| return angle::FormatID::B8G8R8A8_UNORM_SRGB; |
| case MTLPixelFormatDepth32Float: |
| return angle::FormatID::D32_FLOAT; |
| case MTLPixelFormatDepth32Float_Stencil8: |
| return angle::FormatID::D32_FLOAT_S8X24_UINT; |
| case MTLPixelFormatInvalid: |
| return angle::FormatID::NONE; |
| case MTLPixelFormatRGB10A2Uint: |
| return angle::FormatID::R10G10B10A2_UINT; |
| case MTLPixelFormatRGB10A2Unorm: |
| return angle::FormatID::R10G10B10A2_UNORM; |
| case MTLPixelFormatRG11B10Float: |
| return angle::FormatID::R11G11B10_FLOAT; |
| case MTLPixelFormatRGBA16Float: |
| return angle::FormatID::R16G16B16A16_FLOAT; |
| case MTLPixelFormatRGBA16Sint: |
| return angle::FormatID::R16G16B16A16_SINT; |
| case MTLPixelFormatRGBA16Snorm: |
| return angle::FormatID::R16G16B16A16_SNORM; |
| case MTLPixelFormatRGBA16Uint: |
| return angle::FormatID::R16G16B16A16_UINT; |
| case MTLPixelFormatRGBA16Unorm: |
| return angle::FormatID::R16G16B16A16_UNORM; |
| case MTLPixelFormatRG16Float: |
| return angle::FormatID::R16G16_FLOAT; |
| case MTLPixelFormatRG16Sint: |
| return angle::FormatID::R16G16_SINT; |
| case MTLPixelFormatRG16Snorm: |
| return angle::FormatID::R16G16_SNORM; |
| case MTLPixelFormatRG16Uint: |
| return angle::FormatID::R16G16_UINT; |
| case MTLPixelFormatRG16Unorm: |
| return angle::FormatID::R16G16_UNORM; |
| case MTLPixelFormatR16Float: |
| return angle::FormatID::R16_FLOAT; |
| case MTLPixelFormatR16Sint: |
| return angle::FormatID::R16_SINT; |
| case MTLPixelFormatR16Snorm: |
| return angle::FormatID::R16_SNORM; |
| case MTLPixelFormatR16Uint: |
| return angle::FormatID::R16_UINT; |
| case MTLPixelFormatR16Unorm: |
| return angle::FormatID::R16_UNORM; |
| case MTLPixelFormatRGBA32Float: |
| return angle::FormatID::R32G32B32A32_FLOAT; |
| case MTLPixelFormatRGBA32Sint: |
| return angle::FormatID::R32G32B32A32_SINT; |
| case MTLPixelFormatRGBA32Uint: |
| return angle::FormatID::R32G32B32A32_UINT; |
| case MTLPixelFormatRG32Float: |
| return angle::FormatID::R32G32_FLOAT; |
| case MTLPixelFormatRG32Sint: |
| return angle::FormatID::R32G32_SINT; |
| case MTLPixelFormatRG32Uint: |
| return angle::FormatID::R32G32_UINT; |
| case MTLPixelFormatR32Float: |
| return angle::FormatID::R32_FLOAT; |
| case MTLPixelFormatR32Sint: |
| return angle::FormatID::R32_SINT; |
| case MTLPixelFormatR32Uint: |
| return angle::FormatID::R32_UINT; |
| case MTLPixelFormatRGBA8Sint: |
| return angle::FormatID::R8G8B8A8_SINT; |
| case MTLPixelFormatRGBA8Snorm: |
| return angle::FormatID::R8G8B8A8_SNORM; |
| case MTLPixelFormatRGBA8Uint: |
| return angle::FormatID::R8G8B8A8_UINT; |
| case MTLPixelFormatRGBA8Unorm: |
| return angle::FormatID::R8G8B8A8_UNORM; |
| case MTLPixelFormatRGBA8Unorm_sRGB: |
| return angle::FormatID::R8G8B8A8_UNORM_SRGB; |
| case MTLPixelFormatRG8Sint: |
| return angle::FormatID::R8G8_SINT; |
| case MTLPixelFormatRG8Snorm: |
| return angle::FormatID::R8G8_SNORM; |
| case MTLPixelFormatRG8Uint: |
| return angle::FormatID::R8G8_UINT; |
| case MTLPixelFormatRG8Unorm: |
| return angle::FormatID::R8G8_UNORM; |
| case MTLPixelFormatR8Sint: |
| return angle::FormatID::R8_SINT; |
| case MTLPixelFormatR8Snorm: |
| return angle::FormatID::R8_SNORM; |
| case MTLPixelFormatR8Uint: |
| return angle::FormatID::R8_UINT; |
| case MTLPixelFormatR8Unorm: |
| return angle::FormatID::R8_UNORM; |
| case MTLPixelFormatRGB9E5Float: |
| return angle::FormatID::R9G9B9E5_SHAREDEXP; |
| case MTLPixelFormatStencil8: |
| return angle::FormatID::S8_UINT; |
| #if TARGET_OS_OSX || TARGET_OS_MACCATALYST |
| case MTLPixelFormatBC1_RGBA: |
| return angle::FormatID::BC1_RGBA_UNORM_BLOCK; |
| case MTLPixelFormatBC1_RGBA_sRGB: |
| return angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK; |
| case MTLPixelFormatBC2_RGBA: |
| return angle::FormatID::BC2_RGBA_UNORM_BLOCK; |
| case MTLPixelFormatBC2_RGBA_sRGB: |
| return angle::FormatID::BC2_RGBA_UNORM_SRGB_BLOCK; |
| case MTLPixelFormatBC3_RGBA: |
| return angle::FormatID::BC3_RGBA_UNORM_BLOCK; |
| case MTLPixelFormatBC3_RGBA_sRGB: |
| return angle::FormatID::BC3_RGBA_UNORM_SRGB_BLOCK; |
| case MTLPixelFormatBC4_RSnorm: |
| return angle::FormatID::BC4_RED_SNORM_BLOCK; |
| case MTLPixelFormatBC4_RUnorm: |
| return angle::FormatID::BC4_RED_UNORM_BLOCK; |
| case MTLPixelFormatBC5_RGSnorm: |
| return angle::FormatID::BC5_RG_SNORM_BLOCK; |
| case MTLPixelFormatBC5_RGUnorm: |
| return angle::FormatID::BC5_RG_UNORM_BLOCK; |
| case MTLPixelFormatBC6H_RGBFloat: |
| return angle::FormatID::BC6H_RGB_SFLOAT_BLOCK; |
| case MTLPixelFormatBC6H_RGBUfloat: |
| return angle::FormatID::BC6H_RGB_UFLOAT_BLOCK; |
| case MTLPixelFormatBC7_RGBAUnorm: |
| return angle::FormatID::BC7_RGBA_UNORM_BLOCK; |
| case MTLPixelFormatBC7_RGBAUnorm_sRGB: |
| return angle::FormatID::BC7_RGBA_UNORM_SRGB_BLOCK; |
| case MTLPixelFormatDepth24Unorm_Stencil8: |
| return angle::FormatID::D24_UNORM_S8_UINT; |
| #endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST |
| #if TARGET_OS_IPHONE || (TARGET_OS_OSX && (__MAC_OS_X_VERSION_MAX_ALLOWED >= 110000)) |
| case MTLPixelFormatASTC_10x10_sRGB: |
| return angle::FormatID::ASTC_10x10_SRGB_BLOCK; |
| case MTLPixelFormatASTC_10x5_sRGB: |
| return angle::FormatID::ASTC_10x5_SRGB_BLOCK; |
| case MTLPixelFormatASTC_10x6_sRGB: |
| return angle::FormatID::ASTC_10x6_SRGB_BLOCK; |
| case MTLPixelFormatASTC_10x8_sRGB: |
| return angle::FormatID::ASTC_10x8_SRGB_BLOCK; |
| case MTLPixelFormatASTC_12x10_sRGB: |
| return angle::FormatID::ASTC_12x10_SRGB_BLOCK; |
| case MTLPixelFormatASTC_12x12_sRGB: |
| return angle::FormatID::ASTC_12x12_SRGB_BLOCK; |
| case MTLPixelFormatASTC_4x4_sRGB: |
| return angle::FormatID::ASTC_4x4_SRGB_BLOCK; |
| case MTLPixelFormatASTC_5x4_sRGB: |
| return angle::FormatID::ASTC_5x4_SRGB_BLOCK; |
| case MTLPixelFormatASTC_5x5_sRGB: |
| return angle::FormatID::ASTC_5x5_SRGB_BLOCK; |
| case MTLPixelFormatASTC_6x5_sRGB: |
| return angle::FormatID::ASTC_6x5_SRGB_BLOCK; |
| case MTLPixelFormatASTC_6x6_sRGB: |
| return angle::FormatID::ASTC_6x6_SRGB_BLOCK; |
| case MTLPixelFormatASTC_8x5_sRGB: |
| return angle::FormatID::ASTC_8x5_SRGB_BLOCK; |
| case MTLPixelFormatASTC_8x6_sRGB: |
| return angle::FormatID::ASTC_8x6_SRGB_BLOCK; |
| case MTLPixelFormatASTC_8x8_sRGB: |
| return angle::FormatID::ASTC_8x8_SRGB_BLOCK; |
| case MTLPixelFormatEAC_RG11Snorm: |
| return angle::FormatID::EAC_R11G11_SNORM_BLOCK; |
| case MTLPixelFormatEAC_RG11Unorm: |
| return angle::FormatID::EAC_R11G11_UNORM_BLOCK; |
| case MTLPixelFormatEAC_R11Snorm: |
| return angle::FormatID::EAC_R11_SNORM_BLOCK; |
| case MTLPixelFormatEAC_R11Unorm: |
| return angle::FormatID::EAC_R11_UNORM_BLOCK; |
| case MTLPixelFormatETC2_RGB8A1_sRGB: |
| return angle::FormatID::ETC2_R8G8B8A1_SRGB_BLOCK; |
| case MTLPixelFormatETC2_RGB8A1: |
| return angle::FormatID::ETC2_R8G8B8A1_UNORM_BLOCK; |
| case MTLPixelFormatEAC_RGBA8_sRGB: |
| return angle::FormatID::ETC2_R8G8B8A8_SRGB_BLOCK; |
| case MTLPixelFormatEAC_RGBA8: |
| return angle::FormatID::ETC2_R8G8B8A8_UNORM_BLOCK; |
| case MTLPixelFormatETC2_RGB8_sRGB: |
| return angle::FormatID::ETC2_R8G8B8_SRGB_BLOCK; |
| case MTLPixelFormatETC2_RGB8: |
| return angle::FormatID::ETC2_R8G8B8_UNORM_BLOCK; |
| case MTLPixelFormatPVRTC_RGBA_2BPP: |
| return angle::FormatID::PVRTC1_RGBA_2BPP_UNORM_BLOCK; |
| case MTLPixelFormatPVRTC_RGBA_2BPP_sRGB: |
| return angle::FormatID::PVRTC1_RGBA_2BPP_UNORM_SRGB_BLOCK; |
| case MTLPixelFormatPVRTC_RGBA_4BPP: |
| return angle::FormatID::PVRTC1_RGBA_4BPP_UNORM_BLOCK; |
| case MTLPixelFormatPVRTC_RGBA_4BPP_sRGB: |
| return angle::FormatID::PVRTC1_RGBA_4BPP_UNORM_SRGB_BLOCK; |
| case MTLPixelFormatPVRTC_RGB_2BPP: |
| return angle::FormatID::PVRTC1_RGB_2BPP_UNORM_BLOCK; |
| case MTLPixelFormatPVRTC_RGB_2BPP_sRGB: |
| return angle::FormatID::PVRTC1_RGB_2BPP_UNORM_SRGB_BLOCK; |
| case MTLPixelFormatPVRTC_RGB_4BPP: |
| return angle::FormatID::PVRTC1_RGB_4BPP_UNORM_BLOCK; |
| case MTLPixelFormatPVRTC_RGB_4BPP_sRGB: |
| return angle::FormatID::PVRTC1_RGB_4BPP_UNORM_SRGB_BLOCK; |
| case MTLPixelFormatABGR4Unorm: |
| return angle::FormatID::R4G4B4A4_UNORM; |
| case MTLPixelFormatA1BGR5Unorm: |
| return angle::FormatID::R5G5B5A1_UNORM; |
| case MTLPixelFormatB5G6R5Unorm: |
| return angle::FormatID::R5G6B5_UNORM; |
| case MTLPixelFormatRG8Unorm_sRGB: |
| return angle::FormatID::R8G8_UNORM_SRGB; |
| case MTLPixelFormatR8Unorm_sRGB: |
| return angle::FormatID::R8_UNORM_SRGB; |
| case MTLPixelFormatASTC_10x10_LDR: |
| return angle::FormatID::ASTC_10x10_UNORM_BLOCK; |
| case MTLPixelFormatASTC_10x5_LDR: |
| return angle::FormatID::ASTC_10x5_UNORM_BLOCK; |
| case MTLPixelFormatASTC_10x6_LDR: |
| return angle::FormatID::ASTC_10x6_UNORM_BLOCK; |
| case MTLPixelFormatASTC_10x8_LDR: |
| return angle::FormatID::ASTC_10x8_UNORM_BLOCK; |
| case MTLPixelFormatASTC_12x10_LDR: |
| return angle::FormatID::ASTC_12x10_UNORM_BLOCK; |
| case MTLPixelFormatASTC_12x12_LDR: |
| return angle::FormatID::ASTC_12x12_UNORM_BLOCK; |
| case MTLPixelFormatASTC_4x4_LDR: |
| return angle::FormatID::ASTC_4x4_UNORM_BLOCK; |
| case MTLPixelFormatASTC_5x4_LDR: |
| return angle::FormatID::ASTC_5x4_UNORM_BLOCK; |
| case MTLPixelFormatASTC_5x5_LDR: |
| return angle::FormatID::ASTC_5x5_UNORM_BLOCK; |
| case MTLPixelFormatASTC_6x5_LDR: |
| return angle::FormatID::ASTC_6x5_UNORM_BLOCK; |
| case MTLPixelFormatASTC_6x6_LDR: |
| return angle::FormatID::ASTC_6x6_UNORM_BLOCK; |
| case MTLPixelFormatASTC_8x5_LDR: |
| return angle::FormatID::ASTC_8x5_UNORM_BLOCK; |
| case MTLPixelFormatASTC_8x6_LDR: |
| return angle::FormatID::ASTC_8x6_UNORM_BLOCK; |
| case MTLPixelFormatASTC_8x8_LDR: |
| return angle::FormatID::ASTC_8x8_UNORM_BLOCK; |
| # if TARGET_OS_IOS || TARGET_OS_OSX |
| case MTLPixelFormatASTC_10x10_HDR: |
| return angle::FormatID::ASTC_10x10_UNORM_BLOCK; |
| case MTLPixelFormatASTC_10x5_HDR: |
| return angle::FormatID::ASTC_10x5_UNORM_BLOCK; |
| case MTLPixelFormatASTC_10x6_HDR: |
| return angle::FormatID::ASTC_10x6_UNORM_BLOCK; |
| case MTLPixelFormatASTC_10x8_HDR: |
| return angle::FormatID::ASTC_10x8_UNORM_BLOCK; |
| case MTLPixelFormatASTC_12x10_HDR: |
| return angle::FormatID::ASTC_12x10_UNORM_BLOCK; |
| case MTLPixelFormatASTC_12x12_HDR: |
| return angle::FormatID::ASTC_12x12_UNORM_BLOCK; |
| case MTLPixelFormatASTC_4x4_HDR: |
| return angle::FormatID::ASTC_4x4_UNORM_BLOCK; |
| case MTLPixelFormatASTC_5x4_HDR: |
| return angle::FormatID::ASTC_5x4_UNORM_BLOCK; |
| case MTLPixelFormatASTC_5x5_HDR: |
| return angle::FormatID::ASTC_5x5_UNORM_BLOCK; |
| case MTLPixelFormatASTC_6x5_HDR: |
| return angle::FormatID::ASTC_6x5_UNORM_BLOCK; |
| case MTLPixelFormatASTC_6x6_HDR: |
| return angle::FormatID::ASTC_6x6_UNORM_BLOCK; |
| case MTLPixelFormatASTC_8x5_HDR: |
| return angle::FormatID::ASTC_8x5_UNORM_BLOCK; |
| case MTLPixelFormatASTC_8x6_HDR: |
| return angle::FormatID::ASTC_8x6_UNORM_BLOCK; |
| case MTLPixelFormatASTC_8x8_HDR: |
| return angle::FormatID::ASTC_8x8_UNORM_BLOCK; |
| # endif // TARGET_OS_IOS || TARGET_OS_OSX |
| #endif // TARGET_OS_IPHONE || mac 11.0+ |
| default: |
| return angle::FormatID::NONE; |
| } |
| } |
| |
| void Format::init(const DisplayMtl *display, angle::FormatID intendedFormatId_) |
| { |
| this->intendedFormatId = intendedFormatId_; |
| #if TARGET_OS_OSX || TARGET_OS_MACCATALYST |
| id<MTLDevice> metalDevice = display->getMetalDevice(); |
| #endif |
| |
| // Actual conversion |
| switch (this->intendedFormatId) |
| { |
| case angle::FormatID::A8_UNORM: |
| |
| this->metalFormat = MTLPixelFormatA8Unorm; |
| this->actualFormatId = angle::FormatID::A8_UNORM; |
| break; |
| |
| case angle::FormatID::B10G10R10A2_UNORM: |
| |
| this->metalFormat = MTLPixelFormatBGR10A2Unorm; |
| this->actualFormatId = angle::FormatID::B10G10R10A2_UNORM; |
| break; |
| |
| case angle::FormatID::B8G8R8A8_UNORM: |
| |
| this->metalFormat = MTLPixelFormatBGRA8Unorm; |
| this->actualFormatId = angle::FormatID::B8G8R8A8_UNORM; |
| break; |
| |
| 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; |
| |
| case angle::FormatID::R10G10B10A2_UINT: |
| |
| this->metalFormat = MTLPixelFormatRGB10A2Uint; |
| this->actualFormatId = angle::FormatID::R10G10B10A2_UINT; |
| break; |
| |
| case angle::FormatID::R10G10B10A2_UNORM: |
| |
| this->metalFormat = MTLPixelFormatRGB10A2Unorm; |
| this->actualFormatId = angle::FormatID::R10G10B10A2_UNORM; |
| break; |
| |
| case angle::FormatID::R11G11B10_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRG11B10Float; |
| this->actualFormatId = angle::FormatID::R11G11B10_FLOAT; |
| break; |
| |
| case angle::FormatID::R16G16B16A16_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Float; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT; |
| break; |
| |
| case angle::FormatID::R16G16B16A16_SINT: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Sint; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_SINT; |
| break; |
| |
| case angle::FormatID::R16G16B16A16_SNORM: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Snorm; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_SNORM; |
| break; |
| |
| case angle::FormatID::R16G16B16A16_UINT: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Uint; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_UINT; |
| break; |
| |
| case angle::FormatID::R16G16B16A16_UNORM: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Unorm; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_UNORM; |
| break; |
| |
| case angle::FormatID::R16G16_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRG16Float; |
| this->actualFormatId = angle::FormatID::R16G16_FLOAT; |
| break; |
| |
| case angle::FormatID::R16G16_SINT: |
| |
| this->metalFormat = MTLPixelFormatRG16Sint; |
| this->actualFormatId = angle::FormatID::R16G16_SINT; |
| break; |
| |
| case angle::FormatID::R16G16_SNORM: |
| |
| this->metalFormat = MTLPixelFormatRG16Snorm; |
| this->actualFormatId = angle::FormatID::R16G16_SNORM; |
| break; |
| |
| case angle::FormatID::R16G16_UINT: |
| |
| this->metalFormat = MTLPixelFormatRG16Uint; |
| this->actualFormatId = angle::FormatID::R16G16_UINT; |
| break; |
| |
| case angle::FormatID::R16G16_UNORM: |
| |
| this->metalFormat = MTLPixelFormatRG16Unorm; |
| this->actualFormatId = angle::FormatID::R16G16_UNORM; |
| break; |
| |
| case angle::FormatID::R16_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatR16Float; |
| this->actualFormatId = angle::FormatID::R16_FLOAT; |
| break; |
| |
| case angle::FormatID::R16_SINT: |
| |
| this->metalFormat = MTLPixelFormatR16Sint; |
| this->actualFormatId = angle::FormatID::R16_SINT; |
| break; |
| |
| case angle::FormatID::R16_SNORM: |
| |
| this->metalFormat = MTLPixelFormatR16Snorm; |
| this->actualFormatId = angle::FormatID::R16_SNORM; |
| break; |
| |
| case angle::FormatID::R16_UINT: |
| |
| this->metalFormat = MTLPixelFormatR16Uint; |
| this->actualFormatId = angle::FormatID::R16_UINT; |
| break; |
| |
| case angle::FormatID::R16_UNORM: |
| |
| this->metalFormat = MTLPixelFormatR16Unorm; |
| this->actualFormatId = angle::FormatID::R16_UNORM; |
| break; |
| |
| case angle::FormatID::R32G32B32A32_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRGBA32Float; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| break; |
| |
| case angle::FormatID::R32G32B32A32_SINT: |
| |
| this->metalFormat = MTLPixelFormatRGBA32Sint; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_SINT; |
| break; |
| |
| case angle::FormatID::R32G32B32A32_UINT: |
| |
| this->metalFormat = MTLPixelFormatRGBA32Uint; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_UINT; |
| break; |
| |
| case angle::FormatID::R32G32_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRG32Float; |
| this->actualFormatId = angle::FormatID::R32G32_FLOAT; |
| break; |
| |
| case angle::FormatID::R32G32_SINT: |
| |
| this->metalFormat = MTLPixelFormatRG32Sint; |
| this->actualFormatId = angle::FormatID::R32G32_SINT; |
| break; |
| |
| case angle::FormatID::R32G32_UINT: |
| |
| this->metalFormat = MTLPixelFormatRG32Uint; |
| this->actualFormatId = angle::FormatID::R32G32_UINT; |
| break; |
| |
| case angle::FormatID::R32_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatR32Float; |
| this->actualFormatId = angle::FormatID::R32_FLOAT; |
| break; |
| |
| case angle::FormatID::R32_SINT: |
| |
| this->metalFormat = MTLPixelFormatR32Sint; |
| this->actualFormatId = angle::FormatID::R32_SINT; |
| break; |
| |
| case angle::FormatID::R32_UINT: |
| |
| this->metalFormat = MTLPixelFormatR32Uint; |
| this->actualFormatId = angle::FormatID::R32_UINT; |
| break; |
| |
| case angle::FormatID::R8G8B8A8_SINT: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Sint; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SINT; |
| break; |
| |
| case angle::FormatID::R8G8B8A8_SNORM: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Snorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SNORM; |
| break; |
| |
| case angle::FormatID::R8G8B8A8_UINT: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Uint; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UINT; |
| break; |
| |
| 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_SINT: |
| |
| this->metalFormat = MTLPixelFormatRG8Sint; |
| this->actualFormatId = angle::FormatID::R8G8_SINT; |
| break; |
| |
| case angle::FormatID::R8G8_SNORM: |
| |
| this->metalFormat = MTLPixelFormatRG8Snorm; |
| this->actualFormatId = angle::FormatID::R8G8_SNORM; |
| break; |
| |
| case angle::FormatID::R8G8_UINT: |
| |
| this->metalFormat = MTLPixelFormatRG8Uint; |
| this->actualFormatId = angle::FormatID::R8G8_UINT; |
| break; |
| |
| case angle::FormatID::R8G8_UNORM: |
| |
| this->metalFormat = MTLPixelFormatRG8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8_UNORM; |
| break; |
| |
| case angle::FormatID::R8_SINT: |
| |
| this->metalFormat = MTLPixelFormatR8Sint; |
| this->actualFormatId = angle::FormatID::R8_SINT; |
| break; |
| |
| case angle::FormatID::R8_SNORM: |
| |
| this->metalFormat = MTLPixelFormatR8Snorm; |
| this->actualFormatId = angle::FormatID::R8_SNORM; |
| break; |
| |
| case angle::FormatID::R8_UINT: |
| |
| this->metalFormat = MTLPixelFormatR8Uint; |
| this->actualFormatId = angle::FormatID::R8_UINT; |
| break; |
| |
| case angle::FormatID::R8_UNORM: |
| |
| this->metalFormat = MTLPixelFormatR8Unorm; |
| this->actualFormatId = angle::FormatID::R8_UNORM; |
| break; |
| |
| case angle::FormatID::R9G9B9E5_SHAREDEXP: |
| |
| this->metalFormat = MTLPixelFormatRGB9E5Float; |
| this->actualFormatId = angle::FormatID::R9G9B9E5_SHAREDEXP; |
| break; |
| |
| case angle::FormatID::S8_UINT: |
| |
| this->metalFormat = MTLPixelFormatStencil8; |
| this->actualFormatId = angle::FormatID::S8_UINT; |
| break; |
| |
| case angle::FormatID::A16_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Float; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT; |
| break; |
| |
| case angle::FormatID::A32_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRGBA32Float; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| break; |
| |
| case angle::FormatID::D24_UNORM_X8_UINT: |
| |
| this->metalFormat = MTLPixelFormatDepth32Float; |
| this->actualFormatId = angle::FormatID::D32_FLOAT; |
| break; |
| |
| case angle::FormatID::D32_UNORM: |
| |
| this->metalFormat = MTLPixelFormatDepth32Float; |
| this->actualFormatId = angle::FormatID::D32_FLOAT; |
| break; |
| |
| case angle::FormatID::L16A16_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Float; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT; |
| break; |
| |
| case angle::FormatID::L16_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Float; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT; |
| this->initFunction = |
| Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>; |
| break; |
| |
| case angle::FormatID::L32A32_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRGBA32Float; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| break; |
| |
| case angle::FormatID::L32_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRGBA32Float; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| this->initFunction = Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, |
| 0x00000000, gl::Float32One>; |
| break; |
| |
| 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; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| break; |
| |
| case angle::FormatID::R16G16B16_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Float; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT; |
| this->initFunction = |
| Initialize4ComponentData<GLhalf, 0x0000, 0x0000, 0x0000, gl::Float16One>; |
| break; |
| |
| case angle::FormatID::R16G16B16_SINT: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Sint; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_SINT; |
| this->initFunction = Initialize4ComponentData<GLshort, 0x0000, 0x0000, 0x0000, 0x0001>; |
| break; |
| |
| case angle::FormatID::R16G16B16_SNORM: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Snorm; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_SNORM; |
| this->initFunction = Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x7FFF>; |
| break; |
| |
| case angle::FormatID::R16G16B16_UINT: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Uint; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_UINT; |
| this->initFunction = Initialize4ComponentData<GLushort, 0x0000, 0x0000, 0x0000, 0x0001>; |
| break; |
| |
| case angle::FormatID::R16G16B16_UNORM: |
| |
| this->metalFormat = MTLPixelFormatRGBA16Unorm; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_UNORM; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x0000, 0x0000, 0x0000, 0xFFFF>; |
| break; |
| |
| case angle::FormatID::R32G32B32_FLOAT: |
| |
| this->metalFormat = MTLPixelFormatRGBA32Float; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| this->initFunction = Initialize4ComponentData<GLfloat, 0x00000000, 0x00000000, |
| 0x00000000, gl::Float32One>; |
| break; |
| |
| case angle::FormatID::R32G32B32_SINT: |
| |
| this->metalFormat = MTLPixelFormatRGBA32Sint; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_SINT; |
| this->initFunction = |
| Initialize4ComponentData<GLint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>; |
| break; |
| |
| case angle::FormatID::R32G32B32_UINT: |
| |
| this->metalFormat = MTLPixelFormatRGBA32Uint; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_UINT; |
| this->initFunction = |
| Initialize4ComponentData<GLuint, 0x00000000, 0x00000000, 0x00000000, 0x00000001>; |
| break; |
| |
| case angle::FormatID::R8G8B8_SINT: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Sint; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SINT; |
| this->initFunction = Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x01>; |
| break; |
| |
| case angle::FormatID::R8G8B8_SNORM: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Snorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SNORM; |
| this->initFunction = Initialize4ComponentData<GLbyte, 0x00, 0x00, 0x00, 0x7F>; |
| break; |
| |
| case angle::FormatID::R8G8B8_UINT: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Uint; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UINT; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0x01>; |
| break; |
| |
| case angle::FormatID::R8G8B8_UNORM: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| break; |
| |
| case angle::FormatID::R8G8B8_UNORM_SRGB: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Unorm_sRGB; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM_SRGB; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| 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::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::BC4_RED_SNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatBC4_RSnorm; |
| this->actualFormatId = angle::FormatID::BC4_RED_SNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::BC4_RED_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatBC4_RUnorm; |
| this->actualFormatId = angle::FormatID::BC4_RED_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::BC5_RG_SNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatBC5_RGSnorm; |
| this->actualFormatId = angle::FormatID::BC5_RG_SNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::BC5_RG_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatBC5_RGUnorm; |
| this->actualFormatId = angle::FormatID::BC5_RG_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::BC6H_RGB_SFLOAT_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatBC6H_RGBFloat; |
| this->actualFormatId = angle::FormatID::BC6H_RGB_SFLOAT_BLOCK; |
| break; |
| |
| case angle::FormatID::BC6H_RGB_UFLOAT_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatBC6H_RGBUfloat; |
| this->actualFormatId = angle::FormatID::BC6H_RGB_UFLOAT_BLOCK; |
| break; |
| |
| case angle::FormatID::BC7_RGBA_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatBC7_RGBAUnorm; |
| this->actualFormatId = angle::FormatID::BC7_RGBA_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::BC7_RGBA_UNORM_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatBC7_RGBAUnorm_sRGB; |
| this->actualFormatId = angle::FormatID::BC7_RGBA_UNORM_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::D24_UNORM_S8_UINT: |
| |
| if (metalDevice.depth24Stencil8PixelFormatSupported && |
| !display->getFeatures().forceD24S8AsUnsupported.enabled) |
| { |
| 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::D16_UNORM: |
| |
| this->metalFormat = MTLPixelFormatDepth32Float; |
| this->actualFormatId = angle::FormatID::D32_FLOAT; |
| break; |
| |
| case angle::FormatID::BC1_RGB_UNORM_BLOCK: |
| # if defined(__IPHONE_13_0) || defined(__MAC_10_15) |
| if (display->getFeatures().hasTextureSwizzle.enabled) |
| { |
| |
| this->metalFormat = MTLPixelFormatBC1_RGBA; |
| this->actualFormatId = angle::FormatID::BC1_RGBA_UNORM_BLOCK; |
| this->swizzled = true; |
| this->swizzle = {GL_RED, GL_GREEN, GL_BLUE, GL_ONE}; |
| } |
| else |
| # endif // #if defined(__IPHONE_13_0) || defined(__MAC_10_15) |
| { |
| |
| this->metalFormat = MTLPixelFormatBC1_RGBA; |
| this->actualFormatId = angle::FormatID::BC1_RGBA_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::BC1_RGB_UNORM_SRGB_BLOCK: |
| # if defined(__IPHONE_13_0) || defined(__MAC_10_15) |
| if (display->getFeatures().hasTextureSwizzle.enabled) |
| { |
| |
| this->metalFormat = MTLPixelFormatBC1_RGBA_sRGB; |
| this->actualFormatId = angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK; |
| this->swizzled = true; |
| this->swizzle = {GL_RED, GL_GREEN, GL_BLUE, GL_ONE}; |
| } |
| else |
| # endif // #if defined(__IPHONE_13_0) || defined(__MAC_10_15) |
| { |
| |
| this->metalFormat = MTLPixelFormatBC1_RGBA_sRGB; |
| this->actualFormatId = angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK; |
| } |
| break; |
| |
| #endif |
| #if (TARGET_OS_OSX && (__MAC_OS_X_VERSION_MAX_ALLOWED < 110000)) || TARGET_OS_MACCATALYST |
| case angle::FormatID::EAC_R11G11_SNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatRG16Snorm; |
| this->actualFormatId = angle::FormatID::R16G16_SNORM; |
| break; |
| |
| case angle::FormatID::EAC_R11G11_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatRG16Unorm; |
| this->actualFormatId = angle::FormatID::R16G16_UNORM; |
| break; |
| |
| case angle::FormatID::EAC_R11_SNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatR16Snorm; |
| this->actualFormatId = angle::FormatID::R16_SNORM; |
| break; |
| |
| case angle::FormatID::EAC_R11_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatR16Unorm; |
| this->actualFormatId = angle::FormatID::R16_UNORM; |
| break; |
| |
| case angle::FormatID::ETC1_R8G8B8_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| break; |
| |
| case angle::FormatID::ETC2_R8G8B8A1_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Unorm_sRGB; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM_SRGB; |
| break; |
| |
| case angle::FormatID::ETC2_R8G8B8A1_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| break; |
| |
| case angle::FormatID::ETC2_R8G8B8A8_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Unorm_sRGB; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM_SRGB; |
| break; |
| |
| case angle::FormatID::ETC2_R8G8B8A8_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| break; |
| |
| case angle::FormatID::ETC2_R8G8B8_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Unorm_sRGB; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM_SRGB; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| break; |
| |
| case angle::FormatID::ETC2_R8G8B8_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatRGBA8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| 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; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| break; |
| |
| #endif |
| #if TARGET_OS_SIMULATOR |
| case angle::FormatID::ASTC_10x10_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x10_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_10x10_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x5_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x5_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_10x5_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x6_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x6_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_10x6_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x8_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x8_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_10x8_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_12x10_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_12x10_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_12x10_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_12x12_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_12x12_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_12x12_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_4x4_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_4x4_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_4x4_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_5x4_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_5x4_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_5x4_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_5x5_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_5x5_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_5x5_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_6x5_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_6x5_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_6x5_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_6x6_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_6x6_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_6x6_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x5_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x5_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_8x5_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x6_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x6_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_8x6_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x8_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x8_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_8x8_SRGB_BLOCK; |
| break; |
| |
| 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_RG11Unorm; |
| 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; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| 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::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; |
| |
| 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; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| break; |
| |
| # if TARGET_OS_IOS |
| case angle::FormatID::ASTC_10x10_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x10_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x10_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x10_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x10_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_10x5_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x5_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x5_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x5_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_10x6_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x6_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x6_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x6_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_10x8_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x8_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x8_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x8_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x8_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_12x10_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_12x10_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x10_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_12x10_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x10_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_12x12_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_12x12_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x12_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_12x12_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x12_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_4x4_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_4x4_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_4x4_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_4x4_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_4x4_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_5x4_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_5x4_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x4_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_5x4_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x4_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_5x5_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_5x5_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x5_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_5x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x5_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_6x5_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_6x5_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x5_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_6x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x5_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_6x6_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_6x6_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x6_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_6x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x6_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_8x5_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x5_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x5_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x5_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_8x6_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x6_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x6_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x6_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_8x8_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x8_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x8_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x8_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x8_UNORM_BLOCK; |
| } |
| break; |
| |
| # elif TARGET_OS_TV || TARGET_OS_WATCH |
| case angle::FormatID::ASTC_10x10_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x10_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x10_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x5_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x5_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x6_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x6_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x8_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x8_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x8_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_12x10_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_12x10_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x10_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_12x12_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_12x12_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x12_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_4x4_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_4x4_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_4x4_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_5x4_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_5x4_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x4_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_5x5_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_5x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x5_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_6x5_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_6x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x5_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_6x6_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_6x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x6_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x5_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x5_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x6_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x6_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x8_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x8_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x8_UNORM_BLOCK; |
| break; |
| |
| # endif // TARGET_OS_IOS |
| #elif TARGET_OS_IPHONE && !TARGET_OS_MACCATALYST |
| case angle::FormatID::ASTC_10x10_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x10_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_10x10_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x5_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x5_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_10x5_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x6_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x6_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_10x6_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x8_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x8_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_10x8_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_12x10_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_12x10_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_12x10_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_12x12_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_12x12_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_12x12_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_4x4_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_4x4_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_4x4_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_5x4_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_5x4_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_5x4_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_5x5_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_5x5_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_5x5_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_6x5_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_6x5_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_6x5_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_6x6_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_6x6_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_6x6_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x5_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x5_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_8x5_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x6_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x6_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_8x6_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x8_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x8_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_8x8_SRGB_BLOCK; |
| break; |
| |
| 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_RG11Unorm; |
| 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; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| 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 = MTLPixelFormatA1BGR5Unorm; |
| 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::R8G8_UNORM_SRGB: |
| |
| this->metalFormat = MTLPixelFormatRG8Unorm_sRGB; |
| this->actualFormatId = angle::FormatID::R8G8_UNORM_SRGB; |
| break; |
| |
| case angle::FormatID::R8_UNORM_SRGB: |
| |
| this->metalFormat = MTLPixelFormatR8Unorm_sRGB; |
| this->actualFormatId = angle::FormatID::R8_UNORM_SRGB; |
| 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; |
| |
| # if TARGET_OS_IOS |
| case angle::FormatID::ASTC_10x10_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x10_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x10_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x10_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x10_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_10x5_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x5_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x5_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x5_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_10x6_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x6_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x6_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x6_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_10x8_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x8_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x8_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x8_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x8_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_12x10_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_12x10_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x10_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_12x10_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x10_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_12x12_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_12x12_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x12_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_12x12_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x12_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_4x4_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_4x4_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_4x4_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_4x4_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_4x4_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_5x4_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_5x4_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x4_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_5x4_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x4_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_5x5_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_5x5_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x5_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_5x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x5_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_6x5_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_6x5_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x5_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_6x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x5_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_6x6_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_6x6_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x6_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_6x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x6_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_8x5_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x5_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x5_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x5_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_8x6_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x6_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x6_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x6_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_8x8_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x8_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x8_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x8_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x8_UNORM_BLOCK; |
| } |
| break; |
| |
| # elif TARGET_OS_TV || TARGET_OS_WATCH |
| case angle::FormatID::ASTC_10x10_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x10_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x10_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x5_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x5_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x6_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x6_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x8_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x8_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x8_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_12x10_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_12x10_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x10_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_12x12_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_12x12_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x12_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_4x4_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_4x4_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_4x4_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_5x4_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_5x4_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x4_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_5x5_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_5x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x5_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_6x5_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_6x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x5_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_6x6_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_6x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x6_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x5_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x5_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x6_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x6_UNORM_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x8_UNORM_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x8_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x8_UNORM_BLOCK; |
| break; |
| |
| # endif // TARGET_OS_IOS || TARGET_OS_TV |
| #endif // TARGET_OS_IPHONE |
| #if (TARGET_OS_OSX && (__MAC_OS_X_VERSION_MAX_ALLOWED >= 110000)) |
| case angle::FormatID::ASTC_10x10_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x10_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_10x10_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x5_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x5_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_10x5_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x6_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x6_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_10x6_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_10x8_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_10x8_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_10x8_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_12x10_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_12x10_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_12x10_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_12x12_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_12x12_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_12x12_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_4x4_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_4x4_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_4x4_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_5x4_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_5x4_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_5x4_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_5x5_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_5x5_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_5x5_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_6x5_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_6x5_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_6x5_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_6x6_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_6x6_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_6x6_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x5_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x5_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_8x5_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x6_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x6_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_8x6_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::ASTC_8x8_SRGB_BLOCK: |
| |
| this->metalFormat = MTLPixelFormatASTC_8x8_sRGB; |
| this->actualFormatId = angle::FormatID::ASTC_8x8_SRGB_BLOCK; |
| break; |
| |
| case angle::FormatID::EAC_R11G11_SNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatEAC_RG11Snorm; |
| this->actualFormatId = angle::FormatID::EAC_R11G11_SNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatRG16Snorm; |
| this->actualFormatId = angle::FormatID::R16G16_SNORM; |
| } |
| break; |
| |
| case angle::FormatID::EAC_R11G11_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatEAC_RG11Unorm; |
| this->actualFormatId = angle::FormatID::EAC_R11G11_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatRG16Unorm; |
| this->actualFormatId = angle::FormatID::R16G16_UNORM; |
| } |
| break; |
| |
| case angle::FormatID::EAC_R11_SNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatEAC_R11Snorm; |
| this->actualFormatId = angle::FormatID::EAC_R11_SNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatR16Snorm; |
| this->actualFormatId = angle::FormatID::R16_SNORM; |
| } |
| break; |
| |
| case angle::FormatID::EAC_R11_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatEAC_R11Unorm; |
| this->actualFormatId = angle::FormatID::EAC_R11_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatR16Unorm; |
| this->actualFormatId = angle::FormatID::R16_UNORM; |
| } |
| break; |
| |
| case angle::FormatID::ETC1_R8G8B8_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatETC2_RGB8; |
| this->actualFormatId = angle::FormatID::ETC1_R8G8B8_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatRGBA8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| } |
| break; |
| |
| case angle::FormatID::ETC2_R8G8B8A1_SRGB_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatETC2_RGB8A1_sRGB; |
| this->actualFormatId = angle::FormatID::ETC2_R8G8B8A1_SRGB_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatRGBA8Unorm_sRGB; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM_SRGB; |
| } |
| break; |
| |
| case angle::FormatID::ETC2_R8G8B8A1_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatETC2_RGB8A1; |
| this->actualFormatId = angle::FormatID::ETC2_R8G8B8A1_UNORM_BLOCK; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatRGBA8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| } |
| break; |
| |
| case angle::FormatID::ETC2_R8G8B8A8_SRGB_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatEAC_RGBA8_sRGB; |
| this->actualFormatId = angle::FormatID::ETC2_R8G8B8A8_SRGB_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatRGBA8Unorm_sRGB; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM_SRGB; |
| } |
| break; |
| |
| case angle::FormatID::ETC2_R8G8B8A8_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatEAC_RGBA8; |
| this->actualFormatId = angle::FormatID::ETC2_R8G8B8A8_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatRGBA8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| } |
| break; |
| |
| case angle::FormatID::ETC2_R8G8B8_SRGB_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatETC2_RGB8_sRGB; |
| this->actualFormatId = angle::FormatID::ETC2_R8G8B8_SRGB_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatRGBA8Unorm_sRGB; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM_SRGB; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| } |
| break; |
| |
| case angle::FormatID::ETC2_R8G8B8_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatETC2_RGB8; |
| this->actualFormatId = angle::FormatID::ETC2_R8G8B8_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatRGBA8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| } |
| 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: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatABGR4Unorm; |
| this->actualFormatId = angle::FormatID::R4G4B4A4_UNORM; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatRGBA8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| } |
| break; |
| |
| case angle::FormatID::R5G5B5A1_UNORM: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatA1BGR5Unorm; |
| this->actualFormatId = angle::FormatID::R5G5B5A1_UNORM; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatRGBA8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| } |
| break; |
| |
| case angle::FormatID::R5G6B5_UNORM: |
| |
| if (display->supportsAppleGPUFamily(1)) |
| { |
| this->metalFormat = MTLPixelFormatB5G6R5Unorm; |
| this->actualFormatId = angle::FormatID::R5G6B5_UNORM; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatRGBA8Unorm; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| this->initFunction = Initialize4ComponentData<GLubyte, 0x00, 0x00, 0x00, 0xFF>; |
| } |
| break; |
| |
| case angle::FormatID::R8G8_UNORM_SRGB: |
| |
| this->metalFormat = MTLPixelFormatRG8Unorm_sRGB; |
| this->actualFormatId = angle::FormatID::R8G8_UNORM_SRGB; |
| break; |
| |
| case angle::FormatID::R8_UNORM_SRGB: |
| |
| this->metalFormat = MTLPixelFormatR8Unorm_sRGB; |
| this->actualFormatId = angle::FormatID::R8_UNORM_SRGB; |
| break; |
| |
| case angle::FormatID::ASTC_10x10_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x10_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x10_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x10_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x10_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_10x5_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x5_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x5_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x5_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_10x6_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x6_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x6_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x6_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_10x8_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x8_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x8_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_10x8_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_10x8_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_12x10_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_12x10_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x10_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_12x10_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x10_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_12x12_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_12x12_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x12_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_12x12_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_12x12_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_4x4_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_4x4_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_4x4_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_4x4_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_4x4_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_5x4_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_5x4_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x4_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_5x4_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x4_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_5x5_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_5x5_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x5_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_5x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_5x5_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_6x5_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_6x5_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x5_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_6x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x5_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_6x6_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_6x6_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x6_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_6x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_6x6_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_8x5_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x5_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x5_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x5_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x5_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_8x6_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x6_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x6_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x6_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x6_UNORM_BLOCK; |
| } |
| break; |
| |
| case angle::FormatID::ASTC_8x8_UNORM_BLOCK: |
| |
| if (display->supportsAppleGPUFamily(6)) |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x8_HDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x8_UNORM_BLOCK; |
| } |
| else |
| { |
| this->metalFormat = MTLPixelFormatASTC_8x8_LDR; |
| this->actualFormatId = angle::FormatID::ASTC_8x8_UNORM_BLOCK; |
| } |
| break; |
| |
| #endif // TARGET_OS_OSX && (__MAC_OS_X_VERSION_MAX_ALLOWED >= 110000)) |
| 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; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R10G10B10A2_SNORM: |
| this->metalFormat = MTLVertexFormatInt1010102Normalized; |
| this->actualFormatId = angle::FormatID::R10G10B10A2_SNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLuint, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R10G10B10A2_UNORM: |
| this->metalFormat = MTLVertexFormatUInt1010102Normalized; |
| this->actualFormatId = angle::FormatID::R10G10B10A2_UNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLuint, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16B16A16_FLOAT: |
| this->metalFormat = MTLVertexFormatHalf4; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLhalf, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16B16A16_SINT: |
| this->metalFormat = MTLVertexFormatShort4; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16B16A16_SNORM: |
| this->metalFormat = MTLVertexFormatShort4Normalized; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_SNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16B16A16_SSCALED: |
| this->metalFormat = MTLVertexFormatShort4; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_SSCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16B16A16_UINT: |
| this->metalFormat = MTLVertexFormatUShort4; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16B16A16_UNORM: |
| this->metalFormat = MTLVertexFormatUShort4Normalized; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_UNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16B16A16_USCALED: |
| this->metalFormat = MTLVertexFormatUShort4; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_USCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16B16_FLOAT: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatHalf4; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_FLOAT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLhalf, 3, 4, gl::Float16One>; |
| this->defaultAlpha = gl::Float16One; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatHalf3; |
| this->actualFormatId = angle::FormatID::R16G16B16_FLOAT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLhalf, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16G16B16_SINT: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatShort4; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 3, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatShort3; |
| this->actualFormatId = angle::FormatID::R16G16B16_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16G16B16_SNORM: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatShort4Normalized; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_SNORM; |
| this->vertexLoadFunction = |
| CopyNativeVertexData<GLshort, 3, 4, std::numeric_limits<GLshort>::max()>; |
| this->defaultAlpha = std::numeric_limits<GLshort>::max(); |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatShort3Normalized; |
| this->actualFormatId = angle::FormatID::R16G16B16_SNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16G16B16_SSCALED: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatShort4; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 3, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatShort3; |
| this->actualFormatId = angle::FormatID::R16G16B16_SSCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16G16B16_UINT: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUShort4; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 3, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUShort3; |
| this->actualFormatId = angle::FormatID::R16G16B16_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16G16B16_UNORM: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUShort4Normalized; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_UNORM; |
| this->vertexLoadFunction = |
| CopyNativeVertexData<GLushort, 3, 4, std::numeric_limits<GLushort>::max()>; |
| this->defaultAlpha = std::numeric_limits<GLushort>::max(); |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUShort3Normalized; |
| this->actualFormatId = angle::FormatID::R16G16B16_UNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16G16B16_USCALED: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUShort4; |
| this->actualFormatId = angle::FormatID::R16G16B16A16_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 3, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUShort3; |
| this->actualFormatId = angle::FormatID::R16G16B16_USCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16G16_FLOAT: |
| this->metalFormat = MTLVertexFormatHalf2; |
| this->actualFormatId = angle::FormatID::R16G16_FLOAT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLhalf, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16_SINT: |
| this->metalFormat = MTLVertexFormatShort2; |
| this->actualFormatId = angle::FormatID::R16G16_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16_SNORM: |
| this->metalFormat = MTLVertexFormatShort2Normalized; |
| this->actualFormatId = angle::FormatID::R16G16_SNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16_SSCALED: |
| this->metalFormat = MTLVertexFormatShort2; |
| this->actualFormatId = angle::FormatID::R16G16_SSCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16_UINT: |
| this->metalFormat = MTLVertexFormatUShort2; |
| this->actualFormatId = angle::FormatID::R16G16_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16_UNORM: |
| this->metalFormat = MTLVertexFormatUShort2Normalized; |
| this->actualFormatId = angle::FormatID::R16G16_UNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16G16_USCALED: |
| this->metalFormat = MTLVertexFormatUShort2; |
| this->actualFormatId = angle::FormatID::R16G16_USCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R16_FLOAT: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatHalf2; |
| this->actualFormatId = angle::FormatID::R16G16_FLOAT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLhalf, 1, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatHalf; |
| this->actualFormatId = angle::FormatID::R16_FLOAT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLhalf, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16_SINT: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatShort2; |
| this->actualFormatId = angle::FormatID::R16G16_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 1, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatShort; |
| this->actualFormatId = angle::FormatID::R16_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16_SNORM: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatShort2Normalized; |
| this->actualFormatId = angle::FormatID::R16G16_SNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 1, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatShortNormalized; |
| this->actualFormatId = angle::FormatID::R16_SNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16_SSCALED: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatShort2; |
| this->actualFormatId = angle::FormatID::R16G16_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 1, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatShort; |
| this->actualFormatId = angle::FormatID::R16_SSCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLshort, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16_UINT: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUShort2; |
| this->actualFormatId = angle::FormatID::R16G16_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 1, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUShort; |
| this->actualFormatId = angle::FormatID::R16_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16_UNORM: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUShort2Normalized; |
| this->actualFormatId = angle::FormatID::R16G16_UNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 1, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUShortNormalized; |
| this->actualFormatId = angle::FormatID::R16_UNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R16_USCALED: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUShort2; |
| this->actualFormatId = angle::FormatID::R16G16_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 1, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUShort; |
| this->actualFormatId = angle::FormatID::R16_USCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLushort, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R32G32B32A32_FLOAT: |
| this->metalFormat = MTLVertexFormatFloat4; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLfloat, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R32G32B32A32_SINT: |
| this->metalFormat = MTLVertexFormatInt4; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLint, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R32G32B32A32_UINT: |
| this->metalFormat = MTLVertexFormatUInt4; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLuint, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R32G32B32_FLOAT: |
| this->metalFormat = MTLVertexFormatFloat3; |
| this->actualFormatId = angle::FormatID::R32G32B32_FLOAT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLfloat, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R32G32B32_SINT: |
| this->metalFormat = MTLVertexFormatInt3; |
| this->actualFormatId = angle::FormatID::R32G32B32_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLint, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R32G32B32_UINT: |
| this->metalFormat = MTLVertexFormatUInt3; |
| this->actualFormatId = angle::FormatID::R32G32B32_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLuint, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R32G32_FLOAT: |
| this->metalFormat = MTLVertexFormatFloat2; |
| this->actualFormatId = angle::FormatID::R32G32_FLOAT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLfloat, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R32G32_SINT: |
| this->metalFormat = MTLVertexFormatInt2; |
| this->actualFormatId = angle::FormatID::R32G32_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLint, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R32G32_UINT: |
| this->metalFormat = MTLVertexFormatUInt2; |
| this->actualFormatId = angle::FormatID::R32G32_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLuint, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R32_FLOAT: |
| this->metalFormat = MTLVertexFormatFloat; |
| this->actualFormatId = angle::FormatID::R32_FLOAT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLfloat, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R32_SINT: |
| this->metalFormat = MTLVertexFormatInt; |
| this->actualFormatId = angle::FormatID::R32_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLint, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R32_UINT: |
| this->metalFormat = MTLVertexFormatUInt; |
| this->actualFormatId = angle::FormatID::R32_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLuint, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R8G8B8A8_SINT: |
| this->metalFormat = MTLVertexFormatChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R8G8B8A8_SNORM: |
| this->metalFormat = MTLVertexFormatChar4Normalized; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R8G8B8A8_SSCALED: |
| this->metalFormat = MTLVertexFormatChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SSCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R8G8B8A8_UINT: |
| this->metalFormat = MTLVertexFormatUChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R8G8B8A8_UNORM: |
| this->metalFormat = MTLVertexFormatUChar4Normalized; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R8G8B8A8_USCALED: |
| this->metalFormat = MTLVertexFormatUChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_USCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 4, 4, 0>; |
| this->defaultAlpha = 0; |
| break; |
| |
| case angle::FormatID::R8G8B8_SINT: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 3, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatChar3; |
| this->actualFormatId = angle::FormatID::R8G8B8_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8G8B8_SNORM: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatChar4Normalized; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SNORM; |
| this->vertexLoadFunction = |
| CopyNativeVertexData<GLbyte, 3, 4, std::numeric_limits<GLbyte>::max()>; |
| this->defaultAlpha = std::numeric_limits<GLbyte>::max(); |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatChar3Normalized; |
| this->actualFormatId = angle::FormatID::R8G8B8_SNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8G8B8_SSCALED: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 3, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatChar3; |
| this->actualFormatId = angle::FormatID::R8G8B8_SSCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8G8B8_UINT: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 3, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUChar3; |
| this->actualFormatId = angle::FormatID::R8G8B8_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8G8B8_UNORM: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUChar4Normalized; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| this->vertexLoadFunction = |
| CopyNativeVertexData<GLubyte, 3, 4, std::numeric_limits<GLubyte>::max()>; |
| this->defaultAlpha = std::numeric_limits<GLubyte>::max(); |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUChar3Normalized; |
| this->actualFormatId = angle::FormatID::R8G8B8_UNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8G8B8_USCALED: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 3, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUChar3; |
| this->actualFormatId = angle::FormatID::R8G8B8_USCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 3, 3, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8G8_SINT: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 2, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatChar2; |
| this->actualFormatId = angle::FormatID::R8G8_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8G8_SNORM: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatChar4Normalized; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SNORM; |
| this->vertexLoadFunction = |
| CopyNativeVertexData<GLbyte, 2, 4, std::numeric_limits<GLbyte>::max()>; |
| this->defaultAlpha = std::numeric_limits<GLbyte>::max(); |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatChar2Normalized; |
| this->actualFormatId = angle::FormatID::R8G8_SNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8G8_SSCALED: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 2, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatChar2; |
| this->actualFormatId = angle::FormatID::R8G8_SSCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8G8_UINT: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 2, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUChar2; |
| this->actualFormatId = angle::FormatID::R8G8_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8G8_UNORM: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUChar4Normalized; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| this->vertexLoadFunction = |
| CopyNativeVertexData<GLubyte, 2, 4, std::numeric_limits<GLubyte>::max()>; |
| this->defaultAlpha = std::numeric_limits<GLubyte>::max(); |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUChar2Normalized; |
| this->actualFormatId = angle::FormatID::R8G8_UNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8G8_USCALED: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 2, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUChar2; |
| this->actualFormatId = angle::FormatID::R8G8_USCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 2, 2, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8_SINT: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 1, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatChar; |
| this->actualFormatId = angle::FormatID::R8_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8_SNORM: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatChar4Normalized; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SNORM; |
| this->vertexLoadFunction = |
| CopyNativeVertexData<GLbyte, 1, 4, std::numeric_limits<GLbyte>::max()>; |
| this->defaultAlpha = std::numeric_limits<GLbyte>::max(); |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatCharNormalized; |
| this->actualFormatId = angle::FormatID::R8_SNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8_SSCALED: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_SINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 1, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatChar; |
| this->actualFormatId = angle::FormatID::R8_SSCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLbyte, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8_UINT: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 1, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUChar; |
| this->actualFormatId = angle::FormatID::R8_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8_UNORM: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUChar4Normalized; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UNORM; |
| this->vertexLoadFunction = |
| CopyNativeVertexData<GLubyte, 1, 4, std::numeric_limits<GLubyte>::max()>; |
| this->defaultAlpha = std::numeric_limits<GLubyte>::max(); |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUCharNormalized; |
| this->actualFormatId = angle::FormatID::R8_UNORM; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R8_USCALED: |
| if (tightlyPacked) |
| { |
| this->metalFormat = MTLVertexFormatUChar4; |
| this->actualFormatId = angle::FormatID::R8G8B8A8_UINT; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 1, 4, 1>; |
| this->defaultAlpha = 1; |
| } |
| else |
| { |
| this->metalFormat = MTLVertexFormatUChar; |
| this->actualFormatId = angle::FormatID::R8_USCALED; |
| this->vertexLoadFunction = CopyNativeVertexData<GLubyte, 1, 1, 0>; |
| this->defaultAlpha = 0; |
| } |
| break; |
| |
| case angle::FormatID::R10G10B10A2_SINT: |
| this->metalFormat = MTLVertexFormatFloat4; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| this->vertexLoadFunction = CopyXYZ10W2ToXYZWFloatVertexData<true, false, true, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R10G10B10A2_SSCALED: |
| this->metalFormat = MTLVertexFormatFloat4; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| this->vertexLoadFunction = CopyXYZ10W2ToXYZWFloatVertexData<true, false, true, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R10G10B10A2_UINT: |
| this->metalFormat = MTLVertexFormatFloat4; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| this->vertexLoadFunction = CopyXYZ10W2ToXYZWFloatVertexData<false, false, true, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R10G10B10A2_USCALED: |
| this->metalFormat = MTLVertexFormatFloat4; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| this->vertexLoadFunction = CopyXYZ10W2ToXYZWFloatVertexData<false, false, true, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32B32A32_FIXED: |
| this->metalFormat = MTLVertexFormatFloat4; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| this->vertexLoadFunction = Copy32FixedTo32FVertexData<4, 4>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32B32A32_SNORM: |
| this->metalFormat = MTLVertexFormatFloat4; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLint, 4, 4, true, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32B32A32_SSCALED: |
| this->metalFormat = MTLVertexFormatFloat4; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLint, 4, 4, false, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32B32A32_UNORM: |
| this->metalFormat = MTLVertexFormatFloat4; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLuint, 4, 4, true, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32B32A32_USCALED: |
| this->metalFormat = MTLVertexFormatFloat4; |
| this->actualFormatId = angle::FormatID::R32G32B32A32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLuint, 4, 4, false, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32B32_FIXED: |
| this->metalFormat = MTLVertexFormatFloat3; |
| this->actualFormatId = angle::FormatID::R32G32B32_FLOAT; |
| this->vertexLoadFunction = Copy32FixedTo32FVertexData<3, 3>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32B32_SNORM: |
| this->metalFormat = MTLVertexFormatFloat3; |
| this->actualFormatId = angle::FormatID::R32G32B32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLint, 3, 3, true, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32B32_SSCALED: |
| this->metalFormat = MTLVertexFormatFloat3; |
| this->actualFormatId = angle::FormatID::R32G32B32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLint, 3, 3, false, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32B32_UNORM: |
| this->metalFormat = MTLVertexFormatFloat3; |
| this->actualFormatId = angle::FormatID::R32G32B32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLuint, 3, 3, true, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32B32_USCALED: |
| this->metalFormat = MTLVertexFormatFloat3; |
| this->actualFormatId = angle::FormatID::R32G32B32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLuint, 3, 3, false, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32_FIXED: |
| this->metalFormat = MTLVertexFormatFloat2; |
| this->actualFormatId = angle::FormatID::R32G32_FLOAT; |
| this->vertexLoadFunction = Copy32FixedTo32FVertexData<2, 2>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32_SNORM: |
| this->metalFormat = MTLVertexFormatFloat2; |
| this->actualFormatId = angle::FormatID::R32G32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLint, 2, 2, true, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32_SSCALED: |
| this->metalFormat = MTLVertexFormatFloat2; |
| this->actualFormatId = angle::FormatID::R32G32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLint, 2, 2, false, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32_UNORM: |
| this->metalFormat = MTLVertexFormatFloat2; |
| this->actualFormatId = angle::FormatID::R32G32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLuint, 2, 2, true, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32G32_USCALED: |
| this->metalFormat = MTLVertexFormatFloat2; |
| this->actualFormatId = angle::FormatID::R32G32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLuint, 2, 2, false, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32_FIXED: |
| this->metalFormat = MTLVertexFormatFloat; |
| this->actualFormatId = angle::FormatID::R32_FLOAT; |
| this->vertexLoadFunction = Copy32FixedTo32FVertexData<1, 1>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32_SNORM: |
| this->metalFormat = MTLVertexFormatFloat; |
| this->actualFormatId = angle::FormatID::R32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLint, 1, 1, true, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32_SSCALED: |
| this->metalFormat = MTLVertexFormatFloat; |
| this->actualFormatId = angle::FormatID::R32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLint, 1, 1, false, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32_UNORM: |
| this->metalFormat = MTLVertexFormatFloat; |
| this->actualFormatId = angle::FormatID::R32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLuint, 1, 1, true, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| case angle::FormatID::R32_USCALED: |
| this->metalFormat = MTLVertexFormatFloat; |
| this->actualFormatId = angle::FormatID::R32_FLOAT; |
| this->vertexLoadFunction = CopyToFloatVertexData<GLuint, 1, 1, false, false>; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| break; |
| |
| default: |
| this->metalFormat = MTLVertexFormatInvalid; |
| this->actualFormatId = angle::FormatID::NONE; |
| this->vertexLoadFunction = nullptr; |
| this->defaultAlpha = 0; |
| this->actualSameGLType = false; |
| } |
| } |
| |
| void FormatTable::initNativeFormatCapsAutogen(const DisplayMtl *display) |
| { |
| const angle::FeaturesMtl &featuresMtl = display->getFeatures(); |
| // Skip auto resolve if either hasDepth/StencilAutoResolve or allowMultisampleStoreAndResolve |
| // feature are disabled. |
| bool supportDepthAutoResolve = featuresMtl.hasDepthAutoResolve.enabled && |
| featuresMtl.allowMultisampleStoreAndResolve.enabled; |
| bool supportStencilAutoResolve = featuresMtl.hasStencilAutoResolve.enabled && |
| featuresMtl.allowMultisampleStoreAndResolve.enabled; |
| bool supportDepthStencilAutoResolve = supportDepthAutoResolve && supportStencilAutoResolve; |
| |
| // Source: https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf |
| setFormatCaps(MTLPixelFormatA8Unorm, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBGR10A2Unorm, /** filterable*/ true, |
| /** writable*/ display->supportsEitherGPUFamily(3, 1), /** blendable*/ true, |
| /** multisample*/ true, /** resolve*/ true, /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBGRA8Unorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, /** resolve*/ true, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBGRA8Unorm_sRGB, /** filterable*/ true, |
| /** writable*/ display->supportsAppleGPUFamily(2) && !display->isSimulator(), |
| /** blendable*/ true, /** multisample*/ true, /** resolve*/ true, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatDepth32Float, |
| /** filterable*/ display->supports32BitFloatFiltering(), /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ true, |
| /** resolve*/ supportDepthAutoResolve, /** colorRenderable*/ false, |
| /** depthRenderable*/ true); |
| |
| setFormatCaps(MTLPixelFormatDepth32Float_Stencil8, |
| /** filterable*/ display->supports32BitFloatFiltering(), /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ true, |
| /** resolve*/ supportDepthStencilAutoResolve, /** colorRenderable*/ false, |
| /** depthRenderable*/ true); |
| |
| setFormatCaps(MTLPixelFormatR16Float, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, /** resolve*/ true, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatR16Sint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatR16Snorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, |
| /** resolve*/ display->supportsMacGPUFamily(1), /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatR16Uint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatR16Unorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, |
| /** resolve*/ display->supportsMacGPUFamily(1), /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatR32Float, /** filterable*/ display->supportsEitherGPUFamily(1, 1), |
| /** writable*/ true, /** blendable*/ true, /** multisample*/ true, |
| /** resolve*/ display->supportsMacGPUFamily(1), /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatR32Sint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ display->supportsMacGPUFamily(1), |
| /** resolve*/ false, /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatR32Uint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ display->supportsMacGPUFamily(1), |
| /** resolve*/ false, /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatR8Sint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatR8Snorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, |
| /** resolve*/ display->supportsEitherGPUFamily(2, 1), /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatR8Uint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatR8Unorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, /** resolve*/ true, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG11B10Float, /** filterable*/ true, |
| /** writable*/ display->supportsEitherGPUFamily(3, 1), /** blendable*/ true, |
| /** multisample*/ true, /** resolve*/ true, /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG16Float, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, /** resolve*/ true, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG16Sint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG16Snorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, |
| /** resolve*/ display->supportsMacGPUFamily(1), /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG16Uint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG16Unorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, |
| /** resolve*/ display->supportsMacGPUFamily(1), /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG32Float, /** filterable*/ display->supportsEitherGPUFamily(1, 1), |
| /** writable*/ true, /** blendable*/ true, |
| /** multisample*/ display->supportsMacGPUFamily(1), |
| /** resolve*/ display->supportsMacGPUFamily(1), /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG32Sint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ display->supportsEitherGPUFamily(7, 1), |
| /** resolve*/ false, /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG32Uint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ display->supportsEitherGPUFamily(7, 1), |
| /** resolve*/ false, /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG8Sint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG8Snorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, |
| /** resolve*/ display->supportsEitherGPUFamily(2, 1), /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG8Uint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG8Unorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, /** resolve*/ true, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGB10A2Uint, /** filterable*/ false, |
| /** writable*/ display->supportsEitherGPUFamily(3, 1), /** blendable*/ false, |
| /** multisample*/ true, /** resolve*/ false, /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGB10A2Unorm, /** filterable*/ true, |
| /** writable*/ display->supportsEitherGPUFamily(3, 1), /** blendable*/ true, |
| /** multisample*/ true, /** resolve*/ true, /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGB9E5Float, /** filterable*/ true, |
| /** writable*/ display->supportsAppleGPUFamily(3), |
| /** blendable*/ display->supportsAppleGPUFamily(1), |
| /** multisample*/ display->supportsAppleGPUFamily(1), |
| /** resolve*/ display->supportsAppleGPUFamily(1), |
| /** colorRenderable*/ display->supportsAppleGPUFamily(1), |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA16Float, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, /** resolve*/ true, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA16Sint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA16Snorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, |
| /** resolve*/ display->supportsMacGPUFamily(1), /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA16Uint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA16Unorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, |
| /** resolve*/ display->supportsMacGPUFamily(1), /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA32Float, |
| /** filterable*/ display->supportsEitherGPUFamily(1, 1), /** writable*/ true, |
| /** blendable*/ display->supportsMacGPUFamily(1), |
| /** multisample*/ display->supportsEitherGPUFamily(7, 1), |
| /** resolve*/ display->supportsMacGPUFamily(1), /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA32Sint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ display->supportsMacGPUFamily(1), |
| /** resolve*/ false, /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA32Uint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ display->supportsMacGPUFamily(1), |
| /** resolve*/ false, /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA8Sint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA8Snorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, |
| /** resolve*/ display->supportsEitherGPUFamily(2, 1), /** colorRenderable*/ true, |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA8Uint, /** filterable*/ false, /** writable*/ true, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA8Unorm, /** filterable*/ true, /** writable*/ true, |
| /** blendable*/ true, /** multisample*/ true, /** resolve*/ true, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRGBA8Unorm_sRGB, /** filterable*/ true, |
| /** writable*/ display->supportsAppleGPUFamily(2) && !display->isSimulator(), |
| /** blendable*/ true, /** multisample*/ true, /** resolve*/ true, |
| /** colorRenderable*/ true, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatStencil8, /** filterable*/ false, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ true, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ true); |
| |
| #if TARGET_OS_OSX || TARGET_OS_MACCATALYST |
| setFormatCaps(MTLPixelFormatBC1_RGBA, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC1_RGBA_sRGB, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC2_RGBA, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC2_RGBA_sRGB, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC3_RGBA, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC3_RGBA_sRGB, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC4_RSnorm, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC4_RUnorm, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC5_RGSnorm, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC5_RGUnorm, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC6H_RGBFloat, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC6H_RGBUfloat, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC7_RGBAUnorm, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBC7_RGBAUnorm_sRGB, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatDepth16Unorm, /** filterable*/ true, /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ true, |
| /** resolve*/ supportDepthAutoResolve, /** colorRenderable*/ false, |
| /** depthRenderable*/ true); |
| |
| setFormatCaps(MTLPixelFormatDepth24Unorm_Stencil8, |
| /** filterable*/ display->supportsMacGPUFamily(1) && |
| display->supportsDepth24Stencil8PixelFormat(), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ true, |
| /** resolve*/ supportDepthStencilAutoResolve, /** colorRenderable*/ false, |
| /** depthRenderable*/ display->supportsMacGPUFamily(1) && |
| display->supportsDepth24Stencil8PixelFormat()); |
| |
| #endif // TARGET_OS_OSX || TARGET_OS_MACCATALYST |
| #if (TARGET_OS_IPHONE && !TARGET_OS_MACCATALYST) || \ |
| (TARGET_OS_OSX && (__MAC_OS_X_VERSION_MAX_ALLOWED >= 110000)) |
| setFormatCaps(MTLPixelFormatA1BGR5Unorm, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ display->supportsAppleGPUFamily(1), |
| /** multisample*/ display->supportsAppleGPUFamily(1), |
| /** resolve*/ display->supportsAppleGPUFamily(1), |
| /** colorRenderable*/ display->supportsAppleGPUFamily(1), |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatABGR4Unorm, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ display->supportsAppleGPUFamily(1), |
| /** multisample*/ display->supportsAppleGPUFamily(1), |
| /** resolve*/ display->supportsAppleGPUFamily(1), |
| /** colorRenderable*/ display->supportsAppleGPUFamily(1), |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_10x10_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_10x10_sRGB, |
| /** filterable*/ display->supportsAppleGPUFamily(2), /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_10x5_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_10x5_sRGB, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_10x6_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_10x6_sRGB, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_10x8_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_10x8_sRGB, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_12x10_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_12x10_sRGB, |
| /** filterable*/ display->supportsAppleGPUFamily(2), /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_12x12_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_12x12_sRGB, |
| /** filterable*/ display->supportsAppleGPUFamily(2), /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_4x4_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_4x4_sRGB, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_5x4_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_5x4_sRGB, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_5x5_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_5x5_sRGB, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_6x5_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_6x5_sRGB, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_6x6_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_6x6_sRGB, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_8x5_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_8x5_sRGB, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_8x6_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_8x6_sRGB, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_8x8_LDR, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_8x8_sRGB, /** filterable*/ display->supportsAppleGPUFamily(2), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatB5G6R5Unorm, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ display->supportsAppleGPUFamily(1), |
| /** multisample*/ display->supportsAppleGPUFamily(1), |
| /** resolve*/ display->supportsAppleGPUFamily(1), |
| /** colorRenderable*/ display->supportsAppleGPUFamily(1), |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatBGR5A1Unorm, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ display->supportsAppleGPUFamily(1), |
| /** multisample*/ display->supportsAppleGPUFamily(1), |
| /** resolve*/ display->supportsAppleGPUFamily(1), |
| /** colorRenderable*/ display->supportsAppleGPUFamily(1), |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatEAC_R11Snorm, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatEAC_R11Unorm, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatEAC_RG11Snorm, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatEAC_RG11Unorm, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatEAC_RGBA8, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatEAC_RGBA8_sRGB, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatETC2_RGB8, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatETC2_RGB8A1, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatETC2_RGB8A1_sRGB, |
| /** filterable*/ display->supportsAppleGPUFamily(1), /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatETC2_RGB8_sRGB, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatPVRTC_RGBA_2BPP, |
| /** filterable*/ display->supportsAppleGPUFamily(1), /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatPVRTC_RGBA_2BPP_sRGB, |
| /** filterable*/ display->supportsAppleGPUFamily(1), /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatPVRTC_RGBA_4BPP, |
| /** filterable*/ display->supportsAppleGPUFamily(1), /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatPVRTC_RGBA_4BPP_sRGB, |
| /** filterable*/ display->supportsAppleGPUFamily(1), /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatPVRTC_RGB_2BPP, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatPVRTC_RGB_2BPP_sRGB, |
| /** filterable*/ display->supportsAppleGPUFamily(1), /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatPVRTC_RGB_4BPP, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatPVRTC_RGB_4BPP_sRGB, |
| /** filterable*/ display->supportsAppleGPUFamily(1), /** writable*/ false, |
| /** blendable*/ false, /** multisample*/ false, /** resolve*/ false, |
| /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatR8Unorm_sRGB, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ display->supportsAppleGPUFamily(2), |
| /** blendable*/ display->supportsAppleGPUFamily(1), |
| /** multisample*/ display->supportsAppleGPUFamily(1), |
| /** resolve*/ display->supportsAppleGPUFamily(1), |
| /** colorRenderable*/ display->supportsAppleGPUFamily(1), |
| /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatRG8Unorm_sRGB, /** filterable*/ display->supportsAppleGPUFamily(1), |
| /** writable*/ display->supportsAppleGPUFamily(2), |
| /** blendable*/ display->supportsAppleGPUFamily(1), |
| /** multisample*/ display->supportsAppleGPUFamily(1), |
| /** resolve*/ display->supportsAppleGPUFamily(1), |
| /** colorRenderable*/ display->supportsAppleGPUFamily(1), |
| /** depthRenderable*/ false); |
| |
| # if TARGET_OS_IOS || TARGET_OS_OSX |
| setFormatCaps(MTLPixelFormatASTC_10x10_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_10x5_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_10x6_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_10x8_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_12x10_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_12x12_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_4x4_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_5x4_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_5x5_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_6x5_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_6x6_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_8x5_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_8x6_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| setFormatCaps(MTLPixelFormatASTC_8x8_HDR, /** filterable*/ display->supportsAppleGPUFamily(6), |
| /** writable*/ false, /** blendable*/ false, /** multisample*/ false, |
| /** resolve*/ false, /** colorRenderable*/ false, /** depthRenderable*/ false); |
| |
| # endif // TARGET_OS_IOS || mac 11.0+ |
| #endif // TARGET_OS_IPHONE && !TARGET_OS_MACCATALYST || mac 11.0+ |
| } |
| |
| } // namespace mtl |
| } // namespace rx |