mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-10-04 17:06:25 +00:00
Added SDL_GetPixelFormatFromGPUTextureFormat() and SDL_GetGPUTextureFormatFromPixelFormat()
Fixes https://github.com/libsdl-org/SDL/issues/13899
This commit is contained in:
@@ -3344,3 +3344,68 @@ Uint32 SDL_CalculateGPUTextureFormatSize(
|
||||
Uint32 blocksPerColumn = (height + blockHeight - 1) / blockHeight;
|
||||
return depth_or_layer_count * blocksPerRow * blocksPerColumn * SDL_GPUTextureFormatTexelBlockSize(format);
|
||||
}
|
||||
|
||||
SDL_PixelFormat SDL_GetPixelFormatFromGPUTextureFormat(SDL_GPUTextureFormat format)
|
||||
{
|
||||
switch (format) {
|
||||
case SDL_GPU_TEXTUREFORMAT_B4G4R4A4_UNORM:
|
||||
return SDL_PIXELFORMAT_BGRA4444;
|
||||
case SDL_GPU_TEXTUREFORMAT_B5G6R5_UNORM:
|
||||
return SDL_PIXELFORMAT_BGR565;
|
||||
case SDL_GPU_TEXTUREFORMAT_B5G5R5A1_UNORM:
|
||||
return SDL_PIXELFORMAT_BGRA5551;
|
||||
case SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UINT:
|
||||
return SDL_PIXELFORMAT_RGBA32;
|
||||
case SDL_GPU_TEXTUREFORMAT_R8G8B8A8_SNORM:
|
||||
return SDL_PIXELFORMAT_RGBA32;
|
||||
case SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM:
|
||||
return SDL_PIXELFORMAT_RGBA32;
|
||||
case SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM_SRGB:
|
||||
return SDL_PIXELFORMAT_RGBA32;
|
||||
case SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM:
|
||||
return SDL_PIXELFORMAT_BGRA32;
|
||||
case SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM_SRGB:
|
||||
return SDL_PIXELFORMAT_BGRA32;
|
||||
case SDL_GPU_TEXTUREFORMAT_R10G10B10A2_UNORM:
|
||||
return SDL_PIXELFORMAT_ABGR2101010;
|
||||
case SDL_GPU_TEXTUREFORMAT_R16G16B16A16_UINT:
|
||||
return SDL_PIXELFORMAT_RGBA64;
|
||||
case SDL_GPU_TEXTUREFORMAT_R16G16B16A16_UNORM:
|
||||
return SDL_PIXELFORMAT_RGBA64;
|
||||
case SDL_GPU_TEXTUREFORMAT_R16G16B16A16_FLOAT:
|
||||
return SDL_PIXELFORMAT_RGBA64_FLOAT;
|
||||
case SDL_GPU_TEXTUREFORMAT_R32G32B32A32_FLOAT:
|
||||
return SDL_PIXELFORMAT_RGBA128_FLOAT;
|
||||
default:
|
||||
return SDL_PIXELFORMAT_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
SDL_GPUTextureFormat SDL_GetGPUTextureFormatFromPixelFormat(SDL_PixelFormat format)
|
||||
{
|
||||
switch (format) {
|
||||
case SDL_PIXELFORMAT_BGRA4444:
|
||||
return SDL_GPU_TEXTUREFORMAT_B4G4R4A4_UNORM;
|
||||
case SDL_PIXELFORMAT_BGR565:
|
||||
return SDL_GPU_TEXTUREFORMAT_B5G6R5_UNORM;
|
||||
case SDL_PIXELFORMAT_BGRA5551:
|
||||
return SDL_GPU_TEXTUREFORMAT_B5G5R5A1_UNORM;
|
||||
case SDL_PIXELFORMAT_BGRA32:
|
||||
case SDL_PIXELFORMAT_BGRX32:
|
||||
return SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM;
|
||||
case SDL_PIXELFORMAT_RGBA32:
|
||||
case SDL_PIXELFORMAT_RGBX32:
|
||||
return SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM;
|
||||
case SDL_PIXELFORMAT_ABGR2101010:
|
||||
return SDL_GPU_TEXTUREFORMAT_R10G10B10A2_UNORM;
|
||||
case SDL_PIXELFORMAT_RGBA64:
|
||||
return SDL_GPU_TEXTUREFORMAT_R16G16B16A16_UNORM;
|
||||
case SDL_PIXELFORMAT_RGBA64_FLOAT:
|
||||
return SDL_GPU_TEXTUREFORMAT_R16G16B16A16_FLOAT;
|
||||
case SDL_PIXELFORMAT_RGBA128_FLOAT:
|
||||
return SDL_GPU_TEXTUREFORMAT_R32G32B32A32_FLOAT;
|
||||
default:
|
||||
return SDL_GPU_TEXTUREFORMAT_INVALID;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user