191 ASTC_10x5_UNORM_SRGB,
193 ASTC_10x6_UNORM_SRGB,
197 ASTC_10x8_UNORM_SRGB,
199 ASTC_10x10_UNORM_SRGB,
201 ASTC_12x10_UNORM_SRGB,
203 ASTC_12x12_UNORM_SRGB,
229 using StorageType = plUInt16;
234 static const char* GetName(Enum format);
237 static plUInt32 GetPlaneCount(Enum format);
241 static plUInt32 GetBitsPerPixel(Enum format, plUInt32 uiPlaneIndex = 0);
244 static float GetExactBitsPerPixel(Enum format, plUInt32 uiPlaneIndex = 0);
247 static plUInt32 GetBitsPerBlock(Enum format, plUInt32 uiPlaneIndex = 0);
250 static plUInt32 GetNumChannels(Enum format);
259 static plUInt32 GetRedMask(Enum format);
262 static plUInt32 GetGreenMask(Enum format);
265 static plUInt32 GetBlueMask(Enum format);
268 static plUInt32 GetAlphaMask(Enum format);
271 static plUInt32 GetBlockWidth(Enum format, plUInt32 uiPlaneIndex = 0);
274 static plUInt32 GetBlockHeight(Enum format, plUInt32 uiPlaneIndex = 0);
277 static plUInt32 GetBlockDepth(Enum format, plUInt32 uiPlaneIndex = 0);
283 static bool IsCompressed(Enum format);
286 static bool IsDepth(Enum format);
289 static bool IsSrgb(Enum format);
292 static bool IsStencil(Enum format);
295 static Enum AsSrgb(Enum format);
298 static Enum AsLinear(Enum format);
301 static plUInt32 GetNumBlocksX(Enum format, plUInt32 uiWidth, plUInt32 uiPlaneIndex = 0);
304 static plUInt32 GetNumBlocksY(Enum format, plUInt32 uiHeight, plUInt32 uiPlaneIndex = 0);
307 static plUInt32 GetNumBlocksZ(Enum format, plUInt32 uiDepth, plUInt32 uiPlaneIndex = 0);
310 static plUInt64 GetRowPitch(Enum format, plUInt32 uiWidth, plUInt32 uiPlaneIndex = 0);
313 static plUInt64 GetDepthPitch(Enum format, plUInt32 uiWidth, plUInt32 uiHeight, plUInt32 uiPlaneIndex = 0);
320 plUInt32 uiRedMask, plUInt32 uiGreenMask, plUInt32 uiBlueMask, plUInt32 uiAlphaMask, plUInt32 uiBitsPerPixel);
326 static bool IsCompatible(Enum left, Enum right);
329 static bool RequiresFirstLevelBlockAlignment(Enum format);