diff --git a/include/SDL3/SDL_gpu.h b/include/SDL3/SDL_gpu.h index 6e13b42683..b9e7442f99 100644 --- a/include/SDL3/SDL_gpu.h +++ b/include/SDL3/SDL_gpu.h @@ -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; /** diff --git a/src/gpu/SDL_gpu.c b/src/gpu/SDL_gpu.c index a1210a0ea9..3607a79540 100644 --- a/src/gpu/SDL_gpu.c +++ b/src/gpu/SDL_gpu.c @@ -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; diff --git a/src/gpu/SDL_sysgpu.h b/src/gpu/SDL_sysgpu.h index ce48a5eb2e..ba48c6cc1c 100644 --- a/src/gpu/SDL_sysgpu.h +++ b/src/gpu/SDL_sysgpu.h @@ -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) diff --git a/src/gpu/d3d11/SDL_gpu_d3d11.c b/src/gpu/d3d11/SDL_gpu_d3d11.c index ff3b9370be..9dd593b3d9 100644 --- a/src/gpu/d3d11/SDL_gpu_d3d11.c +++ b/src/gpu/d3d11/SDL_gpu_d3d11.c @@ -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); diff --git a/src/gpu/d3d12/SDL_gpu_d3d12.c b/src/gpu/d3d12/SDL_gpu_d3d12.c index 9e76930e8f..c85861c9c1 100644 --- a/src/gpu/d3d12/SDL_gpu_d3d12.c +++ b/src/gpu/d3d12/SDL_gpu_d3d12.c @@ -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); diff --git a/src/gpu/metal/SDL_gpu_metal.m b/src/gpu/metal/SDL_gpu_metal.m index fd118bc69d..84515eaf02 100644 --- a/src/gpu/metal/SDL_gpu_metal.m +++ b/src/gpu/metal/SDL_gpu_metal.m @@ -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; } diff --git a/src/gpu/vulkan/SDL_gpu_vulkan.c b/src/gpu/vulkan/SDL_gpu_vulkan.c index 984fd227ae..f5daf28f29 100644 --- a/src/gpu/vulkan/SDL_gpu_vulkan.c +++ b/src/gpu/vulkan/SDL_gpu_vulkan.c @@ -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 @@ -135,69 +137,111 @@ static VkPresentModeKHR SDLToVK_PresentMode[] = { }; static VkFormat SDLToVK_TextureFormat[] = { - VK_FORMAT_UNDEFINED, // INVALID - VK_FORMAT_R8_UNORM, // A8_UNORM - VK_FORMAT_R8_UNORM, // R8_UNORM - VK_FORMAT_R8G8_UNORM, // R8G8_UNORM - VK_FORMAT_R8G8B8A8_UNORM, // R8G8B8A8_UNORM - VK_FORMAT_R16_UNORM, // R16_UNORM - VK_FORMAT_R16G16_UNORM, // R16G16_UNORM - VK_FORMAT_R16G16B16A16_UNORM, // R16G16B16A16_UNORM - VK_FORMAT_A2B10G10R10_UNORM_PACK32, // R10G10B10A2_UNORM - VK_FORMAT_R5G6B5_UNORM_PACK16, // B5G6R5_UNORM - VK_FORMAT_A1R5G5B5_UNORM_PACK16, // B5G5R5A1_UNORM - VK_FORMAT_B4G4R4A4_UNORM_PACK16, // B4G4R4A4_UNORM - VK_FORMAT_B8G8R8A8_UNORM, // B8G8R8A8_UNORM - VK_FORMAT_BC1_RGBA_UNORM_BLOCK, // BC1_UNORM - VK_FORMAT_BC2_UNORM_BLOCK, // BC2_UNORM - VK_FORMAT_BC3_UNORM_BLOCK, // BC3_UNORM - VK_FORMAT_BC4_UNORM_BLOCK, // BC4_UNORM - VK_FORMAT_BC5_UNORM_BLOCK, // BC5_UNORM - VK_FORMAT_BC7_UNORM_BLOCK, // BC7_UNORM - VK_FORMAT_BC6H_SFLOAT_BLOCK, // BC6H_FLOAT - VK_FORMAT_BC6H_UFLOAT_BLOCK, // BC6H_UFLOAT - VK_FORMAT_R8_SNORM, // R8_SNORM - VK_FORMAT_R8G8_SNORM, // R8G8_SNORM - VK_FORMAT_R8G8B8A8_SNORM, // R8G8B8A8_SNORM - VK_FORMAT_R16_SNORM, // R16_SNORM - VK_FORMAT_R16G16_SNORM, // R16G16_SNORM - VK_FORMAT_R16G16B16A16_SNORM, // R16G16B16A16_SNORM - VK_FORMAT_R16_SFLOAT, // R16_FLOAT - VK_FORMAT_R16G16_SFLOAT, // R16G16_FLOAT - VK_FORMAT_R16G16B16A16_SFLOAT, // R16G16B16A16_FLOAT - VK_FORMAT_R32_SFLOAT, // R32_FLOAT - VK_FORMAT_R32G32_SFLOAT, // R32G32_FLOAT - VK_FORMAT_R32G32B32A32_SFLOAT, // R32G32B32A32_FLOAT - VK_FORMAT_B10G11R11_UFLOAT_PACK32, // R11G11B10_UFLOAT - VK_FORMAT_R8_UINT, // R8_UINT - VK_FORMAT_R8G8_UINT, // R8G8_UINT - VK_FORMAT_R8G8B8A8_UINT, // R8G8B8A8_UINT - VK_FORMAT_R16_UINT, // R16_UINT - VK_FORMAT_R16G16_UINT, // R16G16_UINT - VK_FORMAT_R16G16B16A16_UINT, // R16G16B16A16_UINT - VK_FORMAT_R32_UINT, // R32_UINT - VK_FORMAT_R32G32_UINT, // R32G32_UINT - VK_FORMAT_R32G32B32A32_UINT, // R32G32B32A32_UINT - VK_FORMAT_R8_SINT, // R8_INT - VK_FORMAT_R8G8_SINT, // R8G8_INT - VK_FORMAT_R8G8B8A8_SINT, // R8G8B8A8_INT - VK_FORMAT_R16_SINT, // R16_INT - VK_FORMAT_R16G16_SINT, // R16G16_INT - VK_FORMAT_R16G16B16A16_SINT, // R16G16B16A16_INT - VK_FORMAT_R32_SINT, // R32_INT - VK_FORMAT_R32G32_SINT, // R32G32_INT - VK_FORMAT_R32G32B32A32_SINT, // R32G32B32A32_INT - VK_FORMAT_R8G8B8A8_SRGB, // R8G8B8A8_UNORM_SRGB - VK_FORMAT_B8G8R8A8_SRGB, // B8G8R8A8_UNORM_SRGB - VK_FORMAT_BC1_RGBA_SRGB_BLOCK, // BC1_UNORM_SRGB - VK_FORMAT_BC2_SRGB_BLOCK, // BC3_UNORM_SRGB - VK_FORMAT_BC3_SRGB_BLOCK, // BC3_UNORM_SRGB - VK_FORMAT_BC7_SRGB_BLOCK, // BC7_UNORM_SRGB - VK_FORMAT_D16_UNORM, // D16_UNORM - VK_FORMAT_X8_D24_UNORM_PACK32, // D24_UNORM - 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_UNDEFINED, // INVALID + VK_FORMAT_R8_UNORM, // A8_UNORM + VK_FORMAT_R8_UNORM, // R8_UNORM + VK_FORMAT_R8G8_UNORM, // R8G8_UNORM + VK_FORMAT_R8G8B8A8_UNORM, // R8G8B8A8_UNORM + VK_FORMAT_R16_UNORM, // R16_UNORM + VK_FORMAT_R16G16_UNORM, // R16G16_UNORM + VK_FORMAT_R16G16B16A16_UNORM, // R16G16B16A16_UNORM + VK_FORMAT_A2B10G10R10_UNORM_PACK32, // R10G10B10A2_UNORM + VK_FORMAT_R5G6B5_UNORM_PACK16, // B5G6R5_UNORM + VK_FORMAT_A1R5G5B5_UNORM_PACK16, // B5G5R5A1_UNORM + VK_FORMAT_B4G4R4A4_UNORM_PACK16, // B4G4R4A4_UNORM + VK_FORMAT_B8G8R8A8_UNORM, // B8G8R8A8_UNORM + VK_FORMAT_BC1_RGBA_UNORM_BLOCK, // BC1_UNORM + VK_FORMAT_BC2_UNORM_BLOCK, // BC2_UNORM + VK_FORMAT_BC3_UNORM_BLOCK, // BC3_UNORM + VK_FORMAT_BC4_UNORM_BLOCK, // BC4_UNORM + VK_FORMAT_BC5_UNORM_BLOCK, // BC5_UNORM + VK_FORMAT_BC7_UNORM_BLOCK, // BC7_UNORM + VK_FORMAT_BC6H_SFLOAT_BLOCK, // BC6H_FLOAT + VK_FORMAT_BC6H_UFLOAT_BLOCK, // BC6H_UFLOAT + VK_FORMAT_R8_SNORM, // R8_SNORM + VK_FORMAT_R8G8_SNORM, // R8G8_SNORM + VK_FORMAT_R8G8B8A8_SNORM, // R8G8B8A8_SNORM + VK_FORMAT_R16_SNORM, // R16_SNORM + VK_FORMAT_R16G16_SNORM, // R16G16_SNORM + VK_FORMAT_R16G16B16A16_SNORM, // R16G16B16A16_SNORM + VK_FORMAT_R16_SFLOAT, // R16_FLOAT + VK_FORMAT_R16G16_SFLOAT, // R16G16_FLOAT + VK_FORMAT_R16G16B16A16_SFLOAT, // R16G16B16A16_FLOAT + VK_FORMAT_R32_SFLOAT, // R32_FLOAT + VK_FORMAT_R32G32_SFLOAT, // R32G32_FLOAT + VK_FORMAT_R32G32B32A32_SFLOAT, // R32G32B32A32_FLOAT + VK_FORMAT_B10G11R11_UFLOAT_PACK32, // R11G11B10_UFLOAT + VK_FORMAT_R8_UINT, // R8_UINT + VK_FORMAT_R8G8_UINT, // R8G8_UINT + VK_FORMAT_R8G8B8A8_UINT, // R8G8B8A8_UINT + VK_FORMAT_R16_UINT, // R16_UINT + VK_FORMAT_R16G16_UINT, // R16G16_UINT + VK_FORMAT_R16G16B16A16_UINT, // R16G16B16A16_UINT + VK_FORMAT_R32_UINT, // R32_UINT + VK_FORMAT_R32G32_UINT, // R32G32_UINT + VK_FORMAT_R32G32B32A32_UINT, // R32G32B32A32_UINT + VK_FORMAT_R8_SINT, // R8_INT + VK_FORMAT_R8G8_SINT, // R8G8_INT + VK_FORMAT_R8G8B8A8_SINT, // R8G8B8A8_INT + VK_FORMAT_R16_SINT, // R16_INT + VK_FORMAT_R16G16_SINT, // R16G16_INT + VK_FORMAT_R16G16B16A16_SINT, // R16G16B16A16_INT + VK_FORMAT_R32_SINT, // R32_INT + VK_FORMAT_R32G32_SINT, // R32G32_INT + VK_FORMAT_R32G32B32A32_SINT, // R32G32B32A32_INT + VK_FORMAT_R8G8B8A8_SRGB, // R8G8B8A8_UNORM_SRGB + VK_FORMAT_B8G8R8A8_SRGB, // B8G8R8A8_UNORM_SRGB + VK_FORMAT_BC1_RGBA_SRGB_BLOCK, // BC1_UNORM_SRGB + VK_FORMAT_BC2_SRGB_BLOCK, // BC3_UNORM_SRGB + VK_FORMAT_BC3_SRGB_BLOCK, // BC3_UNORM_SRGB + VK_FORMAT_BC7_SRGB_BLOCK, // BC7_UNORM_SRGB + VK_FORMAT_D16_UNORM, // D16_UNORM + VK_FORMAT_X8_D24_UNORM_PACK32, // D24_UNORM + 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 }