Forráskód Böngészése

GPU: 32-bit component texture formats

cosmonaut 6 hónapja
szülő
commit
eedd2039f9

+ 9 - 0
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,

+ 6 - 0
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

+ 6 - 0
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

+ 6 - 0
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

+ 6 - 0
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