diff --git a/include/SDL3/SDL_gpu.h b/include/SDL3/SDL_gpu.h index 914ce76562..24031de9cc 100644 --- a/include/SDL3/SDL_gpu.h +++ b/include/SDL3/SDL_gpu.h @@ -309,6 +309,9 @@ typedef enum SDL_GPUIndexElementSize * a format is supported before using it. However, there are a few guaranteed * formats. * + * FIXME: Check universal support for 32-bit component formats + * FIXME: Check universal support for SIMULTANEOUS_READ_WRITE + * * For SAMPLER usage, the following formats are universally supported: * * - R8G8B8A8_UNORM @@ -435,6 +438,9 @@ typedef enum SDL_GPUTextureFormat SDL_GPU_TEXTUREFORMAT_R16_UINT, SDL_GPU_TEXTUREFORMAT_R16G16_UINT, SDL_GPU_TEXTUREFORMAT_R16G16B16A16_UINT, + SDL_GPU_TEXTUREFORMAT_R32_UINT, + SDL_GPU_TEXTUREFORMAT_R32G32_UINT, + SDL_GPU_TEXTUREFORMAT_R32G32B32A32_UINT, /* Signed Integer Color Formats */ SDL_GPU_TEXTUREFORMAT_R8_INT, SDL_GPU_TEXTUREFORMAT_R8G8_INT, @@ -442,6 +448,9 @@ typedef enum SDL_GPUTextureFormat SDL_GPU_TEXTUREFORMAT_R16_INT, SDL_GPU_TEXTUREFORMAT_R16G16_INT, SDL_GPU_TEXTUREFORMAT_R16G16B16A16_INT, + SDL_GPU_TEXTUREFORMAT_R32_INT, + SDL_GPU_TEXTUREFORMAT_R32G32_INT, + SDL_GPU_TEXTUREFORMAT_R32G32B32A32_INT, /* SRGB Unsigned Normalized Color Formats */ SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM_SRGB, SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM_SRGB, diff --git a/src/gpu/d3d11/SDL_gpu_d3d11.c b/src/gpu/d3d11/SDL_gpu_d3d11.c index af0f6e93ed..8776214410 100644 --- a/src/gpu/d3d11/SDL_gpu_d3d11.c +++ b/src/gpu/d3d11/SDL_gpu_d3d11.c @@ -214,12 +214,18 @@ static DXGI_FORMAT SDLToD3D11_TextureFormat[] = { DXGI_FORMAT_R16_UINT, // R16_UINT DXGI_FORMAT_R16G16_UINT, // R16G16_UINT DXGI_FORMAT_R16G16B16A16_UINT, // R16G16B16A16_UINT + DXGI_FORMAT_R32_UINT, // R32_UINT + DXGI_FORMAT_R32G32_UINT, // R32G32_UINT + DXGI_FORMAT_R32G32B32A32_UINT, // R32G32B32A32_UINT DXGI_FORMAT_R8_SINT, // R8_INT DXGI_FORMAT_R8G8_SINT, // R8G8_INT DXGI_FORMAT_R8G8B8A8_SINT, // R8G8B8A8_INT DXGI_FORMAT_R16_SINT, // R16_INT DXGI_FORMAT_R16G16_SINT, // R16G16_INT DXGI_FORMAT_R16G16B16A16_SINT, // R16G16B16A16_INT + DXGI_FORMAT_R32_SINT, // R32_INT + DXGI_FORMAT_R32G32_SINT, // R32G32_INT + DXGI_FORMAT_R32G32B32A32_SINT, // R32G32B32A32_INT DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, // R8G8B8A8_UNORM_SRGB DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, // B8G8R8A8_UNORM_SRGB DXGI_FORMAT_BC1_UNORM_SRGB, // BC1_UNORM_SRGB diff --git a/src/gpu/d3d12/SDL_gpu_d3d12.c b/src/gpu/d3d12/SDL_gpu_d3d12.c index df81d6a595..37cedb86a8 100644 --- a/src/gpu/d3d12/SDL_gpu_d3d12.c +++ b/src/gpu/d3d12/SDL_gpu_d3d12.c @@ -290,12 +290,18 @@ static DXGI_FORMAT SDLToD3D12_TextureFormat[] = { DXGI_FORMAT_R16_UINT, // R16_UINT DXGI_FORMAT_R16G16_UINT, // R16G16_UINT DXGI_FORMAT_R16G16B16A16_UINT, // R16G16B16A16_UINT + DXGI_FORMAT_R32_UINT, // R32_UINT + DXGI_FORMAT_R32G32_UINT, // R32G32_UINT + DXGI_FORMAT_R32G32B32A32_UINT, // R32G32B32A32_UINT DXGI_FORMAT_R8_SINT, // R8_INT DXGI_FORMAT_R8G8_SINT, // R8G8_INT DXGI_FORMAT_R8G8B8A8_SINT, // R8G8B8A8_INT DXGI_FORMAT_R16_SINT, // R16_INT DXGI_FORMAT_R16G16_SINT, // R16G16_INT DXGI_FORMAT_R16G16B16A16_SINT, // R16G16B16A16_INT + DXGI_FORMAT_R32_SINT, // R32_INT + DXGI_FORMAT_R32G32_SINT, // R32G32_INT + DXGI_FORMAT_R32G32B32A32_SINT, // R32G32B32A32_INT DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, // R8G8B8A8_UNORM_SRGB DXGI_FORMAT_B8G8R8A8_UNORM_SRGB, // B8G8R8A8_UNORM_SRGB DXGI_FORMAT_BC1_UNORM_SRGB, // BC1_UNORM_SRGB diff --git a/src/gpu/metal/SDL_gpu_metal.m b/src/gpu/metal/SDL_gpu_metal.m index ac06b1cea2..a9c93d5971 100644 --- a/src/gpu/metal/SDL_gpu_metal.m +++ b/src/gpu/metal/SDL_gpu_metal.m @@ -128,12 +128,18 @@ static MTLPixelFormat SDLToMetal_SurfaceFormat[] = { MTLPixelFormatR16Uint, // R16_UINT MTLPixelFormatRG16Uint, // R16G16_UINT MTLPixelFormatRGBA16Uint, // R16G16B16A16_UINT + MTLPixelFormatR32Uint, // R32_UINT + MTLPixelFormatRG32Uint, // R32G32_UINT + MTLPixelFormatRGBA32Uint, // R32G32B32A32_UINT MTLPixelFormatR8Sint, // R8_UINT MTLPixelFormatRG8Sint, // R8G8_UINT MTLPixelFormatRGBA8Sint, // R8G8B8A8_UINT MTLPixelFormatR16Sint, // R16_UINT MTLPixelFormatRG16Sint, // R16G16_UINT MTLPixelFormatRGBA16Sint, // R16G16B16A16_UINT + MTLPixelFormatR32Sint, // R32_INT + MTLPixelFormatRG32Sint, // R32G32_INT + MTLPixelFormatRGBA32Sint, // R32G32B32A32_INT MTLPixelFormatRGBA8Unorm_sRGB, // R8G8B8A8_UNORM_SRGB MTLPixelFormatBGRA8Unorm_sRGB, // B8G8R8A8_UNORM_SRGB #ifdef SDL_PLATFORM_MACOS diff --git a/src/gpu/vulkan/SDL_gpu_vulkan.c b/src/gpu/vulkan/SDL_gpu_vulkan.c index 69750620eb..fc2e5fa279 100644 --- a/src/gpu/vulkan/SDL_gpu_vulkan.c +++ b/src/gpu/vulkan/SDL_gpu_vulkan.c @@ -176,12 +176,18 @@ static VkFormat SDLToVK_TextureFormat[] = { 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