From d455899b933ccd6786e96d17cac88ca2f7d8fdbb Mon Sep 17 00:00:00 2001 From: Jeremy Nelson Date: Thu, 8 May 2025 15:56:10 -0700 Subject: [PATCH] Simplify cases and default to All --- filament/backend/src/webgpu/WebGPUHandles.cpp | 153 ++++-------------- 1 file changed, 29 insertions(+), 124 deletions(-) diff --git a/filament/backend/src/webgpu/WebGPUHandles.cpp b/filament/backend/src/webgpu/WebGPUHandles.cpp index 2785c348b1..3f197ba00a 100644 --- a/filament/backend/src/webgpu/WebGPUHandles.cpp +++ b/filament/backend/src/webgpu/WebGPUHandles.cpp @@ -856,134 +856,39 @@ wgpu::TextureFormat WGPUTexture::fToWGPUTextureFormat(const TextureFormat& fUsag wgpu::TextureAspect WGPUTexture::inferWGPUTextureViewAspect(const wgpu::TextureFormat& format, const wgpu::TextureUsage& usage) { - switch (format) { - case wgpu::TextureFormat::R8Unorm: - case wgpu::TextureFormat::R8Snorm: - case wgpu::TextureFormat::R8Uint: - case wgpu::TextureFormat::R8Sint: - case wgpu::TextureFormat::R16Float: - case wgpu::TextureFormat::R16Uint: - case wgpu::TextureFormat::R16Sint: - case wgpu::TextureFormat::RG8Unorm: - case wgpu::TextureFormat::RG8Snorm: - case wgpu::TextureFormat::RG8Uint: - case wgpu::TextureFormat::RG8Sint: - case wgpu::TextureFormat::R32Float: - case wgpu::TextureFormat::R32Uint: - case wgpu::TextureFormat::R32Sint: - case wgpu::TextureFormat::RG16Float: - case wgpu::TextureFormat::RG16Uint: - case wgpu::TextureFormat::RG16Sint: - case wgpu::TextureFormat::RGBA8Unorm: - case wgpu::TextureFormat::RGBA8UnormSrgb: - case wgpu::TextureFormat::RGBA8Snorm: - case wgpu::TextureFormat::RGBA8Uint: - case wgpu::TextureFormat::RGBA8Sint: - case wgpu::TextureFormat::RG32Float: - case wgpu::TextureFormat::RG32Uint: - case wgpu::TextureFormat::RG32Sint: - case wgpu::TextureFormat::RGBA16Float: - case wgpu::TextureFormat::RGBA16Uint: - case wgpu::TextureFormat::RGBA16Sint: - case wgpu::TextureFormat::RGBA32Float: - case wgpu::TextureFormat::RGBA32Uint: - case wgpu::TextureFormat::RGBA32Sint: - case wgpu::TextureFormat::EACR11Unorm: - case wgpu::TextureFormat::EACR11Snorm: - case wgpu::TextureFormat::EACRG11Unorm: - case wgpu::TextureFormat::EACRG11Snorm: - case wgpu::TextureFormat::ETC2RGB8Unorm: - case wgpu::TextureFormat::ETC2RGB8UnormSrgb: - case wgpu::TextureFormat::ETC2RGB8A1Unorm: - case wgpu::TextureFormat::ETC2RGB8A1UnormSrgb: - case wgpu::TextureFormat::ETC2RGBA8Unorm: - case wgpu::TextureFormat::ETC2RGBA8UnormSrgb: - case wgpu::TextureFormat::ASTC4x4Unorm: - case wgpu::TextureFormat::ASTC4x4UnormSrgb: - case wgpu::TextureFormat::ASTC5x4Unorm: - case wgpu::TextureFormat::ASTC5x4UnormSrgb: - case wgpu::TextureFormat::ASTC5x5Unorm: - case wgpu::TextureFormat::ASTC5x5UnormSrgb: - case wgpu::TextureFormat::ASTC6x5Unorm: - case wgpu::TextureFormat::ASTC6x5UnormSrgb: - case wgpu::TextureFormat::ASTC6x6Unorm: - case wgpu::TextureFormat::ASTC6x6UnormSrgb: - case wgpu::TextureFormat::ASTC8x5Unorm: - case wgpu::TextureFormat::ASTC8x5UnormSrgb: - case wgpu::TextureFormat::ASTC8x6Unorm: - case wgpu::TextureFormat::ASTC8x6UnormSrgb: - case wgpu::TextureFormat::ASTC8x8Unorm: - case wgpu::TextureFormat::ASTC8x8UnormSrgb: - case wgpu::TextureFormat::ASTC10x5Unorm: - case wgpu::TextureFormat::ASTC10x5UnormSrgb: - case wgpu::TextureFormat::ASTC10x6Unorm: - case wgpu::TextureFormat::ASTC10x6UnormSrgb: - case wgpu::TextureFormat::ASTC10x8Unorm: - case wgpu::TextureFormat::ASTC10x8UnormSrgb: - case wgpu::TextureFormat::ASTC10x10Unorm: - case wgpu::TextureFormat::ASTC10x10UnormSrgb: - case wgpu::TextureFormat::ASTC12x10Unorm: - case wgpu::TextureFormat::ASTC12x10UnormSrgb: - case wgpu::TextureFormat::ASTC12x12Unorm: - case wgpu::TextureFormat::ASTC12x12UnormSrgb: - case wgpu::TextureFormat::BC4RUnorm: - case wgpu::TextureFormat::BC4RSnorm: - case wgpu::TextureFormat::BC5RGUnorm: - case wgpu::TextureFormat::BC5RGSnorm: - case wgpu::TextureFormat::BC6HRGBUfloat: - case wgpu::TextureFormat::BC6HRGBFloat: - case wgpu::TextureFormat::BC7RGBAUnorm: - case wgpu::TextureFormat::BC7RGBAUnormSrgb: - case wgpu::TextureFormat::RGB9E5Ufloat: - case wgpu::TextureFormat::RG11B10Ufloat: - case wgpu::TextureFormat::BC1RGBAUnorm: - case wgpu::TextureFormat::BC1RGBAUnormSrgb: - case wgpu::TextureFormat::BC2RGBAUnorm: - case wgpu::TextureFormat::BC2RGBAUnormSrgb: - case wgpu::TextureFormat::BC3RGBAUnorm: - case wgpu::TextureFormat::BC3RGBAUnormSrgb: - return wgpu::TextureAspect::All; - case wgpu::TextureFormat::Depth32Float: - case wgpu::TextureFormat::Depth24Plus: - case wgpu::TextureFormat::Depth16Unorm: - if (static_cast(usage) & static_cast(wgpu::TextureUsage::RenderAttachment)) { - return wgpu::TextureAspect::DepthOnly; - } else if (static_cast(usage) & static_cast(wgpu::TextureUsage::TextureBinding)) { - return wgpu::TextureAspect::DepthOnly; - } else if (static_cast(usage) & static_cast(wgpu::TextureUsage::StorageBinding)) { - return wgpu::TextureAspect::DepthOnly; - } else if (static_cast(usage) & (static_cast(wgpu::TextureUsage::CopySrc) | static_cast(wgpu::TextureUsage::CopyDst))) { - return wgpu::TextureAspect::All; - } + if (format == wgpu::TextureFormat::Depth32Float || + format == wgpu::TextureFormat::Depth24Plus || + format == wgpu::TextureFormat::Depth16Unorm) { + if (static_cast(usage) & static_cast(wgpu::TextureUsage::RenderAttachment) || + static_cast(usage) & static_cast(wgpu::TextureUsage::TextureBinding) || + static_cast(usage) & static_cast(wgpu::TextureUsage::StorageBinding)) { return wgpu::TextureAspect::DepthOnly; - - case wgpu::TextureFormat::Stencil8: - if (static_cast(usage) & static_cast(wgpu::TextureUsage::RenderAttachment)) { - return wgpu::TextureAspect::StencilOnly; - } else if (static_cast(usage) & static_cast(wgpu::TextureUsage::StorageBinding)) { - return wgpu::TextureAspect::StencilOnly; - } else if (static_cast(usage) & (static_cast(wgpu::TextureUsage::CopySrc) | static_cast(wgpu::TextureUsage::CopyDst))) { - return wgpu::TextureAspect::All; - } - return wgpu::TextureAspect::StencilOnly; - - case wgpu::TextureFormat::Depth24PlusStencil8: - case wgpu::TextureFormat::Depth32FloatStencil8: - if (static_cast(usage) & static_cast(wgpu::TextureUsage::RenderAttachment)) { - return wgpu::TextureAspect::All; - } else if (static_cast(usage) & static_cast(wgpu::TextureUsage::TextureBinding)) { - return wgpu::TextureAspect::DepthOnly; - } else if (static_cast(usage) & static_cast(wgpu::TextureUsage::StorageBinding)) { - return wgpu::TextureAspect::All; - } else if (static_cast(usage) & (static_cast(wgpu::TextureUsage::CopySrc) | static_cast(wgpu::TextureUsage::CopyDst))) { - return wgpu::TextureAspect::All; - } - return wgpu::TextureAspect::All; - - default: + } else if (static_cast(usage) & (static_cast(wgpu::TextureUsage::CopySrc) | static_cast(wgpu::TextureUsage::CopyDst))) { return wgpu::TextureAspect::All; + } + return wgpu::TextureAspect::DepthOnly; } + + if (format == wgpu::TextureFormat::Stencil8) { + if (static_cast(usage) & static_cast(wgpu::TextureUsage::RenderAttachment) || + static_cast(usage) & static_cast(wgpu::TextureUsage::StorageBinding)) { + return wgpu::TextureAspect::StencilOnly; + } else if (static_cast(usage) & (static_cast(wgpu::TextureUsage::CopySrc) | static_cast(wgpu::TextureUsage::CopyDst))) { + return wgpu::TextureAspect::All; + } + return wgpu::TextureAspect::StencilOnly; + } + + if (format == wgpu::TextureFormat::Depth24PlusStencil8 || + format == wgpu::TextureFormat::Depth32FloatStencil8) { + if (static_cast(usage) & static_cast(wgpu::TextureUsage::TextureBinding)) { + return wgpu::TextureAspect::DepthOnly; + } + return wgpu::TextureAspect::All; + } + + return wgpu::TextureAspect::All; } wgpu::TextureView WGPUTexture::makeTextureView(const uint8_t& baseLevel, const uint8_t& levelCount,