1cb93a386Sopenharmony_ci// Copyright 2020 The Dawn Authors 2cb93a386Sopenharmony_ci// 3cb93a386Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 4cb93a386Sopenharmony_ci// you may not use this file except in compliance with the License. 5cb93a386Sopenharmony_ci// You may obtain a copy of the License at 6cb93a386Sopenharmony_ci// 7cb93a386Sopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 8cb93a386Sopenharmony_ci// 9cb93a386Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software 10cb93a386Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS, 11cb93a386Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12cb93a386Sopenharmony_ci// See the License for the specific language governing permissions and 13cb93a386Sopenharmony_ci// limitations under the License. 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_ci#include "TextureUtils.h" 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_cinamespace utils { 18cb93a386Sopenharmony_ci bool TextureFormatSupportsStorageTexture(wgpu::TextureFormat format) { 19cb93a386Sopenharmony_ci switch (format) { 20cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Uint: 21cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Sint: 22cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Float: 23cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Unorm: 24cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Snorm: 25cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Uint: 26cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Sint: 27cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Uint: 28cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Sint: 29cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Float: 30cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Uint: 31cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Sint: 32cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Float: 33cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Uint: 34cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Sint: 35cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Float: 36cb93a386Sopenharmony_ci return true; 37cb93a386Sopenharmony_ci 38cb93a386Sopenharmony_ci default: 39cb93a386Sopenharmony_ci return false; 40cb93a386Sopenharmony_ci } 41cb93a386Sopenharmony_ci } 42cb93a386Sopenharmony_ci 43cb93a386Sopenharmony_ci bool IsBCTextureFormat(wgpu::TextureFormat textureFormat) { 44cb93a386Sopenharmony_ci switch (textureFormat) { 45cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC1RGBAUnorm: 46cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC1RGBAUnormSrgb: 47cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC4RUnorm: 48cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC4RSnorm: 49cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC2RGBAUnorm: 50cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC2RGBAUnormSrgb: 51cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC3RGBAUnorm: 52cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC3RGBAUnormSrgb: 53cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC5RGUnorm: 54cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC5RGSnorm: 55cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC6HRGBUfloat: 56cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC6HRGBFloat: 57cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC7RGBAUnorm: 58cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC7RGBAUnormSrgb: 59cb93a386Sopenharmony_ci return true; 60cb93a386Sopenharmony_ci 61cb93a386Sopenharmony_ci default: 62cb93a386Sopenharmony_ci return false; 63cb93a386Sopenharmony_ci } 64cb93a386Sopenharmony_ci } 65cb93a386Sopenharmony_ci 66cb93a386Sopenharmony_ci bool IsETC2TextureFormat(wgpu::TextureFormat textureFormat) { 67cb93a386Sopenharmony_ci switch (textureFormat) { 68cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8Unorm: 69cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8UnormSrgb: 70cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8A1Unorm: 71cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8A1UnormSrgb: 72cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACR11Unorm: 73cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACR11Snorm: 74cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGBA8Unorm: 75cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGBA8UnormSrgb: 76cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACRG11Unorm: 77cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACRG11Snorm: 78cb93a386Sopenharmony_ci return true; 79cb93a386Sopenharmony_ci 80cb93a386Sopenharmony_ci default: 81cb93a386Sopenharmony_ci return false; 82cb93a386Sopenharmony_ci } 83cb93a386Sopenharmony_ci } 84cb93a386Sopenharmony_ci 85cb93a386Sopenharmony_ci bool IsASTCTextureFormat(wgpu::TextureFormat textureFormat) { 86cb93a386Sopenharmony_ci switch (textureFormat) { 87cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC4x4Unorm: 88cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC4x4UnormSrgb: 89cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x4Unorm: 90cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x4UnormSrgb: 91cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x5Unorm: 92cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x5UnormSrgb: 93cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x5Unorm: 94cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x5UnormSrgb: 95cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x6Unorm: 96cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x6UnormSrgb: 97cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x5Unorm: 98cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x5UnormSrgb: 99cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x6Unorm: 100cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x6UnormSrgb: 101cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x8Unorm: 102cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x8UnormSrgb: 103cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x5Unorm: 104cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x5UnormSrgb: 105cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x6Unorm: 106cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x6UnormSrgb: 107cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x8Unorm: 108cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x8UnormSrgb: 109cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x10Unorm: 110cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x10UnormSrgb: 111cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x10Unorm: 112cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x10UnormSrgb: 113cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x12Unorm: 114cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x12UnormSrgb: 115cb93a386Sopenharmony_ci return true; 116cb93a386Sopenharmony_ci 117cb93a386Sopenharmony_ci default: 118cb93a386Sopenharmony_ci return false; 119cb93a386Sopenharmony_ci } 120cb93a386Sopenharmony_ci } 121cb93a386Sopenharmony_ci 122cb93a386Sopenharmony_ci bool IsDepthOnlyFormat(wgpu::TextureFormat textureFormat) { 123cb93a386Sopenharmony_ci switch (textureFormat) { 124cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth16Unorm: 125cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth24Plus: 126cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth32Float: 127cb93a386Sopenharmony_ci return true; 128cb93a386Sopenharmony_ci default: 129cb93a386Sopenharmony_ci return false; 130cb93a386Sopenharmony_ci } 131cb93a386Sopenharmony_ci } 132cb93a386Sopenharmony_ci 133cb93a386Sopenharmony_ci uint32_t GetTexelBlockSizeInBytes(wgpu::TextureFormat textureFormat) { 134cb93a386Sopenharmony_ci switch (textureFormat) { 135cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Unorm: 136cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Snorm: 137cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Uint: 138cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Sint: 139cb93a386Sopenharmony_ci return 1u; 140cb93a386Sopenharmony_ci 141cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Uint: 142cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Sint: 143cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Float: 144cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Unorm: 145cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Snorm: 146cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Uint: 147cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Sint: 148cb93a386Sopenharmony_ci return 2u; 149cb93a386Sopenharmony_ci 150cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Float: 151cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Uint: 152cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Sint: 153cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Uint: 154cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Sint: 155cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Float: 156cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Unorm: 157cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8UnormSrgb: 158cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Snorm: 159cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Uint: 160cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Sint: 161cb93a386Sopenharmony_ci case wgpu::TextureFormat::BGRA8Unorm: 162cb93a386Sopenharmony_ci case wgpu::TextureFormat::BGRA8UnormSrgb: 163cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGB10A2Unorm: 164cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG11B10Ufloat: 165cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGB9E5Ufloat: 166cb93a386Sopenharmony_ci return 4u; 167cb93a386Sopenharmony_ci 168cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Float: 169cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Uint: 170cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Sint: 171cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Uint: 172cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Sint: 173cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Float: 174cb93a386Sopenharmony_ci return 8u; 175cb93a386Sopenharmony_ci 176cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Float: 177cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Uint: 178cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Sint: 179cb93a386Sopenharmony_ci return 16u; 180cb93a386Sopenharmony_ci 181cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth16Unorm: 182cb93a386Sopenharmony_ci return 2u; 183cb93a386Sopenharmony_ci 184cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth24Plus: 185cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth24UnormStencil8: 186cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth32Float: 187cb93a386Sopenharmony_ci return 4u; 188cb93a386Sopenharmony_ci 189cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC1RGBAUnorm: 190cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC1RGBAUnormSrgb: 191cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC4RUnorm: 192cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC4RSnorm: 193cb93a386Sopenharmony_ci return 8u; 194cb93a386Sopenharmony_ci 195cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC2RGBAUnorm: 196cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC2RGBAUnormSrgb: 197cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC3RGBAUnorm: 198cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC3RGBAUnormSrgb: 199cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC5RGUnorm: 200cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC5RGSnorm: 201cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC6HRGBUfloat: 202cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC6HRGBFloat: 203cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC7RGBAUnorm: 204cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC7RGBAUnormSrgb: 205cb93a386Sopenharmony_ci return 16u; 206cb93a386Sopenharmony_ci 207cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8Unorm: 208cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8UnormSrgb: 209cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8A1Unorm: 210cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8A1UnormSrgb: 211cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACR11Unorm: 212cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACR11Snorm: 213cb93a386Sopenharmony_ci return 8u; 214cb93a386Sopenharmony_ci 215cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGBA8Unorm: 216cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGBA8UnormSrgb: 217cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACRG11Unorm: 218cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACRG11Snorm: 219cb93a386Sopenharmony_ci return 16u; 220cb93a386Sopenharmony_ci 221cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC4x4Unorm: 222cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC4x4UnormSrgb: 223cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x4Unorm: 224cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x4UnormSrgb: 225cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x5Unorm: 226cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x5UnormSrgb: 227cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x5Unorm: 228cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x5UnormSrgb: 229cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x6Unorm: 230cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x6UnormSrgb: 231cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x5Unorm: 232cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x5UnormSrgb: 233cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x6Unorm: 234cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x6UnormSrgb: 235cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x8Unorm: 236cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x8UnormSrgb: 237cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x5Unorm: 238cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x5UnormSrgb: 239cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x6Unorm: 240cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x6UnormSrgb: 241cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x8Unorm: 242cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x8UnormSrgb: 243cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x10Unorm: 244cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x10UnormSrgb: 245cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x10Unorm: 246cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x10UnormSrgb: 247cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x12Unorm: 248cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x12UnormSrgb: 249cb93a386Sopenharmony_ci return 16u; 250cb93a386Sopenharmony_ci 251cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth24PlusStencil8: 252cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth32FloatStencil8: 253cb93a386Sopenharmony_ci 254cb93a386Sopenharmony_ci // Block size of a multi-planar format depends on aspect. 255cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8BG8Biplanar420Unorm: 256cb93a386Sopenharmony_ci 257cb93a386Sopenharmony_ci // TODO(dawn:666): implement stencil8 258cb93a386Sopenharmony_ci case wgpu::TextureFormat::Stencil8: 259cb93a386Sopenharmony_ci case wgpu::TextureFormat::Undefined: 260cb93a386Sopenharmony_ci break; 261cb93a386Sopenharmony_ci } 262cb93a386Sopenharmony_ci UNREACHABLE(); 263cb93a386Sopenharmony_ci } 264cb93a386Sopenharmony_ci 265cb93a386Sopenharmony_ci uint32_t GetTextureFormatBlockWidth(wgpu::TextureFormat textureFormat) { 266cb93a386Sopenharmony_ci switch (textureFormat) { 267cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Unorm: 268cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Snorm: 269cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Uint: 270cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Sint: 271cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Uint: 272cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Sint: 273cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Float: 274cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Unorm: 275cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Snorm: 276cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Uint: 277cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Sint: 278cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Float: 279cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Uint: 280cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Sint: 281cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Uint: 282cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Sint: 283cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Float: 284cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Unorm: 285cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8UnormSrgb: 286cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Snorm: 287cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Uint: 288cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Sint: 289cb93a386Sopenharmony_ci case wgpu::TextureFormat::BGRA8Unorm: 290cb93a386Sopenharmony_ci case wgpu::TextureFormat::BGRA8UnormSrgb: 291cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGB10A2Unorm: 292cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG11B10Ufloat: 293cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGB9E5Ufloat: 294cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Float: 295cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Uint: 296cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Sint: 297cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Uint: 298cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Sint: 299cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Float: 300cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Float: 301cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Uint: 302cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Sint: 303cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth32Float: 304cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth24Plus: 305cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth24PlusStencil8: 306cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth16Unorm: 307cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth24UnormStencil8: 308cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth32FloatStencil8: 309cb93a386Sopenharmony_ci return 1u; 310cb93a386Sopenharmony_ci 311cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC1RGBAUnorm: 312cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC1RGBAUnormSrgb: 313cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC4RUnorm: 314cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC4RSnorm: 315cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC2RGBAUnorm: 316cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC2RGBAUnormSrgb: 317cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC3RGBAUnorm: 318cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC3RGBAUnormSrgb: 319cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC5RGUnorm: 320cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC5RGSnorm: 321cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC6HRGBUfloat: 322cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC6HRGBFloat: 323cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC7RGBAUnorm: 324cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC7RGBAUnormSrgb: 325cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8Unorm: 326cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8UnormSrgb: 327cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8A1Unorm: 328cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8A1UnormSrgb: 329cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGBA8Unorm: 330cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGBA8UnormSrgb: 331cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACR11Unorm: 332cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACR11Snorm: 333cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACRG11Unorm: 334cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACRG11Snorm: 335cb93a386Sopenharmony_ci return 4u; 336cb93a386Sopenharmony_ci 337cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC4x4Unorm: 338cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC4x4UnormSrgb: 339cb93a386Sopenharmony_ci return 4u; 340cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x4Unorm: 341cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x4UnormSrgb: 342cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x5Unorm: 343cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x5UnormSrgb: 344cb93a386Sopenharmony_ci return 5u; 345cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x5Unorm: 346cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x5UnormSrgb: 347cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x6Unorm: 348cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x6UnormSrgb: 349cb93a386Sopenharmony_ci return 6u; 350cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x5Unorm: 351cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x5UnormSrgb: 352cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x6Unorm: 353cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x6UnormSrgb: 354cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x8Unorm: 355cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x8UnormSrgb: 356cb93a386Sopenharmony_ci return 8u; 357cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x5Unorm: 358cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x5UnormSrgb: 359cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x6Unorm: 360cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x6UnormSrgb: 361cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x8Unorm: 362cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x8UnormSrgb: 363cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x10Unorm: 364cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x10UnormSrgb: 365cb93a386Sopenharmony_ci return 10u; 366cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x10Unorm: 367cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x10UnormSrgb: 368cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x12Unorm: 369cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x12UnormSrgb: 370cb93a386Sopenharmony_ci return 12u; 371cb93a386Sopenharmony_ci 372cb93a386Sopenharmony_ci // Block size of a multi-planar format depends on aspect. 373cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8BG8Biplanar420Unorm: 374cb93a386Sopenharmony_ci 375cb93a386Sopenharmony_ci // TODO(dawn:666): implement stencil8 376cb93a386Sopenharmony_ci case wgpu::TextureFormat::Stencil8: 377cb93a386Sopenharmony_ci case wgpu::TextureFormat::Undefined: 378cb93a386Sopenharmony_ci break; 379cb93a386Sopenharmony_ci } 380cb93a386Sopenharmony_ci UNREACHABLE(); 381cb93a386Sopenharmony_ci } 382cb93a386Sopenharmony_ci 383cb93a386Sopenharmony_ci uint32_t GetTextureFormatBlockHeight(wgpu::TextureFormat textureFormat) { 384cb93a386Sopenharmony_ci switch (textureFormat) { 385cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Unorm: 386cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Snorm: 387cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Uint: 388cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Sint: 389cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Uint: 390cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Sint: 391cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Float: 392cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Unorm: 393cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Snorm: 394cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Uint: 395cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Sint: 396cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Float: 397cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Uint: 398cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Sint: 399cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Uint: 400cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Sint: 401cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Float: 402cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Unorm: 403cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8UnormSrgb: 404cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Snorm: 405cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Uint: 406cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Sint: 407cb93a386Sopenharmony_ci case wgpu::TextureFormat::BGRA8Unorm: 408cb93a386Sopenharmony_ci case wgpu::TextureFormat::BGRA8UnormSrgb: 409cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGB10A2Unorm: 410cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG11B10Ufloat: 411cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGB9E5Ufloat: 412cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Float: 413cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Uint: 414cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Sint: 415cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Uint: 416cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Sint: 417cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Float: 418cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Float: 419cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Uint: 420cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Sint: 421cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth32Float: 422cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth24Plus: 423cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth24PlusStencil8: 424cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth16Unorm: 425cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth24UnormStencil8: 426cb93a386Sopenharmony_ci case wgpu::TextureFormat::Depth32FloatStencil8: 427cb93a386Sopenharmony_ci return 1u; 428cb93a386Sopenharmony_ci 429cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC1RGBAUnorm: 430cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC1RGBAUnormSrgb: 431cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC4RUnorm: 432cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC4RSnorm: 433cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC2RGBAUnorm: 434cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC2RGBAUnormSrgb: 435cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC3RGBAUnorm: 436cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC3RGBAUnormSrgb: 437cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC5RGUnorm: 438cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC5RGSnorm: 439cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC6HRGBUfloat: 440cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC6HRGBFloat: 441cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC7RGBAUnorm: 442cb93a386Sopenharmony_ci case wgpu::TextureFormat::BC7RGBAUnormSrgb: 443cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8Unorm: 444cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8UnormSrgb: 445cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8A1Unorm: 446cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGB8A1UnormSrgb: 447cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGBA8Unorm: 448cb93a386Sopenharmony_ci case wgpu::TextureFormat::ETC2RGBA8UnormSrgb: 449cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACR11Unorm: 450cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACR11Snorm: 451cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACRG11Unorm: 452cb93a386Sopenharmony_ci case wgpu::TextureFormat::EACRG11Snorm: 453cb93a386Sopenharmony_ci return 4u; 454cb93a386Sopenharmony_ci 455cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC4x4Unorm: 456cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC4x4UnormSrgb: 457cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x4Unorm: 458cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x4UnormSrgb: 459cb93a386Sopenharmony_ci return 4u; 460cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x5Unorm: 461cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC5x5UnormSrgb: 462cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x5Unorm: 463cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x5UnormSrgb: 464cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x5Unorm: 465cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x5UnormSrgb: 466cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x5Unorm: 467cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x5UnormSrgb: 468cb93a386Sopenharmony_ci return 5u; 469cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x6Unorm: 470cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC6x6UnormSrgb: 471cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x6Unorm: 472cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x6UnormSrgb: 473cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x6Unorm: 474cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x6UnormSrgb: 475cb93a386Sopenharmony_ci return 6u; 476cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x8Unorm: 477cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC8x8UnormSrgb: 478cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x8Unorm: 479cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x8UnormSrgb: 480cb93a386Sopenharmony_ci return 8u; 481cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x10Unorm: 482cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC10x10UnormSrgb: 483cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x10Unorm: 484cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x10UnormSrgb: 485cb93a386Sopenharmony_ci return 10u; 486cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x12Unorm: 487cb93a386Sopenharmony_ci case wgpu::TextureFormat::ASTC12x12UnormSrgb: 488cb93a386Sopenharmony_ci return 12u; 489cb93a386Sopenharmony_ci 490cb93a386Sopenharmony_ci // Block size of a multi-planar format depends on aspect. 491cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8BG8Biplanar420Unorm: 492cb93a386Sopenharmony_ci 493cb93a386Sopenharmony_ci // TODO(dawn:666): implement stencil8 494cb93a386Sopenharmony_ci case wgpu::TextureFormat::Stencil8: 495cb93a386Sopenharmony_ci case wgpu::TextureFormat::Undefined: 496cb93a386Sopenharmony_ci break; 497cb93a386Sopenharmony_ci } 498cb93a386Sopenharmony_ci UNREACHABLE(); 499cb93a386Sopenharmony_ci } 500cb93a386Sopenharmony_ci 501cb93a386Sopenharmony_ci const char* GetWGSLColorTextureComponentType(wgpu::TextureFormat textureFormat) { 502cb93a386Sopenharmony_ci switch (textureFormat) { 503cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Unorm: 504cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Snorm: 505cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Float: 506cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Unorm: 507cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Snorm: 508cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Float: 509cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Float: 510cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Unorm: 511cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Snorm: 512cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGB10A2Unorm: 513cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG11B10Ufloat: 514cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGB9E5Ufloat: 515cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Float: 516cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Float: 517cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Float: 518cb93a386Sopenharmony_ci case wgpu::TextureFormat::BGRA8Unorm: 519cb93a386Sopenharmony_ci case wgpu::TextureFormat::BGRA8UnormSrgb: 520cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8UnormSrgb: 521cb93a386Sopenharmony_ci return "f32"; 522cb93a386Sopenharmony_ci 523cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Uint: 524cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Uint: 525cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Uint: 526cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Uint: 527cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Uint: 528cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Uint: 529cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Uint: 530cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Uint: 531cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Uint: 532cb93a386Sopenharmony_ci return "u32"; 533cb93a386Sopenharmony_ci 534cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Sint: 535cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Sint: 536cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Sint: 537cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Sint: 538cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Sint: 539cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Sint: 540cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Sint: 541cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Sint: 542cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Sint: 543cb93a386Sopenharmony_ci return "i32"; 544cb93a386Sopenharmony_ci 545cb93a386Sopenharmony_ci default: 546cb93a386Sopenharmony_ci UNREACHABLE(); 547cb93a386Sopenharmony_ci } 548cb93a386Sopenharmony_ci } 549cb93a386Sopenharmony_ci 550cb93a386Sopenharmony_ci uint32_t GetWGSLRenderableColorTextureComponentCount(wgpu::TextureFormat textureFormat) { 551cb93a386Sopenharmony_ci switch (textureFormat) { 552cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Unorm: 553cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Uint: 554cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Sint: 555cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Uint: 556cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Sint: 557cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Float: 558cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Float: 559cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Uint: 560cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Sint: 561cb93a386Sopenharmony_ci return 1u; 562cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Unorm: 563cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Uint: 564cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Sint: 565cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Uint: 566cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Sint: 567cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Float: 568cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Float: 569cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Uint: 570cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Sint: 571cb93a386Sopenharmony_ci return 2u; 572cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Unorm: 573cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8UnormSrgb: 574cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Uint: 575cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Sint: 576cb93a386Sopenharmony_ci case wgpu::TextureFormat::BGRA8Unorm: 577cb93a386Sopenharmony_ci case wgpu::TextureFormat::BGRA8UnormSrgb: 578cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGB10A2Unorm: 579cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Uint: 580cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Sint: 581cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Float: 582cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Float: 583cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Uint: 584cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Sint: 585cb93a386Sopenharmony_ci return 4u; 586cb93a386Sopenharmony_ci default: 587cb93a386Sopenharmony_ci UNREACHABLE(); 588cb93a386Sopenharmony_ci } 589cb93a386Sopenharmony_ci } 590cb93a386Sopenharmony_ci 591cb93a386Sopenharmony_ci const char* GetWGSLImageFormatQualifier(wgpu::TextureFormat textureFormat) { 592cb93a386Sopenharmony_ci switch (textureFormat) { 593cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Unorm: 594cb93a386Sopenharmony_ci return "rgba8unorm"; 595cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Snorm: 596cb93a386Sopenharmony_ci return "rgba8snorm"; 597cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Uint: 598cb93a386Sopenharmony_ci return "rgba8uint"; 599cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA8Sint: 600cb93a386Sopenharmony_ci return "rgba8sint"; 601cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Uint: 602cb93a386Sopenharmony_ci return "rgba16uint"; 603cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Sint: 604cb93a386Sopenharmony_ci return "rgba16sint"; 605cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA16Float: 606cb93a386Sopenharmony_ci return "rgba16float"; 607cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Uint: 608cb93a386Sopenharmony_ci return "r32uint"; 609cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Sint: 610cb93a386Sopenharmony_ci return "r32sint"; 611cb93a386Sopenharmony_ci case wgpu::TextureFormat::R32Float: 612cb93a386Sopenharmony_ci return "r32float"; 613cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Uint: 614cb93a386Sopenharmony_ci return "rg32uint"; 615cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Sint: 616cb93a386Sopenharmony_ci return "rg32sint"; 617cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG32Float: 618cb93a386Sopenharmony_ci return "rg32float"; 619cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Uint: 620cb93a386Sopenharmony_ci return "rgba32uint"; 621cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Sint: 622cb93a386Sopenharmony_ci return "rgba32sint"; 623cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGBA32Float: 624cb93a386Sopenharmony_ci return "rgba32float"; 625cb93a386Sopenharmony_ci 626cb93a386Sopenharmony_ci // The below do not currently exist in the WGSL spec, but are used 627cb93a386Sopenharmony_ci // for tests that expect compilation failure. 628cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Unorm: 629cb93a386Sopenharmony_ci return "r8unorm"; 630cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Snorm: 631cb93a386Sopenharmony_ci return "r8snorm"; 632cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Uint: 633cb93a386Sopenharmony_ci return "r8uint"; 634cb93a386Sopenharmony_ci case wgpu::TextureFormat::R8Sint: 635cb93a386Sopenharmony_ci return "r8sint"; 636cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Uint: 637cb93a386Sopenharmony_ci return "r16uint"; 638cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Sint: 639cb93a386Sopenharmony_ci return "r16sint"; 640cb93a386Sopenharmony_ci case wgpu::TextureFormat::R16Float: 641cb93a386Sopenharmony_ci return "r16float"; 642cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Unorm: 643cb93a386Sopenharmony_ci return "rg8unorm"; 644cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Snorm: 645cb93a386Sopenharmony_ci return "rg8snorm"; 646cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Uint: 647cb93a386Sopenharmony_ci return "rg8uint"; 648cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG8Sint: 649cb93a386Sopenharmony_ci return "rg8sint"; 650cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Uint: 651cb93a386Sopenharmony_ci return "rg16uint"; 652cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Sint: 653cb93a386Sopenharmony_ci return "rg16sint"; 654cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG16Float: 655cb93a386Sopenharmony_ci return "rg16float"; 656cb93a386Sopenharmony_ci case wgpu::TextureFormat::RGB10A2Unorm: 657cb93a386Sopenharmony_ci return "rgb10a2unorm"; 658cb93a386Sopenharmony_ci case wgpu::TextureFormat::RG11B10Ufloat: 659cb93a386Sopenharmony_ci return "rg11b10ufloat"; 660cb93a386Sopenharmony_ci 661cb93a386Sopenharmony_ci default: 662cb93a386Sopenharmony_ci UNREACHABLE(); 663cb93a386Sopenharmony_ci } 664cb93a386Sopenharmony_ci } 665cb93a386Sopenharmony_ci 666cb93a386Sopenharmony_ci wgpu::TextureDimension ViewDimensionToTextureDimension( 667cb93a386Sopenharmony_ci const wgpu::TextureViewDimension dimension) { 668cb93a386Sopenharmony_ci switch (dimension) { 669cb93a386Sopenharmony_ci case wgpu::TextureViewDimension::e2D: 670cb93a386Sopenharmony_ci case wgpu::TextureViewDimension::e2DArray: 671cb93a386Sopenharmony_ci case wgpu::TextureViewDimension::Cube: 672cb93a386Sopenharmony_ci case wgpu::TextureViewDimension::CubeArray: 673cb93a386Sopenharmony_ci return wgpu::TextureDimension::e2D; 674cb93a386Sopenharmony_ci case wgpu::TextureViewDimension::e3D: 675cb93a386Sopenharmony_ci return wgpu::TextureDimension::e3D; 676cb93a386Sopenharmony_ci // TODO(crbug.com/dawn/814): Implement for 1D texture. 677cb93a386Sopenharmony_ci case wgpu::TextureViewDimension::e1D: 678cb93a386Sopenharmony_ci default: 679cb93a386Sopenharmony_ci UNREACHABLE(); 680cb93a386Sopenharmony_ci break; 681cb93a386Sopenharmony_ci } 682cb93a386Sopenharmony_ci } 683cb93a386Sopenharmony_ci 684cb93a386Sopenharmony_ci} // namespace utils 685