diff --git a/include/SDL3/SDL_gpu.h b/include/SDL3/SDL_gpu.h index 637c25836b..68b5c96b27 100644 --- a/include/SDL3/SDL_gpu.h +++ b/include/SDL3/SDL_gpu.h @@ -1219,7 +1219,7 @@ typedef enum SDL_GPUPresentMode * - HDR_EXTENDED_LINEAR: R16G16B16A16_SFLOAT swapchain. Pixel values are in * extended linear sRGB encoding and permits values outside of the [0, 1] * range. - * - HDR10_ST2048: A2R10G10B10 or A2B10G10R10 swapchain. Pixel values are in + * - HDR10_ST2084: A2R10G10B10 or A2B10G10R10 swapchain. Pixel values are in * BT.2020 ST2084 (PQ) encoding. * * \since This enum is available since SDL 3.1.3 @@ -1233,7 +1233,7 @@ typedef enum SDL_GPUSwapchainComposition SDL_GPU_SWAPCHAINCOMPOSITION_SDR, SDL_GPU_SWAPCHAINCOMPOSITION_SDR_LINEAR, SDL_GPU_SWAPCHAINCOMPOSITION_HDR_EXTENDED_LINEAR, - SDL_GPU_SWAPCHAINCOMPOSITION_HDR10_ST2048 + SDL_GPU_SWAPCHAINCOMPOSITION_HDR10_ST2084 } SDL_GPUSwapchainComposition; /* Structures */ diff --git a/src/gpu/SDL_sysgpu.h b/src/gpu/SDL_sysgpu.h index 901fd9aba2..b2723cce8f 100644 --- a/src/gpu/SDL_sysgpu.h +++ b/src/gpu/SDL_sysgpu.h @@ -76,7 +76,7 @@ typedef struct BlitPipelineCacheEntry #define SDL_GPU_STENCILOP_MAX_ENUM_VALUE (SDL_GPU_STENCILOP_DECREMENT_AND_WRAP + 1) #define SDL_GPU_BLENDOP_MAX_ENUM_VALUE (SDL_GPU_BLENDOP_MAX + 1) #define SDL_GPU_BLENDFACTOR_MAX_ENUM_VALUE (SDL_GPU_BLENDFACTOR_SRC_ALPHA_SATURATE + 1) -#define SDL_GPU_SWAPCHAINCOMPOSITION_MAX_ENUM_VALUE (SDL_GPU_SWAPCHAINCOMPOSITION_HDR10_ST2048 + 1) +#define SDL_GPU_SWAPCHAINCOMPOSITION_MAX_ENUM_VALUE (SDL_GPU_SWAPCHAINCOMPOSITION_HDR10_ST2084 + 1) #define SDL_GPU_PRESENTMODE_MAX_ENUM_VALUE (SDL_GPU_PRESENTMODE_MAILBOX + 1) static inline Sint32 Texture_GetBlockWidth( diff --git a/src/gpu/d3d12/SDL_gpu_d3d12.c b/src/gpu/d3d12/SDL_gpu_d3d12.c index dc02000e6b..6ab4fa858d 100644 --- a/src/gpu/d3d12/SDL_gpu_d3d12.c +++ b/src/gpu/d3d12/SDL_gpu_d3d12.c @@ -191,23 +191,23 @@ typedef enum D3D12BufferType static SDL_GPUTextureFormat SwapchainCompositionToSDLTextureFormat[] = { SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM, // SDR - SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM_SRGB, // SDR_SRGB - SDL_GPU_TEXTUREFORMAT_R16G16B16A16_FLOAT, // HDR - SDL_GPU_TEXTUREFORMAT_R10G10B10A2_UNORM, // HDR_ADVANCED + SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM_SRGB, // SDR_LINEAR + SDL_GPU_TEXTUREFORMAT_R16G16B16A16_FLOAT, // HDR_EXTENDED_LINEAR + SDL_GPU_TEXTUREFORMAT_R10G10B10A2_UNORM, // HDR10_ST2084 }; static DXGI_FORMAT SwapchainCompositionToTextureFormat[] = { - DXGI_FORMAT_B8G8R8A8_UNORM, // SDR - DXGI_FORMAT_B8G8R8A8_UNORM, /* SDR_SRGB */ // NOTE: The RTV uses the sRGB format - DXGI_FORMAT_R16G16B16A16_FLOAT, // HDR - DXGI_FORMAT_R10G10B10A2_UNORM, // HDR_ADVANCED + DXGI_FORMAT_B8G8R8A8_UNORM, // SDR + DXGI_FORMAT_B8G8R8A8_UNORM, // SDR_LINEAR (NOTE: The RTV uses the sRGB format) + DXGI_FORMAT_R16G16B16A16_FLOAT, // HDR_EXTENDED_LINEAR + DXGI_FORMAT_R10G10B10A2_UNORM, // HDR10_ST2084 }; static DXGI_COLOR_SPACE_TYPE SwapchainCompositionToColorSpace[] = { DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709, // SDR - DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709, // SDR_SRGB - DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709, // HDR - DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 // HDR_ADVANCED + DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709, // SDR_LINEAR + DXGI_COLOR_SPACE_RGB_FULL_G10_NONE_P709, // HDR_EXTENDED_LINEAR + DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 // HDR10_ST2084 }; static D3D12_BLEND SDLToD3D12_BlendFactor[] = { diff --git a/src/gpu/metal/SDL_gpu_metal.m b/src/gpu/metal/SDL_gpu_metal.m index d2a970a18b..92086f4063 100644 --- a/src/gpu/metal/SDL_gpu_metal.m +++ b/src/gpu/metal/SDL_gpu_metal.m @@ -369,7 +369,7 @@ static SDL_GPUTextureFormat SwapchainCompositionToFormat[] = { SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM, // SDR SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM_SRGB, // SDR_LINEAR SDL_GPU_TEXTUREFORMAT_R16G16B16A16_FLOAT, // HDR_EXTENDED_LINEAR - SDL_GPU_TEXTUREFORMAT_R10G10B10A2_UNORM, // HDR10_ST2048 + SDL_GPU_TEXTUREFORMAT_R10G10B10A2_UNORM, // HDR10_ST2084 }; static CFStringRef SwapchainCompositionToColorSpace[4]; // initialized on device creation @@ -3490,7 +3490,7 @@ static bool METAL_SupportsSwapchainComposition( SDL_GPUSwapchainComposition swapchainComposition) { #ifndef SDL_PLATFORM_MACOS - if (swapchainComposition == SDL_GPU_SWAPCHAINCOMPOSITION_HDR10_ST2048) { + if (swapchainComposition == SDL_GPU_SWAPCHAINCOMPOSITION_HDR10_ST2084) { return false; } #endif @@ -3498,7 +3498,7 @@ static bool METAL_SupportsSwapchainComposition( if (@available(macOS 11.0, *)) { return true; } else { - return swapchainComposition != SDL_GPU_SWAPCHAINCOMPOSITION_HDR10_ST2048; + return swapchainComposition != SDL_GPU_SWAPCHAINCOMPOSITION_HDR10_ST2084; } } diff --git a/src/gpu/vulkan/SDL_gpu_vulkan.c b/src/gpu/vulkan/SDL_gpu_vulkan.c index 0e6f505a56..85450ce0cc 100644 --- a/src/gpu/vulkan/SDL_gpu_vulkan.c +++ b/src/gpu/vulkan/SDL_gpu_vulkan.c @@ -271,14 +271,14 @@ static VkFormat SwapchainCompositionToFormat[] = { VK_FORMAT_B8G8R8A8_UNORM, // SDR VK_FORMAT_B8G8R8A8_SRGB, // SDR_LINEAR VK_FORMAT_R16G16B16A16_SFLOAT, // HDR_EXTENDED_LINEAR - VK_FORMAT_A2B10G10R10_UNORM_PACK32 // HDR10_ST2048 + VK_FORMAT_A2B10G10R10_UNORM_PACK32 // HDR10_ST2084 }; static VkFormat SwapchainCompositionToFallbackFormat[] = { - VK_FORMAT_R8G8B8A8_UNORM, - VK_FORMAT_R8G8B8A8_SRGB, - VK_FORMAT_UNDEFINED, // no fallback - VK_FORMAT_UNDEFINED // no fallback + VK_FORMAT_R8G8B8A8_UNORM, // SDR + VK_FORMAT_R8G8B8A8_SRGB, // SDR_LINEAR + VK_FORMAT_UNDEFINED, // HDR_EXTENDED_LINEAR (no fallback) + VK_FORMAT_UNDEFINED // HDR10_ST2084 (no fallback) }; static SDL_GPUTextureFormat SwapchainCompositionToSDLFormat( @@ -292,7 +292,7 @@ static SDL_GPUTextureFormat SwapchainCompositionToSDLFormat( return usingFallback ? SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM_SRGB : SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM_SRGB; case SDL_GPU_SWAPCHAINCOMPOSITION_HDR_EXTENDED_LINEAR: return SDL_GPU_TEXTUREFORMAT_R16G16B16A16_FLOAT; - case SDL_GPU_SWAPCHAINCOMPOSITION_HDR10_ST2048: + case SDL_GPU_SWAPCHAINCOMPOSITION_HDR10_ST2084: return SDL_GPU_TEXTUREFORMAT_R10G10B10A2_UNORM; default: return SDL_GPU_TEXTUREFORMAT_INVALID; @@ -300,18 +300,18 @@ static SDL_GPUTextureFormat SwapchainCompositionToSDLFormat( } static VkColorSpaceKHR SwapchainCompositionToColorSpace[] = { - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, - VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT, - VK_COLOR_SPACE_HDR10_ST2084_EXT + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, // SDR + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, // SDR_LINEAR + VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT, // HDR_EXTENDED_LINEAR + VK_COLOR_SPACE_HDR10_ST2084_EXT // HDR10_ST2084 }; static VkComponentMapping SwapchainCompositionSwizzle[] = { IDENTITY_SWIZZLE, // SDR - IDENTITY_SWIZZLE, // SDR_SRGB - IDENTITY_SWIZZLE, // HDR + IDENTITY_SWIZZLE, // SDR_LINEAR + IDENTITY_SWIZZLE, // HDR_EXTENDED_LINEAR { - // HDR_ADVANCED + // HDR10_ST2084 VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B,