From 8e6ead2f7ba56edafd30debdac5bc01fd463aa23 Mon Sep 17 00:00:00 2001
From: Delta <[EMAIL REDACTED]>
Date: Wed, 9 Oct 2024 00:45:04 +0200
Subject: [PATCH] [GPU] Added ASTC texture format support (#11116)
---
include/SDL3/SDL_gpu.h | 47 ++++++++-
src/gpu/SDL_gpu.c | 43 ++++++++
src/gpu/SDL_sysgpu.h | 2 +-
src/gpu/d3d11/SDL_gpu_d3d11.c | 42 ++++++++
src/gpu/d3d12/SDL_gpu_d3d12.c | 42 ++++++++
src/gpu/metal/SDL_gpu_metal.m | 95 ++++++++++++++++-
src/gpu/vulkan/SDL_gpu_vulkan.c | 176 ++++++++++++++++++++------------
7 files changed, 379 insertions(+), 68 deletions(-)
diff --git a/include/SDL3/SDL_gpu.h b/include/SDL3/SDL_gpu.h
index 6e13b42683eed..b9e7442f995e6 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 a1210a0ea9e6a..3607a7954063f 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 ce48a5eb2eeaf..ba48c6cc1cc16 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 ff3b9370be691..9dd593b3d92f7 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 9e76930e8f00a..c85861c9c12a7 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 fd118bc69d75c..84515eaf025da 100644
--- a/src/gpu/metal/SDL_gpu_metal.m
+++ b/src/gpu/metal/SDL_gpu_metal.m
@@ -166,6 +166,48 @@ static void METAL_ReleaseWindow(
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 984fd227aea30..f5daf28f29c1c 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_F
(Patch may be truncated, please check the link at the top of this post.)