|
@@ -438,6 +438,89 @@ static inline bool IsCompressedFormat(
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static inline bool FormatHasAlpha(
|
|
|
|
+ SDL_GPUTextureFormat format)
|
|
|
|
+{
|
|
|
|
+ switch (format) {
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_12x10_UNORM_SRGB:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_12x12_UNORM_SRGB:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_12x10_FLOAT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_12x12_FLOAT:
|
|
|
|
+ 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_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_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_8x5_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_8x6_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_8x8_UNORM:
|
|
|
|
+ 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_8x5_FLOAT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_8x6_FLOAT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_8x8_FLOAT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_6x5_UNORM_SRGB:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_6x6_UNORM_SRGB:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_6x5_FLOAT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_6x6_FLOAT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_5x4_UNORM_SRGB:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_5x5_UNORM_SRGB:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_5x4_FLOAT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_5x5_FLOAT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_4x4_UNORM_SRGB:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_ASTC_4x4_FLOAT:
|
|
|
|
+ // ASTC textures may or may not have alpha; return true as this is mainly intended for validation
|
|
|
|
+ return true;
|
|
|
|
+
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_BC1_RGBA_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_BC2_RGBA_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_BC3_RGBA_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_BC7_RGBA_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_BC1_RGBA_UNORM_SRGB:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_BC2_RGBA_UNORM_SRGB:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_BC3_RGBA_UNORM_SRGB:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_BC7_RGBA_UNORM_SRGB:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_B5G5R5A1_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_B4G4R4A4_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R10G10B10A2_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R16G16B16A16_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_A8_UNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R8G8B8A8_SNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R16G16B16A16_SNORM:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R16G16B16A16_FLOAT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R32G32B32A32_FLOAT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UINT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R16G16B16A16_UINT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R32G32B32A32_UINT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R8G8B8A8_INT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R16G16B16A16_INT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R32G32B32A32_INT:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM_SRGB:
|
|
|
|
+ case SDL_GPU_TEXTUREFORMAT_B8G8R8A8_UNORM_SRGB:
|
|
|
|
+ return true;
|
|
|
|
+
|
|
|
|
+ default:
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
static inline Uint32 IndexSize(SDL_GPUIndexElementSize size)
|
|
static inline Uint32 IndexSize(SDL_GPUIndexElementSize size)
|
|
{
|
|
{
|
|
return (size == SDL_GPU_INDEXELEMENTSIZE_16BIT) ? 2 : 4;
|
|
return (size == SDL_GPU_INDEXELEMENTSIZE_16BIT) ? 2 : 4;
|