mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-05-28 23:49:12 +00:00
[GPU] Added ASTC texture format support (#11116)
This commit is contained in:
parent
02434cd293
commit
8e6ead2f7b
7 changed files with 379 additions and 68 deletions
|
@ -588,7 +588,52 @@ typedef enum SDL_GPUTextureFormat
|
|||
SDL_GPU_TEXTUREFORMAT_D24_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_D32_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_D24_UNORM_S8_UINT,
|
||||
SDL_GPU_TEXTUREFORMAT_D32_FLOAT_S8_UINT
|
||||
SDL_GPU_TEXTUREFORMAT_D32_FLOAT_S8_UINT,
|
||||
/* Compressed ASTC Normalized Float Color Formats*/
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM,
|
||||
/* Compressed SRGB ASTC Normalized Float Color Formats*/
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM_SRGB,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM_SRGB,
|
||||
/* Compressed ASTC Signed Float Color Formats*/
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_4x4_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_5x4_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_5x5_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_6x5_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_6x6_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_8x5_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_8x6_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_8x8_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_10x5_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_10x6_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_10x8_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_10x10_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_12x10_FLOAT,
|
||||
SDL_GPU_TEXTUREFORMAT_ASTC_12x12_FLOAT
|
||||
} SDL_GPUTextureFormat;
|
||||
|
||||
/**
|
||||
|
|
|
@ -642,6 +642,49 @@ Uint32 SDL_GPUTextureFormatTexelBlockSize(
|
|||
return 8;
|
||||
case SDL_GPU_TEXTUREFORMAT_R32G32B32A32_FLOAT:
|
||||
return 16;
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_4x4_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_5x4_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_5x5_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_6x5_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_6x6_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x5_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x6_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x8_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x5_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x6_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x8_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x10_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_12x10_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_12x12_FLOAT:
|
||||
return 16;
|
||||
default:
|
||||
SDL_assert_release(!"Unrecognized TextureFormat!");
|
||||
return 0;
|
||||
|
|
|
@ -69,7 +69,7 @@ typedef struct BlitPipelineCacheEntry
|
|||
|
||||
// Internal Helper Utilities
|
||||
|
||||
#define SDL_GPU_TEXTUREFORMAT_MAX_ENUM_VALUE (SDL_GPU_TEXTUREFORMAT_D32_FLOAT_S8_UINT + 1)
|
||||
#define SDL_GPU_TEXTUREFORMAT_MAX_ENUM_VALUE (SDL_GPU_TEXTUREFORMAT_ASTC_12x12_FLOAT + 1)
|
||||
#define SDL_GPU_VERTEXELEMENTFORMAT_MAX_ENUM_VALUE (SDL_GPU_VERTEXELEMENTFORMAT_HALF4 + 1)
|
||||
#define SDL_GPU_COMPAREOP_MAX_ENUM_VALUE (SDL_GPU_COMPAREOP_ALWAYS + 1)
|
||||
#define SDL_GPU_STENCILOP_MAX_ENUM_VALUE (SDL_GPU_STENCILOP_DECREMENT_AND_WRAP + 1)
|
||||
|
|
|
@ -237,6 +237,48 @@ static DXGI_FORMAT SDLToD3D11_TextureFormat[] = {
|
|||
DXGI_FORMAT_D32_FLOAT, // D32_FLOAT
|
||||
DXGI_FORMAT_D24_UNORM_S8_UINT, // D24_UNORM_S8_UINT
|
||||
DXGI_FORMAT_D32_FLOAT_S8X24_UINT, // D32_FLOAT_S8_UINT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_4x4_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_5x4_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_5x5_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_6x5_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_6x6_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x5_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x6_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x8_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x5_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x6_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x8_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x10_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_12x10_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_12x12_FLOAT
|
||||
};
|
||||
SDL_COMPILE_TIME_ASSERT(SDLToD3D11_TextureFormat, SDL_arraysize(SDLToD3D11_TextureFormat) == SDL_GPU_TEXTUREFORMAT_MAX_ENUM_VALUE);
|
||||
|
||||
|
|
|
@ -312,6 +312,48 @@ static DXGI_FORMAT SDLToD3D12_TextureFormat[] = {
|
|||
DXGI_FORMAT_D32_FLOAT, // D32_FLOAT
|
||||
DXGI_FORMAT_D24_UNORM_S8_UINT, // D24_UNORM_S8_UINT
|
||||
DXGI_FORMAT_D32_FLOAT_S8X24_UINT, // D32_FLOAT_S8_UINT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM_SRGB
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_4x4_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_5x4_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_5x5_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_6x5_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_6x6_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x5_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x6_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_8x8_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x5_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x6_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x8_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_10x10_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_12x10_FLOAT
|
||||
DXGI_FORMAT_UNKNOWN, // SDL_GPU_TEXTUREFORMAT_ASTC_12x12_FLOAT
|
||||
};
|
||||
SDL_COMPILE_TIME_ASSERT(SDLToD3D12_TextureFormat, SDL_arraysize(SDLToD3D12_TextureFormat) == SDL_GPU_TEXTUREFORMAT_MAX_ENUM_VALUE);
|
||||
|
||||
|
|
|
@ -166,6 +166,48 @@ static MTLPixelFormat SDLToMetal_SurfaceFormat[] = {
|
|||
MTLPixelFormatInvalid, // D24_UNORM_S8_UINT
|
||||
#endif
|
||||
MTLPixelFormatDepth32Float_Stencil8, // D32_FLOAT_S8_UINT
|
||||
MTLPixelFormatASTC_4x4_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM
|
||||
MTLPixelFormatASTC_5x4_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM
|
||||
MTLPixelFormatASTC_5x5_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM
|
||||
MTLPixelFormatASTC_6x5_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM
|
||||
MTLPixelFormatASTC_6x6_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM
|
||||
MTLPixelFormatASTC_8x5_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM
|
||||
MTLPixelFormatASTC_8x6_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM
|
||||
MTLPixelFormatASTC_8x8_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM
|
||||
MTLPixelFormatASTC_10x5_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM
|
||||
MTLPixelFormatASTC_10x6_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM
|
||||
MTLPixelFormatASTC_10x8_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM
|
||||
MTLPixelFormatASTC_10x10_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM
|
||||
MTLPixelFormatASTC_12x10_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM
|
||||
MTLPixelFormatASTC_12x12_LDR, // SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM
|
||||
MTLPixelFormatASTC_4x4_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM_SRGB
|
||||
MTLPixelFormatASTC_5x4_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM_SRGB
|
||||
MTLPixelFormatASTC_5x5_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM_SRGB
|
||||
MTLPixelFormatASTC_6x5_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM_SRGB
|
||||
MTLPixelFormatASTC_6x6_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM_SRGB
|
||||
MTLPixelFormatASTC_8x5_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM_SRGB
|
||||
MTLPixelFormatASTC_8x6_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM_SRGB
|
||||
MTLPixelFormatASTC_8x8_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM_SRGB
|
||||
MTLPixelFormatASTC_10x5_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM_SRGB
|
||||
MTLPixelFormatASTC_10x6_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM_SRGB
|
||||
MTLPixelFormatASTC_10x8_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM_SRGB
|
||||
MTLPixelFormatASTC_10x10_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM_SRGB
|
||||
MTLPixelFormatASTC_12x10_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM_SRGB
|
||||
MTLPixelFormatASTC_12x12_sRGB, // SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM_SRGB
|
||||
MTLPixelFormatASTC_4x4_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_4x4_FLOAT
|
||||
MTLPixelFormatASTC_5x4_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_5x4_FLOAT
|
||||
MTLPixelFormatASTC_5x5_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_5x5_FLOAT
|
||||
MTLPixelFormatASTC_6x5_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_6x5_FLOAT
|
||||
MTLPixelFormatASTC_6x6_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_6x6_FLOAT
|
||||
MTLPixelFormatASTC_8x5_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_8x5_FLOAT
|
||||
MTLPixelFormatASTC_8x6_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_8x6_FLOAT
|
||||
MTLPixelFormatASTC_8x8_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_8x8_FLOAT
|
||||
MTLPixelFormatASTC_10x5_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_10x5_FLOAT
|
||||
MTLPixelFormatASTC_10x6_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_10x6_FLOAT
|
||||
MTLPixelFormatASTC_10x8_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_10x8_FLOAT
|
||||
MTLPixelFormatASTC_10x10_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_10x10_FLOAT
|
||||
MTLPixelFormatASTC_12x10_HDR, // SDL_GPU_TEXTUREFORMAT_ASTC_12x10_FLOAT
|
||||
MTLPixelFormatASTC_12x12_HDR // SDL_GPU_TEXTUREFORMAT_ASTC_12x12_FLOAT
|
||||
};
|
||||
SDL_COMPILE_TIME_ASSERT(SDLToMetal_SurfaceFormat, SDL_arraysize(SDLToMetal_SurfaceFormat) == SDL_GPU_TEXTUREFORMAT_MAX_ENUM_VALUE);
|
||||
|
||||
|
@ -3877,7 +3919,58 @@ static bool METAL_SupportsTextureFormat(
|
|||
#else
|
||||
return false;
|
||||
#endif
|
||||
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM_SRGB:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM_SRGB:
|
||||
#ifdef SDL_PLATFORM_MACOS
|
||||
return [renderer->device supportsFamily:MTLGPUFamilyApple7];
|
||||
#else
|
||||
return true;
|
||||
#endif
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_4x4_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_5x4_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_5x5_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_6x5_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_6x6_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x5_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x6_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_8x8_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x5_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x6_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x8_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_10x10_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_12x10_FLOAT:
|
||||
case SDL_GPU_TEXTUREFORMAT_ASTC_12x12_FLOAT:
|
||||
#ifdef SDL_PLATFORM_MACOS
|
||||
return [renderer->device supportsFamily:MTLGPUFamilyApple7];
|
||||
#else
|
||||
return [renderer->device supportsFamily:MTLGPUFamilyApple6];
|
||||
#endif
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -60,6 +60,8 @@ typedef struct VulkanExtensions
|
|||
Uint8 EXT_vertex_attribute_divisor;
|
||||
// Only required for special implementations (i.e. MoltenVK)
|
||||
Uint8 KHR_portability_subset;
|
||||
// Only required for decoding HDR ASTC textures
|
||||
Uint8 EXT_texture_compression_astc_hdr;
|
||||
} VulkanExtensions;
|
||||
|
||||
// Defines
|
||||
|
@ -198,6 +200,48 @@ static VkFormat SDLToVK_TextureFormat[] = {
|
|||
VK_FORMAT_D32_SFLOAT, // D32_FLOAT
|
||||
VK_FORMAT_D24_UNORM_S8_UINT, // D24_UNORM_S8_UINT
|
||||
VK_FORMAT_D32_SFLOAT_S8_UINT, // D32_FLOAT_S8_UINT
|
||||
VK_FORMAT_ASTC_5x4_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM
|
||||
VK_FORMAT_ASTC_4x4_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM
|
||||
VK_FORMAT_ASTC_5x5_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM
|
||||
VK_FORMAT_ASTC_6x5_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM
|
||||
VK_FORMAT_ASTC_6x6_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM
|
||||
VK_FORMAT_ASTC_8x5_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM
|
||||
VK_FORMAT_ASTC_8x6_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM
|
||||
VK_FORMAT_ASTC_8x8_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM
|
||||
VK_FORMAT_ASTC_10x5_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM
|
||||
VK_FORMAT_ASTC_10x6_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM
|
||||
VK_FORMAT_ASTC_10x8_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM
|
||||
VK_FORMAT_ASTC_10x10_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM
|
||||
VK_FORMAT_ASTC_12x10_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM
|
||||
VK_FORMAT_ASTC_12x12_UNORM_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM
|
||||
VK_FORMAT_ASTC_4x4_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_5x4_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_5x5_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_6x5_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_6x6_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_8x5_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_8x5_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_8x6_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_8x8_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_10x5_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_10x5_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_10x6_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_10x6_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_10x8_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_10x8_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_10x10_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_10x10_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_12x10_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_12x12_SRGB_BLOCK, // SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM_SRGB
|
||||
VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_4x4_FLOAT
|
||||
VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_5x4_FLOAT
|
||||
VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_5x5_FLOAT
|
||||
VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_6x5_FLOAT
|
||||
VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_6x6_FLOAT
|
||||
VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_8x5_FLOAT
|
||||
VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_8x6_FLOAT
|
||||
VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_8x8_FLOAT
|
||||
VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_10x5_FLOAT
|
||||
VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_10x6_FLOAT
|
||||
VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_10x8_FLOAT
|
||||
VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_10x10_FLOAT
|
||||
VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, // SDL_GPU_TEXTUREFORMAT_ASTC_12x10_FLOAT
|
||||
VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK // SDL_GPU_TEXTUREFORMAT_ASTC_12x12_FLOAT
|
||||
};
|
||||
SDL_COMPILE_TIME_ASSERT(SDLToVK_TextureFormat, SDL_arraysize(SDLToVK_TextureFormat) == SDL_GPU_TEXTUREFORMAT_MAX_ENUM_VALUE);
|
||||
|
||||
|
@ -10568,7 +10612,7 @@ static inline Uint8 CheckDeviceExtensions(
|
|||
supports->ext = 1; \
|
||||
}
|
||||
CHECK(KHR_swapchain)
|
||||
else CHECK(KHR_maintenance1) else CHECK(KHR_driver_properties) else CHECK(EXT_vertex_attribute_divisor) else CHECK(KHR_portability_subset)
|
||||
else CHECK(KHR_maintenance1) else CHECK(KHR_driver_properties) else CHECK(EXT_vertex_attribute_divisor) else CHECK(KHR_portability_subset) else CHECK(EXT_texture_compression_astc_hdr)
|
||||
#undef CHECK
|
||||
}
|
||||
|
||||
|
@ -10583,7 +10627,8 @@ static inline Uint32 GetDeviceExtensionCount(VulkanExtensions *supports)
|
|||
supports->KHR_maintenance1 +
|
||||
supports->KHR_driver_properties +
|
||||
supports->EXT_vertex_attribute_divisor +
|
||||
supports->KHR_portability_subset);
|
||||
supports->KHR_portability_subset +
|
||||
supports->EXT_texture_compression_astc_hdr);
|
||||
}
|
||||
|
||||
static inline void CreateDeviceExtensionArray(
|
||||
|
@ -10600,6 +10645,7 @@ static inline void CreateDeviceExtensionArray(
|
|||
CHECK(KHR_driver_properties)
|
||||
CHECK(EXT_vertex_attribute_divisor)
|
||||
CHECK(KHR_portability_subset)
|
||||
CHECK(EXT_texture_compression_astc_hdr)
|
||||
#undef CHECK
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue