1 /**************************************************************************** 2 * Copyright (C) 2016 Intel Corporation. All Rights Reserved. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the 9 * Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice (including the next 12 * paragraph) shall be included in all copies or substantial portions of the 13 * Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21 * IN THE SOFTWARE. 22 * 23 * @file format_traits.h 24 * 25 * @brief Format Traits. auto-generated file 26 * 27 * DO NOT EDIT 28 * 29 ******************************************************************************/ 30 #pragma once 31 32 #include "format_types.h" 33 #include "format_utils.h" 34 35 ////////////////////////////////////////////////////////////////////////// 36 /// FormatSwizzle - Component swizzle selects 37 ////////////////////////////////////////////////////////////////////////// 38 template<uint32_t comp0 = 0, uint32_t comp1 = 0, uint32_t comp2 = 0, uint32_t comp3 = 0> 39 struct FormatSwizzle 40 { 41 // Return swizzle select for component. 42 INLINE static uint32_t swizzle(uint32_t c) 43 { 44 static const uint32_t s[4] = { comp0, comp1, comp2, comp3 }; 45 return s[c]; 46 } 47 }; 48 49 ////////////////////////////////////////////////////////////////////////// 50 /// FormatTraits - Format traits 51 ////////////////////////////////////////////////////////////////////////// 52 template<SWR_FORMAT format> 53 struct FormatTraits : 54 ComponentTraits<SWR_TYPE_UNKNOWN, 0>, 55 FormatSwizzle<0>, 56 Defaults<0, 0, 0, 0> 57 { 58 static const uint32_t bpp{ 0 }; 59 static const uint32_t numComps{ 0 }; 60 static const bool hasAlpha{ false }; 61 static const uint32_t alphaComp{ 0 }; 62 63 static const bool isSRGB{ false }; 64 static const bool isBC{ false }; 65 static const bool isSubsampled{ false }; 66 static const uint32_t bcWidth{ 1 }; 67 static const uint32_t bcHeight{ 1 }; 68 }; 69 70 ////////////////////////////////////////////////////////////////////////// 71 /// FormatTraits<R32G32B32A32_FLOAT> - Format traits specialization for R32G32B32A32_FLOAT 72 ////////////////////////////////////////////////////////////////////////// 73 template<> struct FormatTraits<R32G32B32A32_FLOAT> : 74 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>, 75 FormatSwizzle<0, 1, 2, 3>, 76 Defaults<0, 0, 0, 0x3f800000> 77 { 78 static const uint32_t bpp{ 128 }; 79 static const uint32_t numComps{ 4 }; 80 static const bool hasAlpha{ true }; 81 static const uint32_t alphaComp{ 3 }; 82 static const bool isSRGB{ false }; 83 static const bool isBC{ false }; 84 static const bool isSubsampled{ false }; 85 static const uint32_t bcWidth{ 1 }; 86 static const uint32_t bcHeight{ 1 }; 87 88 typedef Transpose32_32_32_32 TransposeT; 89 typedef Format4<32, 32, 32, 32> FormatT; 90 }; 91 92 ////////////////////////////////////////////////////////////////////////// 93 /// FormatTraits<R32G32B32A32_SINT> - Format traits specialization for R32G32B32A32_SINT 94 ////////////////////////////////////////////////////////////////////////// 95 template<> struct FormatTraits<R32G32B32A32_SINT> : 96 ComponentTraits<SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32>, 97 FormatSwizzle<0, 1, 2, 3>, 98 Defaults<0, 0, 0, 0x1> 99 { 100 static const uint32_t bpp{ 128 }; 101 static const uint32_t numComps{ 4 }; 102 static const bool hasAlpha{ true }; 103 static const uint32_t alphaComp{ 3 }; 104 static const bool isSRGB{ false }; 105 static const bool isBC{ false }; 106 static const bool isSubsampled{ false }; 107 static const uint32_t bcWidth{ 1 }; 108 static const uint32_t bcHeight{ 1 }; 109 110 typedef Transpose32_32_32_32 TransposeT; 111 typedef Format4<32, 32, 32, 32> FormatT; 112 }; 113 114 ////////////////////////////////////////////////////////////////////////// 115 /// FormatTraits<R32G32B32A32_UINT> - Format traits specialization for R32G32B32A32_UINT 116 ////////////////////////////////////////////////////////////////////////// 117 template<> struct FormatTraits<R32G32B32A32_UINT> : 118 ComponentTraits<SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32>, 119 FormatSwizzle<0, 1, 2, 3>, 120 Defaults<0, 0, 0, 0x1> 121 { 122 static const uint32_t bpp{ 128 }; 123 static const uint32_t numComps{ 4 }; 124 static const bool hasAlpha{ true }; 125 static const uint32_t alphaComp{ 3 }; 126 static const bool isSRGB{ false }; 127 static const bool isBC{ false }; 128 static const bool isSubsampled{ false }; 129 static const uint32_t bcWidth{ 1 }; 130 static const uint32_t bcHeight{ 1 }; 131 132 typedef Transpose32_32_32_32 TransposeT; 133 typedef Format4<32, 32, 32, 32> FormatT; 134 }; 135 136 ////////////////////////////////////////////////////////////////////////// 137 /// FormatTraits<R64G64_FLOAT> - Format traits specialization for R64G64_FLOAT 138 ////////////////////////////////////////////////////////////////////////// 139 template<> struct FormatTraits<R64G64_FLOAT> : 140 ComponentTraits<SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64>, 141 FormatSwizzle<0, 1>, 142 Defaults<0, 0, 0, 0x3f800000> 143 { 144 static const uint32_t bpp{ 128 }; 145 static const uint32_t numComps{ 2 }; 146 static const bool hasAlpha{ false }; 147 static const uint32_t alphaComp{ 0 }; 148 static const bool isSRGB{ false }; 149 static const bool isBC{ false }; 150 static const bool isSubsampled{ false }; 151 static const uint32_t bcWidth{ 1 }; 152 static const uint32_t bcHeight{ 1 }; 153 154 typedef Transpose64_64 TransposeT; 155 typedef Format2<64, 64> FormatT; 156 }; 157 158 ////////////////////////////////////////////////////////////////////////// 159 /// FormatTraits<R32G32B32X32_FLOAT> - Format traits specialization for R32G32B32X32_FLOAT 160 ////////////////////////////////////////////////////////////////////////// 161 template<> struct FormatTraits<R32G32B32X32_FLOAT> : 162 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_UNUSED, 32>, 163 FormatSwizzle<0, 1, 2, 3>, 164 Defaults<0, 0, 0, 0x3f800000> 165 { 166 static const uint32_t bpp{ 128 }; 167 static const uint32_t numComps{ 3 }; 168 static const bool hasAlpha{ false }; 169 static const uint32_t alphaComp{ 0 }; 170 static const bool isSRGB{ false }; 171 static const bool isBC{ false }; 172 static const bool isSubsampled{ false }; 173 static const uint32_t bcWidth{ 1 }; 174 static const uint32_t bcHeight{ 1 }; 175 176 typedef Transpose32_32_32_32 TransposeT; 177 typedef Format4<32, 32, 32, 32> FormatT; 178 }; 179 180 ////////////////////////////////////////////////////////////////////////// 181 /// FormatTraits<R32G32B32A32_SSCALED> - Format traits specialization for R32G32B32A32_SSCALED 182 ////////////////////////////////////////////////////////////////////////// 183 template<> struct FormatTraits<R32G32B32A32_SSCALED> : 184 ComponentTraits<SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32>, 185 FormatSwizzle<0, 1, 2, 3>, 186 Defaults<0, 0, 0, 0x3f800000> 187 { 188 static const uint32_t bpp{ 128 }; 189 static const uint32_t numComps{ 4 }; 190 static const bool hasAlpha{ true }; 191 static const uint32_t alphaComp{ 3 }; 192 static const bool isSRGB{ false }; 193 static const bool isBC{ false }; 194 static const bool isSubsampled{ false }; 195 static const uint32_t bcWidth{ 1 }; 196 static const uint32_t bcHeight{ 1 }; 197 198 typedef Transpose32_32_32_32 TransposeT; 199 typedef Format4<32, 32, 32, 32> FormatT; 200 }; 201 202 ////////////////////////////////////////////////////////////////////////// 203 /// FormatTraits<R32G32B32A32_USCALED> - Format traits specialization for R32G32B32A32_USCALED 204 ////////////////////////////////////////////////////////////////////////// 205 template<> struct FormatTraits<R32G32B32A32_USCALED> : 206 ComponentTraits<SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32>, 207 FormatSwizzle<0, 1, 2, 3>, 208 Defaults<0, 0, 0, 0x3f800000> 209 { 210 static const uint32_t bpp{ 128 }; 211 static const uint32_t numComps{ 4 }; 212 static const bool hasAlpha{ true }; 213 static const uint32_t alphaComp{ 3 }; 214 static const bool isSRGB{ false }; 215 static const bool isBC{ false }; 216 static const bool isSubsampled{ false }; 217 static const uint32_t bcWidth{ 1 }; 218 static const uint32_t bcHeight{ 1 }; 219 220 typedef Transpose32_32_32_32 TransposeT; 221 typedef Format4<32, 32, 32, 32> FormatT; 222 }; 223 224 ////////////////////////////////////////////////////////////////////////// 225 /// FormatTraits<R32G32B32A32_SFIXED> - Format traits specialization for R32G32B32A32_SFIXED 226 ////////////////////////////////////////////////////////////////////////// 227 template<> struct FormatTraits<R32G32B32A32_SFIXED> : 228 ComponentTraits<SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32>, 229 FormatSwizzle<0, 1, 2, 3>, 230 Defaults<0, 0, 0, 0x3f800000> 231 { 232 static const uint32_t bpp{ 128 }; 233 static const uint32_t numComps{ 4 }; 234 static const bool hasAlpha{ true }; 235 static const uint32_t alphaComp{ 3 }; 236 static const bool isSRGB{ false }; 237 static const bool isBC{ false }; 238 static const bool isSubsampled{ false }; 239 static const uint32_t bcWidth{ 1 }; 240 static const uint32_t bcHeight{ 1 }; 241 242 typedef Transpose32_32_32_32 TransposeT; 243 typedef Format4<32, 32, 32, 32> FormatT; 244 }; 245 246 ////////////////////////////////////////////////////////////////////////// 247 /// FormatTraits<R32G32B32_FLOAT> - Format traits specialization for R32G32B32_FLOAT 248 ////////////////////////////////////////////////////////////////////////// 249 template<> struct FormatTraits<R32G32B32_FLOAT> : 250 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>, 251 FormatSwizzle<0, 1, 2>, 252 Defaults<0, 0, 0, 0x3f800000> 253 { 254 static const uint32_t bpp{ 96 }; 255 static const uint32_t numComps{ 3 }; 256 static const bool hasAlpha{ false }; 257 static const uint32_t alphaComp{ 0 }; 258 static const bool isSRGB{ false }; 259 static const bool isBC{ false }; 260 static const bool isSubsampled{ false }; 261 static const uint32_t bcWidth{ 1 }; 262 static const uint32_t bcHeight{ 1 }; 263 264 typedef Transpose32_32_32 TransposeT; 265 typedef Format3<32, 32, 32> FormatT; 266 }; 267 268 ////////////////////////////////////////////////////////////////////////// 269 /// FormatTraits<R32G32B32_SINT> - Format traits specialization for R32G32B32_SINT 270 ////////////////////////////////////////////////////////////////////////// 271 template<> struct FormatTraits<R32G32B32_SINT> : 272 ComponentTraits<SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32>, 273 FormatSwizzle<0, 1, 2>, 274 Defaults<0, 0, 0, 0x1> 275 { 276 static const uint32_t bpp{ 96 }; 277 static const uint32_t numComps{ 3 }; 278 static const bool hasAlpha{ false }; 279 static const uint32_t alphaComp{ 0 }; 280 static const bool isSRGB{ false }; 281 static const bool isBC{ false }; 282 static const bool isSubsampled{ false }; 283 static const uint32_t bcWidth{ 1 }; 284 static const uint32_t bcHeight{ 1 }; 285 286 typedef Transpose32_32_32 TransposeT; 287 typedef Format3<32, 32, 32> FormatT; 288 }; 289 290 ////////////////////////////////////////////////////////////////////////// 291 /// FormatTraits<R32G32B32_UINT> - Format traits specialization for R32G32B32_UINT 292 ////////////////////////////////////////////////////////////////////////// 293 template<> struct FormatTraits<R32G32B32_UINT> : 294 ComponentTraits<SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32>, 295 FormatSwizzle<0, 1, 2>, 296 Defaults<0, 0, 0, 0x1> 297 { 298 static const uint32_t bpp{ 96 }; 299 static const uint32_t numComps{ 3 }; 300 static const bool hasAlpha{ false }; 301 static const uint32_t alphaComp{ 0 }; 302 static const bool isSRGB{ false }; 303 static const bool isBC{ false }; 304 static const bool isSubsampled{ false }; 305 static const uint32_t bcWidth{ 1 }; 306 static const uint32_t bcHeight{ 1 }; 307 308 typedef Transpose32_32_32 TransposeT; 309 typedef Format3<32, 32, 32> FormatT; 310 }; 311 312 ////////////////////////////////////////////////////////////////////////// 313 /// FormatTraits<R32G32B32_SSCALED> - Format traits specialization for R32G32B32_SSCALED 314 ////////////////////////////////////////////////////////////////////////// 315 template<> struct FormatTraits<R32G32B32_SSCALED> : 316 ComponentTraits<SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32>, 317 FormatSwizzle<0, 1, 2>, 318 Defaults<0, 0, 0, 0x3f800000> 319 { 320 static const uint32_t bpp{ 96 }; 321 static const uint32_t numComps{ 3 }; 322 static const bool hasAlpha{ false }; 323 static const uint32_t alphaComp{ 0 }; 324 static const bool isSRGB{ false }; 325 static const bool isBC{ false }; 326 static const bool isSubsampled{ false }; 327 static const uint32_t bcWidth{ 1 }; 328 static const uint32_t bcHeight{ 1 }; 329 330 typedef Transpose32_32_32 TransposeT; 331 typedef Format3<32, 32, 32> FormatT; 332 }; 333 334 ////////////////////////////////////////////////////////////////////////// 335 /// FormatTraits<R32G32B32_USCALED> - Format traits specialization for R32G32B32_USCALED 336 ////////////////////////////////////////////////////////////////////////// 337 template<> struct FormatTraits<R32G32B32_USCALED> : 338 ComponentTraits<SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32>, 339 FormatSwizzle<0, 1, 2>, 340 Defaults<0, 0, 0, 0x3f800000> 341 { 342 static const uint32_t bpp{ 96 }; 343 static const uint32_t numComps{ 3 }; 344 static const bool hasAlpha{ false }; 345 static const uint32_t alphaComp{ 0 }; 346 static const bool isSRGB{ false }; 347 static const bool isBC{ false }; 348 static const bool isSubsampled{ false }; 349 static const uint32_t bcWidth{ 1 }; 350 static const uint32_t bcHeight{ 1 }; 351 352 typedef Transpose32_32_32 TransposeT; 353 typedef Format3<32, 32, 32> FormatT; 354 }; 355 356 ////////////////////////////////////////////////////////////////////////// 357 /// FormatTraits<R32G32B32_SFIXED> - Format traits specialization for R32G32B32_SFIXED 358 ////////////////////////////////////////////////////////////////////////// 359 template<> struct FormatTraits<R32G32B32_SFIXED> : 360 ComponentTraits<SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32>, 361 FormatSwizzle<0, 1, 2>, 362 Defaults<0, 0, 0, 0x3f800000> 363 { 364 static const uint32_t bpp{ 96 }; 365 static const uint32_t numComps{ 3 }; 366 static const bool hasAlpha{ false }; 367 static const uint32_t alphaComp{ 0 }; 368 static const bool isSRGB{ false }; 369 static const bool isBC{ false }; 370 static const bool isSubsampled{ false }; 371 static const uint32_t bcWidth{ 1 }; 372 static const uint32_t bcHeight{ 1 }; 373 374 typedef Transpose32_32_32 TransposeT; 375 typedef Format3<32, 32, 32> FormatT; 376 }; 377 378 ////////////////////////////////////////////////////////////////////////// 379 /// FormatTraits<R16G16B16A16_UNORM> - Format traits specialization for R16G16B16A16_UNORM 380 ////////////////////////////////////////////////////////////////////////// 381 template<> struct FormatTraits<R16G16B16A16_UNORM> : 382 ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16>, 383 FormatSwizzle<0, 1, 2, 3>, 384 Defaults<0, 0, 0, 0x3f800000> 385 { 386 static const uint32_t bpp{ 64 }; 387 static const uint32_t numComps{ 4 }; 388 static const bool hasAlpha{ true }; 389 static const uint32_t alphaComp{ 3 }; 390 static const bool isSRGB{ false }; 391 static const bool isBC{ false }; 392 static const bool isSubsampled{ false }; 393 static const uint32_t bcWidth{ 1 }; 394 static const uint32_t bcHeight{ 1 }; 395 396 typedef Transpose16_16_16_16 TransposeT; 397 typedef Format4<16, 16, 16, 16> FormatT; 398 }; 399 400 ////////////////////////////////////////////////////////////////////////// 401 /// FormatTraits<R16G16B16A16_SNORM> - Format traits specialization for R16G16B16A16_SNORM 402 ////////////////////////////////////////////////////////////////////////// 403 template<> struct FormatTraits<R16G16B16A16_SNORM> : 404 ComponentTraits<SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16>, 405 FormatSwizzle<0, 1, 2, 3>, 406 Defaults<0, 0, 0, 0x3f800000> 407 { 408 static const uint32_t bpp{ 64 }; 409 static const uint32_t numComps{ 4 }; 410 static const bool hasAlpha{ true }; 411 static const uint32_t alphaComp{ 3 }; 412 static const bool isSRGB{ false }; 413 static const bool isBC{ false }; 414 static const bool isSubsampled{ false }; 415 static const uint32_t bcWidth{ 1 }; 416 static const uint32_t bcHeight{ 1 }; 417 418 typedef Transpose16_16_16_16 TransposeT; 419 typedef Format4<16, 16, 16, 16> FormatT; 420 }; 421 422 ////////////////////////////////////////////////////////////////////////// 423 /// FormatTraits<R16G16B16A16_SINT> - Format traits specialization for R16G16B16A16_SINT 424 ////////////////////////////////////////////////////////////////////////// 425 template<> struct FormatTraits<R16G16B16A16_SINT> : 426 ComponentTraits<SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16>, 427 FormatSwizzle<0, 1, 2, 3>, 428 Defaults<0, 0, 0, 0x1> 429 { 430 static const uint32_t bpp{ 64 }; 431 static const uint32_t numComps{ 4 }; 432 static const bool hasAlpha{ true }; 433 static const uint32_t alphaComp{ 3 }; 434 static const bool isSRGB{ false }; 435 static const bool isBC{ false }; 436 static const bool isSubsampled{ false }; 437 static const uint32_t bcWidth{ 1 }; 438 static const uint32_t bcHeight{ 1 }; 439 440 typedef Transpose16_16_16_16 TransposeT; 441 typedef Format4<16, 16, 16, 16> FormatT; 442 }; 443 444 ////////////////////////////////////////////////////////////////////////// 445 /// FormatTraits<R16G16B16A16_UINT> - Format traits specialization for R16G16B16A16_UINT 446 ////////////////////////////////////////////////////////////////////////// 447 template<> struct FormatTraits<R16G16B16A16_UINT> : 448 ComponentTraits<SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16>, 449 FormatSwizzle<0, 1, 2, 3>, 450 Defaults<0, 0, 0, 0x1> 451 { 452 static const uint32_t bpp{ 64 }; 453 static const uint32_t numComps{ 4 }; 454 static const bool hasAlpha{ true }; 455 static const uint32_t alphaComp{ 3 }; 456 static const bool isSRGB{ false }; 457 static const bool isBC{ false }; 458 static const bool isSubsampled{ false }; 459 static const uint32_t bcWidth{ 1 }; 460 static const uint32_t bcHeight{ 1 }; 461 462 typedef Transpose16_16_16_16 TransposeT; 463 typedef Format4<16, 16, 16, 16> FormatT; 464 }; 465 466 ////////////////////////////////////////////////////////////////////////// 467 /// FormatTraits<R16G16B16A16_FLOAT> - Format traits specialization for R16G16B16A16_FLOAT 468 ////////////////////////////////////////////////////////////////////////// 469 template<> struct FormatTraits<R16G16B16A16_FLOAT> : 470 ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16>, 471 FormatSwizzle<0, 1, 2, 3>, 472 Defaults<0, 0, 0, 0x3f800000> 473 { 474 static const uint32_t bpp{ 64 }; 475 static const uint32_t numComps{ 4 }; 476 static const bool hasAlpha{ true }; 477 static const uint32_t alphaComp{ 3 }; 478 static const bool isSRGB{ false }; 479 static const bool isBC{ false }; 480 static const bool isSubsampled{ false }; 481 static const uint32_t bcWidth{ 1 }; 482 static const uint32_t bcHeight{ 1 }; 483 484 typedef Transpose16_16_16_16 TransposeT; 485 typedef Format4<16, 16, 16, 16> FormatT; 486 }; 487 488 ////////////////////////////////////////////////////////////////////////// 489 /// FormatTraits<R32G32_FLOAT> - Format traits specialization for R32G32_FLOAT 490 ////////////////////////////////////////////////////////////////////////// 491 template<> struct FormatTraits<R32G32_FLOAT> : 492 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>, 493 FormatSwizzle<0, 1>, 494 Defaults<0, 0, 0, 0x3f800000> 495 { 496 static const uint32_t bpp{ 64 }; 497 static const uint32_t numComps{ 2 }; 498 static const bool hasAlpha{ false }; 499 static const uint32_t alphaComp{ 0 }; 500 static const bool isSRGB{ false }; 501 static const bool isBC{ false }; 502 static const bool isSubsampled{ false }; 503 static const uint32_t bcWidth{ 1 }; 504 static const uint32_t bcHeight{ 1 }; 505 506 typedef Transpose32_32 TransposeT; 507 typedef Format2<32, 32> FormatT; 508 }; 509 510 ////////////////////////////////////////////////////////////////////////// 511 /// FormatTraits<R32G32_SINT> - Format traits specialization for R32G32_SINT 512 ////////////////////////////////////////////////////////////////////////// 513 template<> struct FormatTraits<R32G32_SINT> : 514 ComponentTraits<SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32>, 515 FormatSwizzle<0, 1>, 516 Defaults<0, 0, 0, 0x1> 517 { 518 static const uint32_t bpp{ 64 }; 519 static const uint32_t numComps{ 2 }; 520 static const bool hasAlpha{ false }; 521 static const uint32_t alphaComp{ 0 }; 522 static const bool isSRGB{ false }; 523 static const bool isBC{ false }; 524 static const bool isSubsampled{ false }; 525 static const uint32_t bcWidth{ 1 }; 526 static const uint32_t bcHeight{ 1 }; 527 528 typedef Transpose32_32 TransposeT; 529 typedef Format2<32, 32> FormatT; 530 }; 531 532 ////////////////////////////////////////////////////////////////////////// 533 /// FormatTraits<R32G32_UINT> - Format traits specialization for R32G32_UINT 534 ////////////////////////////////////////////////////////////////////////// 535 template<> struct FormatTraits<R32G32_UINT> : 536 ComponentTraits<SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32>, 537 FormatSwizzle<0, 1>, 538 Defaults<0, 0, 0, 0x1> 539 { 540 static const uint32_t bpp{ 64 }; 541 static const uint32_t numComps{ 2 }; 542 static const bool hasAlpha{ false }; 543 static const uint32_t alphaComp{ 0 }; 544 static const bool isSRGB{ false }; 545 static const bool isBC{ false }; 546 static const bool isSubsampled{ false }; 547 static const uint32_t bcWidth{ 1 }; 548 static const uint32_t bcHeight{ 1 }; 549 550 typedef Transpose32_32 TransposeT; 551 typedef Format2<32, 32> FormatT; 552 }; 553 554 ////////////////////////////////////////////////////////////////////////// 555 /// FormatTraits<R32_FLOAT_X8X24_TYPELESS> - Format traits specialization for R32_FLOAT_X8X24_TYPELESS 556 ////////////////////////////////////////////////////////////////////////// 557 template<> struct FormatTraits<R32_FLOAT_X8X24_TYPELESS> : 558 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_UNUSED, 32>, 559 FormatSwizzle<0, 1>, 560 Defaults<0, 0, 0, 0x3f800000> 561 { 562 static const uint32_t bpp{ 64 }; 563 static const uint32_t numComps{ 1 }; 564 static const bool hasAlpha{ false }; 565 static const uint32_t alphaComp{ 3 }; 566 static const bool isSRGB{ false }; 567 static const bool isBC{ false }; 568 static const bool isSubsampled{ false }; 569 static const uint32_t bcWidth{ 1 }; 570 static const uint32_t bcHeight{ 1 }; 571 572 typedef Transpose32_32 TransposeT; 573 typedef Format2<32, 32> FormatT; 574 }; 575 576 ////////////////////////////////////////////////////////////////////////// 577 /// FormatTraits<X32_TYPELESS_G8X24_UINT> - Format traits specialization for X32_TYPELESS_G8X24_UINT 578 ////////////////////////////////////////////////////////////////////////// 579 template<> struct FormatTraits<X32_TYPELESS_G8X24_UINT> : 580 ComponentTraits<SWR_TYPE_UINT, 32, SWR_TYPE_UNUSED, 32>, 581 FormatSwizzle<0, 1>, 582 Defaults<0, 0, 0, 0x1> 583 { 584 static const uint32_t bpp{ 64 }; 585 static const uint32_t numComps{ 1 }; 586 static const bool hasAlpha{ false }; 587 static const uint32_t alphaComp{ 3 }; 588 static const bool isSRGB{ false }; 589 static const bool isBC{ false }; 590 static const bool isSubsampled{ false }; 591 static const uint32_t bcWidth{ 1 }; 592 static const uint32_t bcHeight{ 1 }; 593 594 typedef Transpose32_32 TransposeT; 595 typedef Format2<32, 32> FormatT; 596 }; 597 598 ////////////////////////////////////////////////////////////////////////// 599 /// FormatTraits<L32A32_FLOAT> - Format traits specialization for L32A32_FLOAT 600 ////////////////////////////////////////////////////////////////////////// 601 template<> struct FormatTraits<L32A32_FLOAT> : 602 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>, 603 FormatSwizzle<0, 3>, 604 Defaults<0, 0, 0, 0x3f800000> 605 { 606 static const uint32_t bpp{ 64 }; 607 static const uint32_t numComps{ 2 }; 608 static const bool hasAlpha{ true }; 609 static const uint32_t alphaComp{ 1 }; 610 static const bool isSRGB{ false }; 611 static const bool isBC{ false }; 612 static const bool isSubsampled{ false }; 613 static const uint32_t bcWidth{ 1 }; 614 static const uint32_t bcHeight{ 1 }; 615 616 typedef Transpose32_32 TransposeT; 617 typedef Format2<32, 32> FormatT; 618 }; 619 620 ////////////////////////////////////////////////////////////////////////// 621 /// FormatTraits<R64_FLOAT> - Format traits specialization for R64_FLOAT 622 ////////////////////////////////////////////////////////////////////////// 623 template<> struct FormatTraits<R64_FLOAT> : 624 ComponentTraits<SWR_TYPE_FLOAT, 64>, 625 FormatSwizzle<0>, 626 Defaults<0, 0, 0, 0x3f800000> 627 { 628 static const uint32_t bpp{ 64 }; 629 static const uint32_t numComps{ 1 }; 630 static const bool hasAlpha{ false }; 631 static const uint32_t alphaComp{ 0 }; 632 static const bool isSRGB{ false }; 633 static const bool isBC{ false }; 634 static const bool isSubsampled{ false }; 635 static const uint32_t bcWidth{ 1 }; 636 static const uint32_t bcHeight{ 1 }; 637 638 typedef TransposeSingleComponent<64> TransposeT; 639 typedef Format1<64> FormatT; 640 }; 641 642 ////////////////////////////////////////////////////////////////////////// 643 /// FormatTraits<R16G16B16X16_UNORM> - Format traits specialization for R16G16B16X16_UNORM 644 ////////////////////////////////////////////////////////////////////////// 645 template<> struct FormatTraits<R16G16B16X16_UNORM> : 646 ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNUSED, 16>, 647 FormatSwizzle<0, 1, 2, 3>, 648 Defaults<0, 0, 0, 0x3f800000> 649 { 650 static const uint32_t bpp{ 64 }; 651 static const uint32_t numComps{ 3 }; 652 static const bool hasAlpha{ false }; 653 static const uint32_t alphaComp{ 0 }; 654 static const bool isSRGB{ false }; 655 static const bool isBC{ false }; 656 static const bool isSubsampled{ false }; 657 static const uint32_t bcWidth{ 1 }; 658 static const uint32_t bcHeight{ 1 }; 659 660 typedef Transpose16_16_16_16 TransposeT; 661 typedef Format4<16, 16, 16, 16> FormatT; 662 }; 663 664 ////////////////////////////////////////////////////////////////////////// 665 /// FormatTraits<R16G16B16X16_FLOAT> - Format traits specialization for R16G16B16X16_FLOAT 666 ////////////////////////////////////////////////////////////////////////// 667 template<> struct FormatTraits<R16G16B16X16_FLOAT> : 668 ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_UNUSED, 16>, 669 FormatSwizzle<0, 1, 2, 3>, 670 Defaults<0, 0, 0, 0x3f800000> 671 { 672 static const uint32_t bpp{ 64 }; 673 static const uint32_t numComps{ 3 }; 674 static const bool hasAlpha{ false }; 675 static const uint32_t alphaComp{ 0 }; 676 static const bool isSRGB{ false }; 677 static const bool isBC{ false }; 678 static const bool isSubsampled{ false }; 679 static const uint32_t bcWidth{ 1 }; 680 static const uint32_t bcHeight{ 1 }; 681 682 typedef Transpose16_16_16_16 TransposeT; 683 typedef Format4<16, 16, 16, 16> FormatT; 684 }; 685 686 ////////////////////////////////////////////////////////////////////////// 687 /// FormatTraits<L32X32_FLOAT> - Format traits specialization for L32X32_FLOAT 688 ////////////////////////////////////////////////////////////////////////// 689 template<> struct FormatTraits<L32X32_FLOAT> : 690 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>, 691 FormatSwizzle<0, 3>, 692 Defaults<0, 0, 0, 0x3f800000> 693 { 694 static const uint32_t bpp{ 64 }; 695 static const uint32_t numComps{ 2 }; 696 static const bool hasAlpha{ false }; 697 static const uint32_t alphaComp{ 0 }; 698 static const bool isSRGB{ false }; 699 static const bool isBC{ false }; 700 static const bool isSubsampled{ false }; 701 static const uint32_t bcWidth{ 1 }; 702 static const uint32_t bcHeight{ 1 }; 703 704 typedef Transpose32_32 TransposeT; 705 typedef Format2<32, 32> FormatT; 706 }; 707 708 ////////////////////////////////////////////////////////////////////////// 709 /// FormatTraits<I32X32_FLOAT> - Format traits specialization for I32X32_FLOAT 710 ////////////////////////////////////////////////////////////////////////// 711 template<> struct FormatTraits<I32X32_FLOAT> : 712 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>, 713 FormatSwizzle<0, 3>, 714 Defaults<0, 0, 0, 0x3f800000> 715 { 716 static const uint32_t bpp{ 64 }; 717 static const uint32_t numComps{ 2 }; 718 static const bool hasAlpha{ false }; 719 static const uint32_t alphaComp{ 0 }; 720 static const bool isSRGB{ false }; 721 static const bool isBC{ false }; 722 static const bool isSubsampled{ false }; 723 static const uint32_t bcWidth{ 1 }; 724 static const uint32_t bcHeight{ 1 }; 725 726 typedef Transpose32_32 TransposeT; 727 typedef Format2<32, 32> FormatT; 728 }; 729 730 ////////////////////////////////////////////////////////////////////////// 731 /// FormatTraits<R16G16B16A16_SSCALED> - Format traits specialization for R16G16B16A16_SSCALED 732 ////////////////////////////////////////////////////////////////////////// 733 template<> struct FormatTraits<R16G16B16A16_SSCALED> : 734 ComponentTraits<SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16>, 735 FormatSwizzle<0, 1, 2, 3>, 736 Defaults<0, 0, 0, 0x3f800000> 737 { 738 static const uint32_t bpp{ 64 }; 739 static const uint32_t numComps{ 4 }; 740 static const bool hasAlpha{ true }; 741 static const uint32_t alphaComp{ 3 }; 742 static const bool isSRGB{ false }; 743 static const bool isBC{ false }; 744 static const bool isSubsampled{ false }; 745 static const uint32_t bcWidth{ 1 }; 746 static const uint32_t bcHeight{ 1 }; 747 748 typedef Transpose16_16_16_16 TransposeT; 749 typedef Format4<16, 16, 16, 16> FormatT; 750 }; 751 752 ////////////////////////////////////////////////////////////////////////// 753 /// FormatTraits<R16G16B16A16_USCALED> - Format traits specialization for R16G16B16A16_USCALED 754 ////////////////////////////////////////////////////////////////////////// 755 template<> struct FormatTraits<R16G16B16A16_USCALED> : 756 ComponentTraits<SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16>, 757 FormatSwizzle<0, 1, 2, 3>, 758 Defaults<0, 0, 0, 0x3f800000> 759 { 760 static const uint32_t bpp{ 64 }; 761 static const uint32_t numComps{ 4 }; 762 static const bool hasAlpha{ true }; 763 static const uint32_t alphaComp{ 3 }; 764 static const bool isSRGB{ false }; 765 static const bool isBC{ false }; 766 static const bool isSubsampled{ false }; 767 static const uint32_t bcWidth{ 1 }; 768 static const uint32_t bcHeight{ 1 }; 769 770 typedef Transpose16_16_16_16 TransposeT; 771 typedef Format4<16, 16, 16, 16> FormatT; 772 }; 773 774 ////////////////////////////////////////////////////////////////////////// 775 /// FormatTraits<R32G32_SSCALED> - Format traits specialization for R32G32_SSCALED 776 ////////////////////////////////////////////////////////////////////////// 777 template<> struct FormatTraits<R32G32_SSCALED> : 778 ComponentTraits<SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32>, 779 FormatSwizzle<0, 1>, 780 Defaults<0, 0, 0, 0x3f800000> 781 { 782 static const uint32_t bpp{ 64 }; 783 static const uint32_t numComps{ 2 }; 784 static const bool hasAlpha{ false }; 785 static const uint32_t alphaComp{ 0 }; 786 static const bool isSRGB{ false }; 787 static const bool isBC{ false }; 788 static const bool isSubsampled{ false }; 789 static const uint32_t bcWidth{ 1 }; 790 static const uint32_t bcHeight{ 1 }; 791 792 typedef Transpose32_32 TransposeT; 793 typedef Format2<32, 32> FormatT; 794 }; 795 796 ////////////////////////////////////////////////////////////////////////// 797 /// FormatTraits<R32G32_USCALED> - Format traits specialization for R32G32_USCALED 798 ////////////////////////////////////////////////////////////////////////// 799 template<> struct FormatTraits<R32G32_USCALED> : 800 ComponentTraits<SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32>, 801 FormatSwizzle<0, 1>, 802 Defaults<0, 0, 0, 0x3f800000> 803 { 804 static const uint32_t bpp{ 64 }; 805 static const uint32_t numComps{ 2 }; 806 static const bool hasAlpha{ false }; 807 static const uint32_t alphaComp{ 0 }; 808 static const bool isSRGB{ false }; 809 static const bool isBC{ false }; 810 static const bool isSubsampled{ false }; 811 static const uint32_t bcWidth{ 1 }; 812 static const uint32_t bcHeight{ 1 }; 813 814 typedef Transpose32_32 TransposeT; 815 typedef Format2<32, 32> FormatT; 816 }; 817 818 ////////////////////////////////////////////////////////////////////////// 819 /// FormatTraits<R32G32_SFIXED> - Format traits specialization for R32G32_SFIXED 820 ////////////////////////////////////////////////////////////////////////// 821 template<> struct FormatTraits<R32G32_SFIXED> : 822 ComponentTraits<SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32>, 823 FormatSwizzle<0, 1>, 824 Defaults<0, 0, 0, 0x3f800000> 825 { 826 static const uint32_t bpp{ 64 }; 827 static const uint32_t numComps{ 2 }; 828 static const bool hasAlpha{ false }; 829 static const uint32_t alphaComp{ 0 }; 830 static const bool isSRGB{ false }; 831 static const bool isBC{ false }; 832 static const bool isSubsampled{ false }; 833 static const uint32_t bcWidth{ 1 }; 834 static const uint32_t bcHeight{ 1 }; 835 836 typedef Transpose32_32 TransposeT; 837 typedef Format2<32, 32> FormatT; 838 }; 839 840 ////////////////////////////////////////////////////////////////////////// 841 /// FormatTraits<B8G8R8A8_UNORM> - Format traits specialization for B8G8R8A8_UNORM 842 ////////////////////////////////////////////////////////////////////////// 843 template<> struct FormatTraits<B8G8R8A8_UNORM> : 844 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>, 845 FormatSwizzle<2, 1, 0, 3>, 846 Defaults<0, 0, 0, 0x3f800000> 847 { 848 static const uint32_t bpp{ 32 }; 849 static const uint32_t numComps{ 4 }; 850 static const bool hasAlpha{ true }; 851 static const uint32_t alphaComp{ 3 }; 852 static const bool isSRGB{ false }; 853 static const bool isBC{ false }; 854 static const bool isSubsampled{ false }; 855 static const uint32_t bcWidth{ 1 }; 856 static const uint32_t bcHeight{ 1 }; 857 858 typedef Transpose8_8_8_8 TransposeT; 859 typedef Format4<8, 8, 8, 8> FormatT; 860 }; 861 862 ////////////////////////////////////////////////////////////////////////// 863 /// FormatTraits<B8G8R8A8_UNORM_SRGB> - Format traits specialization for B8G8R8A8_UNORM_SRGB 864 ////////////////////////////////////////////////////////////////////////// 865 template<> struct FormatTraits<B8G8R8A8_UNORM_SRGB> : 866 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>, 867 FormatSwizzle<2, 1, 0, 3>, 868 Defaults<0, 0, 0, 0x3f800000> 869 { 870 static const uint32_t bpp{ 32 }; 871 static const uint32_t numComps{ 4 }; 872 static const bool hasAlpha{ true }; 873 static const uint32_t alphaComp{ 3 }; 874 static const bool isSRGB{ true }; 875 static const bool isBC{ false }; 876 static const bool isSubsampled{ false }; 877 static const uint32_t bcWidth{ 1 }; 878 static const uint32_t bcHeight{ 1 }; 879 880 typedef Transpose8_8_8_8 TransposeT; 881 typedef Format4<8, 8, 8, 8> FormatT; 882 }; 883 884 ////////////////////////////////////////////////////////////////////////// 885 /// FormatTraits<R10G10B10A2_UNORM> - Format traits specialization for R10G10B10A2_UNORM 886 ////////////////////////////////////////////////////////////////////////// 887 template<> struct FormatTraits<R10G10B10A2_UNORM> : 888 ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 2>, 889 FormatSwizzle<0, 1, 2, 3>, 890 Defaults<0, 0, 0, 0x3f800000> 891 { 892 static const uint32_t bpp{ 32 }; 893 static const uint32_t numComps{ 4 }; 894 static const bool hasAlpha{ true }; 895 static const uint32_t alphaComp{ 3 }; 896 static const bool isSRGB{ false }; 897 static const bool isBC{ false }; 898 static const bool isSubsampled{ false }; 899 static const uint32_t bcWidth{ 1 }; 900 static const uint32_t bcHeight{ 1 }; 901 902 typedef Transpose10_10_10_2 TransposeT; 903 typedef Format4<10, 10, 10, 2> FormatT; 904 }; 905 906 ////////////////////////////////////////////////////////////////////////// 907 /// FormatTraits<R10G10B10A2_UNORM_SRGB> - Format traits specialization for R10G10B10A2_UNORM_SRGB 908 ////////////////////////////////////////////////////////////////////////// 909 template<> struct FormatTraits<R10G10B10A2_UNORM_SRGB> : 910 ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 2>, 911 FormatSwizzle<0, 1, 2, 3>, 912 Defaults<0, 0, 0, 0x3f800000> 913 { 914 static const uint32_t bpp{ 32 }; 915 static const uint32_t numComps{ 4 }; 916 static const bool hasAlpha{ true }; 917 static const uint32_t alphaComp{ 3 }; 918 static const bool isSRGB{ true }; 919 static const bool isBC{ false }; 920 static const bool isSubsampled{ false }; 921 static const uint32_t bcWidth{ 1 }; 922 static const uint32_t bcHeight{ 1 }; 923 924 typedef Transpose10_10_10_2 TransposeT; 925 typedef Format4<10, 10, 10, 2> FormatT; 926 }; 927 928 ////////////////////////////////////////////////////////////////////////// 929 /// FormatTraits<R10G10B10A2_UINT> - Format traits specialization for R10G10B10A2_UINT 930 ////////////////////////////////////////////////////////////////////////// 931 template<> struct FormatTraits<R10G10B10A2_UINT> : 932 ComponentTraits<SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 2>, 933 FormatSwizzle<0, 1, 2, 3>, 934 Defaults<0, 0, 0, 0x1> 935 { 936 static const uint32_t bpp{ 32 }; 937 static const uint32_t numComps{ 4 }; 938 static const bool hasAlpha{ true }; 939 static const uint32_t alphaComp{ 3 }; 940 static const bool isSRGB{ false }; 941 static const bool isBC{ false }; 942 static const bool isSubsampled{ false }; 943 static const uint32_t bcWidth{ 1 }; 944 static const uint32_t bcHeight{ 1 }; 945 946 typedef Transpose10_10_10_2 TransposeT; 947 typedef Format4<10, 10, 10, 2> FormatT; 948 }; 949 950 ////////////////////////////////////////////////////////////////////////// 951 /// FormatTraits<R8G8B8A8_UNORM> - Format traits specialization for R8G8B8A8_UNORM 952 ////////////////////////////////////////////////////////////////////////// 953 template<> struct FormatTraits<R8G8B8A8_UNORM> : 954 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>, 955 FormatSwizzle<0, 1, 2, 3>, 956 Defaults<0, 0, 0, 0x3f800000> 957 { 958 static const uint32_t bpp{ 32 }; 959 static const uint32_t numComps{ 4 }; 960 static const bool hasAlpha{ true }; 961 static const uint32_t alphaComp{ 3 }; 962 static const bool isSRGB{ false }; 963 static const bool isBC{ false }; 964 static const bool isSubsampled{ false }; 965 static const uint32_t bcWidth{ 1 }; 966 static const uint32_t bcHeight{ 1 }; 967 968 typedef Transpose8_8_8_8 TransposeT; 969 typedef Format4<8, 8, 8, 8> FormatT; 970 }; 971 972 ////////////////////////////////////////////////////////////////////////// 973 /// FormatTraits<R8G8B8A8_UNORM_SRGB> - Format traits specialization for R8G8B8A8_UNORM_SRGB 974 ////////////////////////////////////////////////////////////////////////// 975 template<> struct FormatTraits<R8G8B8A8_UNORM_SRGB> : 976 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>, 977 FormatSwizzle<0, 1, 2, 3>, 978 Defaults<0, 0, 0, 0x3f800000> 979 { 980 static const uint32_t bpp{ 32 }; 981 static const uint32_t numComps{ 4 }; 982 static const bool hasAlpha{ true }; 983 static const uint32_t alphaComp{ 3 }; 984 static const bool isSRGB{ true }; 985 static const bool isBC{ false }; 986 static const bool isSubsampled{ false }; 987 static const uint32_t bcWidth{ 1 }; 988 static const uint32_t bcHeight{ 1 }; 989 990 typedef Transpose8_8_8_8 TransposeT; 991 typedef Format4<8, 8, 8, 8> FormatT; 992 }; 993 994 ////////////////////////////////////////////////////////////////////////// 995 /// FormatTraits<R8G8B8A8_SNORM> - Format traits specialization for R8G8B8A8_SNORM 996 ////////////////////////////////////////////////////////////////////////// 997 template<> struct FormatTraits<R8G8B8A8_SNORM> : 998 ComponentTraits<SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8>, 999 FormatSwizzle<0, 1, 2, 3>, 1000 Defaults<0, 0, 0, 0x3f800000> 1001 { 1002 static const uint32_t bpp{ 32 }; 1003 static const uint32_t numComps{ 4 }; 1004 static const bool hasAlpha{ true }; 1005 static const uint32_t alphaComp{ 3 }; 1006 static const bool isSRGB{ false }; 1007 static const bool isBC{ false }; 1008 static const bool isSubsampled{ false }; 1009 static const uint32_t bcWidth{ 1 }; 1010 static const uint32_t bcHeight{ 1 }; 1011 1012 typedef Transpose8_8_8_8 TransposeT; 1013 typedef Format4<8, 8, 8, 8> FormatT; 1014 }; 1015 1016 ////////////////////////////////////////////////////////////////////////// 1017 /// FormatTraits<R8G8B8A8_SINT> - Format traits specialization for R8G8B8A8_SINT 1018 ////////////////////////////////////////////////////////////////////////// 1019 template<> struct FormatTraits<R8G8B8A8_SINT> : 1020 ComponentTraits<SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8>, 1021 FormatSwizzle<0, 1, 2, 3>, 1022 Defaults<0, 0, 0, 0x1> 1023 { 1024 static const uint32_t bpp{ 32 }; 1025 static const uint32_t numComps{ 4 }; 1026 static const bool hasAlpha{ true }; 1027 static const uint32_t alphaComp{ 3 }; 1028 static const bool isSRGB{ false }; 1029 static const bool isBC{ false }; 1030 static const bool isSubsampled{ false }; 1031 static const uint32_t bcWidth{ 1 }; 1032 static const uint32_t bcHeight{ 1 }; 1033 1034 typedef Transpose8_8_8_8 TransposeT; 1035 typedef Format4<8, 8, 8, 8> FormatT; 1036 }; 1037 1038 ////////////////////////////////////////////////////////////////////////// 1039 /// FormatTraits<R8G8B8A8_UINT> - Format traits specialization for R8G8B8A8_UINT 1040 ////////////////////////////////////////////////////////////////////////// 1041 template<> struct FormatTraits<R8G8B8A8_UINT> : 1042 ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>, 1043 FormatSwizzle<0, 1, 2, 3>, 1044 Defaults<0, 0, 0, 0x1> 1045 { 1046 static const uint32_t bpp{ 32 }; 1047 static const uint32_t numComps{ 4 }; 1048 static const bool hasAlpha{ true }; 1049 static const uint32_t alphaComp{ 3 }; 1050 static const bool isSRGB{ false }; 1051 static const bool isBC{ false }; 1052 static const bool isSubsampled{ false }; 1053 static const uint32_t bcWidth{ 1 }; 1054 static const uint32_t bcHeight{ 1 }; 1055 1056 typedef Transpose8_8_8_8 TransposeT; 1057 typedef Format4<8, 8, 8, 8> FormatT; 1058 }; 1059 1060 ////////////////////////////////////////////////////////////////////////// 1061 /// FormatTraits<R16G16_UNORM> - Format traits specialization for R16G16_UNORM 1062 ////////////////////////////////////////////////////////////////////////// 1063 template<> struct FormatTraits<R16G16_UNORM> : 1064 ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16>, 1065 FormatSwizzle<0, 1>, 1066 Defaults<0, 0, 0, 0x3f800000> 1067 { 1068 static const uint32_t bpp{ 32 }; 1069 static const uint32_t numComps{ 2 }; 1070 static const bool hasAlpha{ false }; 1071 static const uint32_t alphaComp{ 0 }; 1072 static const bool isSRGB{ false }; 1073 static const bool isBC{ false }; 1074 static const bool isSubsampled{ false }; 1075 static const uint32_t bcWidth{ 1 }; 1076 static const uint32_t bcHeight{ 1 }; 1077 1078 typedef Transpose16_16 TransposeT; 1079 typedef Format2<16, 16> FormatT; 1080 }; 1081 1082 ////////////////////////////////////////////////////////////////////////// 1083 /// FormatTraits<R16G16_SNORM> - Format traits specialization for R16G16_SNORM 1084 ////////////////////////////////////////////////////////////////////////// 1085 template<> struct FormatTraits<R16G16_SNORM> : 1086 ComponentTraits<SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16>, 1087 FormatSwizzle<0, 1>, 1088 Defaults<0, 0, 0, 0x3f800000> 1089 { 1090 static const uint32_t bpp{ 32 }; 1091 static const uint32_t numComps{ 2 }; 1092 static const bool hasAlpha{ false }; 1093 static const uint32_t alphaComp{ 0 }; 1094 static const bool isSRGB{ false }; 1095 static const bool isBC{ false }; 1096 static const bool isSubsampled{ false }; 1097 static const uint32_t bcWidth{ 1 }; 1098 static const uint32_t bcHeight{ 1 }; 1099 1100 typedef Transpose16_16 TransposeT; 1101 typedef Format2<16, 16> FormatT; 1102 }; 1103 1104 ////////////////////////////////////////////////////////////////////////// 1105 /// FormatTraits<R16G16_SINT> - Format traits specialization for R16G16_SINT 1106 ////////////////////////////////////////////////////////////////////////// 1107 template<> struct FormatTraits<R16G16_SINT> : 1108 ComponentTraits<SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16>, 1109 FormatSwizzle<0, 1>, 1110 Defaults<0, 0, 0, 0x1> 1111 { 1112 static const uint32_t bpp{ 32 }; 1113 static const uint32_t numComps{ 2 }; 1114 static const bool hasAlpha{ false }; 1115 static const uint32_t alphaComp{ 0 }; 1116 static const bool isSRGB{ false }; 1117 static const bool isBC{ false }; 1118 static const bool isSubsampled{ false }; 1119 static const uint32_t bcWidth{ 1 }; 1120 static const uint32_t bcHeight{ 1 }; 1121 1122 typedef Transpose16_16 TransposeT; 1123 typedef Format2<16, 16> FormatT; 1124 }; 1125 1126 ////////////////////////////////////////////////////////////////////////// 1127 /// FormatTraits<R16G16_UINT> - Format traits specialization for R16G16_UINT 1128 ////////////////////////////////////////////////////////////////////////// 1129 template<> struct FormatTraits<R16G16_UINT> : 1130 ComponentTraits<SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16>, 1131 FormatSwizzle<0, 1>, 1132 Defaults<0, 0, 0, 0x1> 1133 { 1134 static const uint32_t bpp{ 32 }; 1135 static const uint32_t numComps{ 2 }; 1136 static const bool hasAlpha{ false }; 1137 static const uint32_t alphaComp{ 0 }; 1138 static const bool isSRGB{ false }; 1139 static const bool isBC{ false }; 1140 static const bool isSubsampled{ false }; 1141 static const uint32_t bcWidth{ 1 }; 1142 static const uint32_t bcHeight{ 1 }; 1143 1144 typedef Transpose16_16 TransposeT; 1145 typedef Format2<16, 16> FormatT; 1146 }; 1147 1148 ////////////////////////////////////////////////////////////////////////// 1149 /// FormatTraits<R16G16_FLOAT> - Format traits specialization for R16G16_FLOAT 1150 ////////////////////////////////////////////////////////////////////////// 1151 template<> struct FormatTraits<R16G16_FLOAT> : 1152 ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16>, 1153 FormatSwizzle<0, 1>, 1154 Defaults<0, 0, 0, 0x3f800000> 1155 { 1156 static const uint32_t bpp{ 32 }; 1157 static const uint32_t numComps{ 2 }; 1158 static const bool hasAlpha{ false }; 1159 static const uint32_t alphaComp{ 0 }; 1160 static const bool isSRGB{ false }; 1161 static const bool isBC{ false }; 1162 static const bool isSubsampled{ false }; 1163 static const uint32_t bcWidth{ 1 }; 1164 static const uint32_t bcHeight{ 1 }; 1165 1166 typedef Transpose16_16 TransposeT; 1167 typedef Format2<16, 16> FormatT; 1168 }; 1169 1170 ////////////////////////////////////////////////////////////////////////// 1171 /// FormatTraits<B10G10R10A2_UNORM> - Format traits specialization for B10G10R10A2_UNORM 1172 ////////////////////////////////////////////////////////////////////////// 1173 template<> struct FormatTraits<B10G10R10A2_UNORM> : 1174 ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 2>, 1175 FormatSwizzle<2, 1, 0, 3>, 1176 Defaults<0, 0, 0, 0x3f800000> 1177 { 1178 static const uint32_t bpp{ 32 }; 1179 static const uint32_t numComps{ 4 }; 1180 static const bool hasAlpha{ true }; 1181 static const uint32_t alphaComp{ 3 }; 1182 static const bool isSRGB{ false }; 1183 static const bool isBC{ false }; 1184 static const bool isSubsampled{ false }; 1185 static const uint32_t bcWidth{ 1 }; 1186 static const uint32_t bcHeight{ 1 }; 1187 1188 typedef Transpose10_10_10_2 TransposeT; 1189 typedef Format4<10, 10, 10, 2> FormatT; 1190 }; 1191 1192 ////////////////////////////////////////////////////////////////////////// 1193 /// FormatTraits<B10G10R10A2_UNORM_SRGB> - Format traits specialization for B10G10R10A2_UNORM_SRGB 1194 ////////////////////////////////////////////////////////////////////////// 1195 template<> struct FormatTraits<B10G10R10A2_UNORM_SRGB> : 1196 ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 2>, 1197 FormatSwizzle<2, 1, 0, 3>, 1198 Defaults<0, 0, 0, 0x3f800000> 1199 { 1200 static const uint32_t bpp{ 32 }; 1201 static const uint32_t numComps{ 4 }; 1202 static const bool hasAlpha{ true }; 1203 static const uint32_t alphaComp{ 3 }; 1204 static const bool isSRGB{ true }; 1205 static const bool isBC{ false }; 1206 static const bool isSubsampled{ false }; 1207 static const uint32_t bcWidth{ 1 }; 1208 static const uint32_t bcHeight{ 1 }; 1209 1210 typedef Transpose10_10_10_2 TransposeT; 1211 typedef Format4<10, 10, 10, 2> FormatT; 1212 }; 1213 1214 ////////////////////////////////////////////////////////////////////////// 1215 /// FormatTraits<R11G11B10_FLOAT> - Format traits specialization for R11G11B10_FLOAT 1216 ////////////////////////////////////////////////////////////////////////// 1217 template<> struct FormatTraits<R11G11B10_FLOAT> : 1218 ComponentTraits<SWR_TYPE_FLOAT, 11, SWR_TYPE_FLOAT, 11, SWR_TYPE_FLOAT, 10>, 1219 FormatSwizzle<0, 1, 2>, 1220 Defaults<0, 0, 0, 0x3f800000> 1221 { 1222 static const uint32_t bpp{ 32 }; 1223 static const uint32_t numComps{ 3 }; 1224 static const bool hasAlpha{ false }; 1225 static const uint32_t alphaComp{ 0 }; 1226 static const bool isSRGB{ false }; 1227 static const bool isBC{ false }; 1228 static const bool isSubsampled{ false }; 1229 static const uint32_t bcWidth{ 1 }; 1230 static const uint32_t bcHeight{ 1 }; 1231 1232 typedef Transpose11_11_10 TransposeT; 1233 typedef Format3<11, 11, 10> FormatT; 1234 }; 1235 1236 ////////////////////////////////////////////////////////////////////////// 1237 /// FormatTraits<R10G10B10_FLOAT_A2_UNORM> - Format traits specialization for R10G10B10_FLOAT_A2_UNORM 1238 ////////////////////////////////////////////////////////////////////////// 1239 template<> struct FormatTraits<R10G10B10_FLOAT_A2_UNORM> : 1240 ComponentTraits<SWR_TYPE_FLOAT, 10, SWR_TYPE_FLOAT, 10, SWR_TYPE_FLOAT, 10, SWR_TYPE_UNORM, 2>, 1241 FormatSwizzle<0, 1, 2, 3>, 1242 Defaults<0, 0, 0, 0x3f800000> 1243 { 1244 static const uint32_t bpp{ 32 }; 1245 static const uint32_t numComps{ 4 }; 1246 static const bool hasAlpha{ true }; 1247 static const uint32_t alphaComp{ 3 }; 1248 static const bool isSRGB{ false }; 1249 static const bool isBC{ false }; 1250 static const bool isSubsampled{ false }; 1251 static const uint32_t bcWidth{ 1 }; 1252 static const uint32_t bcHeight{ 1 }; 1253 1254 typedef Transpose10_10_10_2 TransposeT; 1255 typedef Format4<10, 10, 10, 2> FormatT; 1256 }; 1257 1258 ////////////////////////////////////////////////////////////////////////// 1259 /// FormatTraits<R32_SINT> - Format traits specialization for R32_SINT 1260 ////////////////////////////////////////////////////////////////////////// 1261 template<> struct FormatTraits<R32_SINT> : 1262 ComponentTraits<SWR_TYPE_SINT, 32>, 1263 FormatSwizzle<0>, 1264 Defaults<0, 0, 0, 0x1> 1265 { 1266 static const uint32_t bpp{ 32 }; 1267 static const uint32_t numComps{ 1 }; 1268 static const bool hasAlpha{ false }; 1269 static const uint32_t alphaComp{ 0 }; 1270 static const bool isSRGB{ false }; 1271 static const bool isBC{ false }; 1272 static const bool isSubsampled{ false }; 1273 static const uint32_t bcWidth{ 1 }; 1274 static const uint32_t bcHeight{ 1 }; 1275 1276 typedef TransposeSingleComponent<32> TransposeT; 1277 typedef Format1<32> FormatT; 1278 }; 1279 1280 ////////////////////////////////////////////////////////////////////////// 1281 /// FormatTraits<R32_UINT> - Format traits specialization for R32_UINT 1282 ////////////////////////////////////////////////////////////////////////// 1283 template<> struct FormatTraits<R32_UINT> : 1284 ComponentTraits<SWR_TYPE_UINT, 32>, 1285 FormatSwizzle<0>, 1286 Defaults<0, 0, 0, 0x1> 1287 { 1288 static const uint32_t bpp{ 32 }; 1289 static const uint32_t numComps{ 1 }; 1290 static const bool hasAlpha{ false }; 1291 static const uint32_t alphaComp{ 0 }; 1292 static const bool isSRGB{ false }; 1293 static const bool isBC{ false }; 1294 static const bool isSubsampled{ false }; 1295 static const uint32_t bcWidth{ 1 }; 1296 static const uint32_t bcHeight{ 1 }; 1297 1298 typedef TransposeSingleComponent<32> TransposeT; 1299 typedef Format1<32> FormatT; 1300 }; 1301 1302 ////////////////////////////////////////////////////////////////////////// 1303 /// FormatTraits<R32_FLOAT> - Format traits specialization for R32_FLOAT 1304 ////////////////////////////////////////////////////////////////////////// 1305 template<> struct FormatTraits<R32_FLOAT> : 1306 ComponentTraits<SWR_TYPE_FLOAT, 32>, 1307 FormatSwizzle<0>, 1308 Defaults<0, 0, 0, 0x3f800000> 1309 { 1310 static const uint32_t bpp{ 32 }; 1311 static const uint32_t numComps{ 1 }; 1312 static const bool hasAlpha{ false }; 1313 static const uint32_t alphaComp{ 0 }; 1314 static const bool isSRGB{ false }; 1315 static const bool isBC{ false }; 1316 static const bool isSubsampled{ false }; 1317 static const uint32_t bcWidth{ 1 }; 1318 static const uint32_t bcHeight{ 1 }; 1319 1320 typedef TransposeSingleComponent<32> TransposeT; 1321 typedef Format1<32> FormatT; 1322 }; 1323 1324 ////////////////////////////////////////////////////////////////////////// 1325 /// FormatTraits<R24_UNORM_X8_TYPELESS> - Format traits specialization for R24_UNORM_X8_TYPELESS 1326 ////////////////////////////////////////////////////////////////////////// 1327 template<> struct FormatTraits<R24_UNORM_X8_TYPELESS> : 1328 ComponentTraits<SWR_TYPE_UNORM, 24>, 1329 FormatSwizzle<0>, 1330 Defaults<0, 0, 0, 0x3f800000> 1331 { 1332 static const uint32_t bpp{ 32 }; 1333 static const uint32_t numComps{ 1 }; 1334 static const bool hasAlpha{ false }; 1335 static const uint32_t alphaComp{ 3 }; 1336 static const bool isSRGB{ false }; 1337 static const bool isBC{ false }; 1338 static const bool isSubsampled{ false }; 1339 static const uint32_t bcWidth{ 1 }; 1340 static const uint32_t bcHeight{ 1 }; 1341 1342 typedef TransposeSingleComponent<32> TransposeT; 1343 typedef Format1<24> FormatT; 1344 }; 1345 1346 ////////////////////////////////////////////////////////////////////////// 1347 /// FormatTraits<X24_TYPELESS_G8_UINT> - Format traits specialization for X24_TYPELESS_G8_UINT 1348 ////////////////////////////////////////////////////////////////////////// 1349 template<> struct FormatTraits<X24_TYPELESS_G8_UINT> : 1350 ComponentTraits<SWR_TYPE_UINT, 32>, 1351 FormatSwizzle<1>, 1352 Defaults<0, 0, 0, 0x1> 1353 { 1354 static const uint32_t bpp{ 32 }; 1355 static const uint32_t numComps{ 1 }; 1356 static const bool hasAlpha{ false }; 1357 static const uint32_t alphaComp{ 3 }; 1358 static const bool isSRGB{ false }; 1359 static const bool isBC{ false }; 1360 static const bool isSubsampled{ false }; 1361 static const uint32_t bcWidth{ 1 }; 1362 static const uint32_t bcHeight{ 1 }; 1363 1364 typedef TransposeSingleComponent<32> TransposeT; 1365 typedef Format1<32> FormatT; 1366 }; 1367 1368 ////////////////////////////////////////////////////////////////////////// 1369 /// FormatTraits<L32_UNORM> - Format traits specialization for L32_UNORM 1370 ////////////////////////////////////////////////////////////////////////// 1371 template<> struct FormatTraits<L32_UNORM> : 1372 ComponentTraits<SWR_TYPE_UNORM, 32>, 1373 FormatSwizzle<0>, 1374 Defaults<0, 0, 0, 0x3f800000> 1375 { 1376 static const uint32_t bpp{ 32 }; 1377 static const uint32_t numComps{ 1 }; 1378 static const bool hasAlpha{ false }; 1379 static const uint32_t alphaComp{ 0 }; 1380 static const bool isSRGB{ false }; 1381 static const bool isBC{ false }; 1382 static const bool isSubsampled{ false }; 1383 static const uint32_t bcWidth{ 1 }; 1384 static const uint32_t bcHeight{ 1 }; 1385 1386 typedef TransposeSingleComponent<32> TransposeT; 1387 typedef Format1<32> FormatT; 1388 }; 1389 1390 ////////////////////////////////////////////////////////////////////////// 1391 /// FormatTraits<L16A16_UNORM> - Format traits specialization for L16A16_UNORM 1392 ////////////////////////////////////////////////////////////////////////// 1393 template<> struct FormatTraits<L16A16_UNORM> : 1394 ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16>, 1395 FormatSwizzle<0, 3>, 1396 Defaults<0, 0, 0, 0x3f800000> 1397 { 1398 static const uint32_t bpp{ 32 }; 1399 static const uint32_t numComps{ 2 }; 1400 static const bool hasAlpha{ true }; 1401 static const uint32_t alphaComp{ 1 }; 1402 static const bool isSRGB{ false }; 1403 static const bool isBC{ false }; 1404 static const bool isSubsampled{ false }; 1405 static const uint32_t bcWidth{ 1 }; 1406 static const uint32_t bcHeight{ 1 }; 1407 1408 typedef Transpose16_16 TransposeT; 1409 typedef Format2<16, 16> FormatT; 1410 }; 1411 1412 ////////////////////////////////////////////////////////////////////////// 1413 /// FormatTraits<I24X8_UNORM> - Format traits specialization for I24X8_UNORM 1414 ////////////////////////////////////////////////////////////////////////// 1415 template<> struct FormatTraits<I24X8_UNORM> : 1416 ComponentTraits<SWR_TYPE_UNORM, 24, SWR_TYPE_UNORM, 8>, 1417 FormatSwizzle<0, 3>, 1418 Defaults<0, 0, 0, 0x3f800000> 1419 { 1420 static const uint32_t bpp{ 32 }; 1421 static const uint32_t numComps{ 2 }; 1422 static const bool hasAlpha{ false }; 1423 static const uint32_t alphaComp{ 0 }; 1424 static const bool isSRGB{ false }; 1425 static const bool isBC{ false }; 1426 static const bool isSubsampled{ false }; 1427 static const uint32_t bcWidth{ 1 }; 1428 static const uint32_t bcHeight{ 1 }; 1429 1430 typedef Transpose24_8 TransposeT; 1431 typedef Format2<24, 8> FormatT; 1432 }; 1433 1434 ////////////////////////////////////////////////////////////////////////// 1435 /// FormatTraits<L24X8_UNORM> - Format traits specialization for L24X8_UNORM 1436 ////////////////////////////////////////////////////////////////////////// 1437 template<> struct FormatTraits<L24X8_UNORM> : 1438 ComponentTraits<SWR_TYPE_UNORM, 24, SWR_TYPE_UNORM, 8>, 1439 FormatSwizzle<0, 3>, 1440 Defaults<0, 0, 0, 0x3f800000> 1441 { 1442 static const uint32_t bpp{ 32 }; 1443 static const uint32_t numComps{ 2 }; 1444 static const bool hasAlpha{ false }; 1445 static const uint32_t alphaComp{ 0 }; 1446 static const bool isSRGB{ false }; 1447 static const bool isBC{ false }; 1448 static const bool isSubsampled{ false }; 1449 static const uint32_t bcWidth{ 1 }; 1450 static const uint32_t bcHeight{ 1 }; 1451 1452 typedef Transpose24_8 TransposeT; 1453 typedef Format2<24, 8> FormatT; 1454 }; 1455 1456 ////////////////////////////////////////////////////////////////////////// 1457 /// FormatTraits<I32_FLOAT> - Format traits specialization for I32_FLOAT 1458 ////////////////////////////////////////////////////////////////////////// 1459 template<> struct FormatTraits<I32_FLOAT> : 1460 ComponentTraits<SWR_TYPE_FLOAT, 32>, 1461 FormatSwizzle<0>, 1462 Defaults<0, 0, 0, 0x3f800000> 1463 { 1464 static const uint32_t bpp{ 32 }; 1465 static const uint32_t numComps{ 1 }; 1466 static const bool hasAlpha{ false }; 1467 static const uint32_t alphaComp{ 0 }; 1468 static const bool isSRGB{ false }; 1469 static const bool isBC{ false }; 1470 static const bool isSubsampled{ false }; 1471 static const uint32_t bcWidth{ 1 }; 1472 static const uint32_t bcHeight{ 1 }; 1473 1474 typedef TransposeSingleComponent<32> TransposeT; 1475 typedef Format1<32> FormatT; 1476 }; 1477 1478 ////////////////////////////////////////////////////////////////////////// 1479 /// FormatTraits<L32_FLOAT> - Format traits specialization for L32_FLOAT 1480 ////////////////////////////////////////////////////////////////////////// 1481 template<> struct FormatTraits<L32_FLOAT> : 1482 ComponentTraits<SWR_TYPE_FLOAT, 32>, 1483 FormatSwizzle<0>, 1484 Defaults<0, 0, 0, 0x3f800000> 1485 { 1486 static const uint32_t bpp{ 32 }; 1487 static const uint32_t numComps{ 1 }; 1488 static const bool hasAlpha{ false }; 1489 static const uint32_t alphaComp{ 0 }; 1490 static const bool isSRGB{ false }; 1491 static const bool isBC{ false }; 1492 static const bool isSubsampled{ false }; 1493 static const uint32_t bcWidth{ 1 }; 1494 static const uint32_t bcHeight{ 1 }; 1495 1496 typedef TransposeSingleComponent<32> TransposeT; 1497 typedef Format1<32> FormatT; 1498 }; 1499 1500 ////////////////////////////////////////////////////////////////////////// 1501 /// FormatTraits<A32_FLOAT> - Format traits specialization for A32_FLOAT 1502 ////////////////////////////////////////////////////////////////////////// 1503 template<> struct FormatTraits<A32_FLOAT> : 1504 ComponentTraits<SWR_TYPE_FLOAT, 32>, 1505 FormatSwizzle<3>, 1506 Defaults<0, 0, 0, 0x3f800000> 1507 { 1508 static const uint32_t bpp{ 32 }; 1509 static const uint32_t numComps{ 1 }; 1510 static const bool hasAlpha{ true }; 1511 static const uint32_t alphaComp{ 0 }; 1512 static const bool isSRGB{ false }; 1513 static const bool isBC{ false }; 1514 static const bool isSubsampled{ false }; 1515 static const uint32_t bcWidth{ 1 }; 1516 static const uint32_t bcHeight{ 1 }; 1517 1518 typedef TransposeSingleComponent<32> TransposeT; 1519 typedef Format1<32> FormatT; 1520 }; 1521 1522 ////////////////////////////////////////////////////////////////////////// 1523 /// FormatTraits<B8G8R8X8_UNORM> - Format traits specialization for B8G8R8X8_UNORM 1524 ////////////////////////////////////////////////////////////////////////// 1525 template<> struct FormatTraits<B8G8R8X8_UNORM> : 1526 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNUSED, 8>, 1527 FormatSwizzle<2, 1, 0, 3>, 1528 Defaults<0, 0, 0, 0x3f800000> 1529 { 1530 static const uint32_t bpp{ 32 }; 1531 static const uint32_t numComps{ 3 }; 1532 static const bool hasAlpha{ false }; 1533 static const uint32_t alphaComp{ 0 }; 1534 static const bool isSRGB{ false }; 1535 static const bool isBC{ false }; 1536 static const bool isSubsampled{ false }; 1537 static const uint32_t bcWidth{ 1 }; 1538 static const uint32_t bcHeight{ 1 }; 1539 1540 typedef Transpose8_8_8_8 TransposeT; 1541 typedef Format4<8, 8, 8, 8> FormatT; 1542 }; 1543 1544 ////////////////////////////////////////////////////////////////////////// 1545 /// FormatTraits<B8G8R8X8_UNORM_SRGB> - Format traits specialization for B8G8R8X8_UNORM_SRGB 1546 ////////////////////////////////////////////////////////////////////////// 1547 template<> struct FormatTraits<B8G8R8X8_UNORM_SRGB> : 1548 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNUSED, 8>, 1549 FormatSwizzle<2, 1, 0, 3>, 1550 Defaults<0, 0, 0, 0x3f800000> 1551 { 1552 static const uint32_t bpp{ 32 }; 1553 static const uint32_t numComps{ 3 }; 1554 static const bool hasAlpha{ false }; 1555 static const uint32_t alphaComp{ 0 }; 1556 static const bool isSRGB{ true }; 1557 static const bool isBC{ false }; 1558 static const bool isSubsampled{ false }; 1559 static const uint32_t bcWidth{ 1 }; 1560 static const uint32_t bcHeight{ 1 }; 1561 1562 typedef Transpose8_8_8_8 TransposeT; 1563 typedef Format4<8, 8, 8, 8> FormatT; 1564 }; 1565 1566 ////////////////////////////////////////////////////////////////////////// 1567 /// FormatTraits<R8G8B8X8_UNORM> - Format traits specialization for R8G8B8X8_UNORM 1568 ////////////////////////////////////////////////////////////////////////// 1569 template<> struct FormatTraits<R8G8B8X8_UNORM> : 1570 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNUSED, 8>, 1571 FormatSwizzle<0, 1, 2, 3>, 1572 Defaults<0, 0, 0, 0x3f800000> 1573 { 1574 static const uint32_t bpp{ 32 }; 1575 static const uint32_t numComps{ 3 }; 1576 static const bool hasAlpha{ false }; 1577 static const uint32_t alphaComp{ 0 }; 1578 static const bool isSRGB{ false }; 1579 static const bool isBC{ false }; 1580 static const bool isSubsampled{ false }; 1581 static const uint32_t bcWidth{ 1 }; 1582 static const uint32_t bcHeight{ 1 }; 1583 1584 typedef Transpose8_8_8_8 TransposeT; 1585 typedef Format4<8, 8, 8, 8> FormatT; 1586 }; 1587 1588 ////////////////////////////////////////////////////////////////////////// 1589 /// FormatTraits<R8G8B8X8_UNORM_SRGB> - Format traits specialization for R8G8B8X8_UNORM_SRGB 1590 ////////////////////////////////////////////////////////////////////////// 1591 template<> struct FormatTraits<R8G8B8X8_UNORM_SRGB> : 1592 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNUSED, 8>, 1593 FormatSwizzle<0, 1, 2, 3>, 1594 Defaults<0, 0, 0, 0x3f800000> 1595 { 1596 static const uint32_t bpp{ 32 }; 1597 static const uint32_t numComps{ 3 }; 1598 static const bool hasAlpha{ false }; 1599 static const uint32_t alphaComp{ 0 }; 1600 static const bool isSRGB{ true }; 1601 static const bool isBC{ false }; 1602 static const bool isSubsampled{ false }; 1603 static const uint32_t bcWidth{ 1 }; 1604 static const uint32_t bcHeight{ 1 }; 1605 1606 typedef Transpose8_8_8_8 TransposeT; 1607 typedef Format4<8, 8, 8, 8> FormatT; 1608 }; 1609 1610 ////////////////////////////////////////////////////////////////////////// 1611 /// FormatTraits<R9G9B9E5_SHAREDEXP> - Format traits specialization for R9G9B9E5_SHAREDEXP 1612 ////////////////////////////////////////////////////////////////////////// 1613 template<> struct FormatTraits<R9G9B9E5_SHAREDEXP> : 1614 ComponentTraits<SWR_TYPE_UINT, 9, SWR_TYPE_UINT, 9, SWR_TYPE_UINT, 9, SWR_TYPE_UINT, 5>, 1615 FormatSwizzle<0, 1, 2, 3>, 1616 Defaults<0, 0, 0, 0x1> 1617 { 1618 static const uint32_t bpp{ 32 }; 1619 static const uint32_t numComps{ 4 }; 1620 static const bool hasAlpha{ false }; 1621 static const uint32_t alphaComp{ 3 }; 1622 static const bool isSRGB{ false }; 1623 static const bool isBC{ false }; 1624 static const bool isSubsampled{ false }; 1625 static const uint32_t bcWidth{ 1 }; 1626 static const uint32_t bcHeight{ 1 }; 1627 1628 typedef Transpose9_9_9_5 TransposeT; 1629 typedef Format4<9, 9, 9, 5> FormatT; 1630 }; 1631 1632 ////////////////////////////////////////////////////////////////////////// 1633 /// FormatTraits<B10G10R10X2_UNORM> - Format traits specialization for B10G10R10X2_UNORM 1634 ////////////////////////////////////////////////////////////////////////// 1635 template<> struct FormatTraits<B10G10R10X2_UNORM> : 1636 ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNUSED, 2>, 1637 FormatSwizzle<2, 1, 0, 3>, 1638 Defaults<0, 0, 0, 0x3f800000> 1639 { 1640 static const uint32_t bpp{ 32 }; 1641 static const uint32_t numComps{ 3 }; 1642 static const bool hasAlpha{ false }; 1643 static const uint32_t alphaComp{ 0 }; 1644 static const bool isSRGB{ false }; 1645 static const bool isBC{ false }; 1646 static const bool isSubsampled{ false }; 1647 static const uint32_t bcWidth{ 1 }; 1648 static const uint32_t bcHeight{ 1 }; 1649 1650 typedef Transpose10_10_10_2 TransposeT; 1651 typedef Format4<10, 10, 10, 2> FormatT; 1652 }; 1653 1654 ////////////////////////////////////////////////////////////////////////// 1655 /// FormatTraits<L16A16_FLOAT> - Format traits specialization for L16A16_FLOAT 1656 ////////////////////////////////////////////////////////////////////////// 1657 template<> struct FormatTraits<L16A16_FLOAT> : 1658 ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16>, 1659 FormatSwizzle<0, 3>, 1660 Defaults<0, 0, 0, 0x3f800000> 1661 { 1662 static const uint32_t bpp{ 32 }; 1663 static const uint32_t numComps{ 2 }; 1664 static const bool hasAlpha{ true }; 1665 static const uint32_t alphaComp{ 1 }; 1666 static const bool isSRGB{ false }; 1667 static const bool isBC{ false }; 1668 static const bool isSubsampled{ false }; 1669 static const uint32_t bcWidth{ 1 }; 1670 static const uint32_t bcHeight{ 1 }; 1671 1672 typedef Transpose16_16 TransposeT; 1673 typedef Format2<16, 16> FormatT; 1674 }; 1675 1676 ////////////////////////////////////////////////////////////////////////// 1677 /// FormatTraits<R10G10B10X2_USCALED> - Format traits specialization for R10G10B10X2_USCALED 1678 ////////////////////////////////////////////////////////////////////////// 1679 template<> struct FormatTraits<R10G10B10X2_USCALED> : 1680 ComponentTraits<SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_UNUSED, 2>, 1681 FormatSwizzle<0, 1, 2, 3>, 1682 Defaults<0, 0, 0, 0x3f800000> 1683 { 1684 static const uint32_t bpp{ 32 }; 1685 static const uint32_t numComps{ 3 }; 1686 static const bool hasAlpha{ false }; 1687 static const uint32_t alphaComp{ 0 }; 1688 static const bool isSRGB{ false }; 1689 static const bool isBC{ false }; 1690 static const bool isSubsampled{ false }; 1691 static const uint32_t bcWidth{ 1 }; 1692 static const uint32_t bcHeight{ 1 }; 1693 1694 typedef Transpose10_10_10_2 TransposeT; 1695 typedef Format4<10, 10, 10, 2> FormatT; 1696 }; 1697 1698 ////////////////////////////////////////////////////////////////////////// 1699 /// FormatTraits<R8G8B8A8_SSCALED> - Format traits specialization for R8G8B8A8_SSCALED 1700 ////////////////////////////////////////////////////////////////////////// 1701 template<> struct FormatTraits<R8G8B8A8_SSCALED> : 1702 ComponentTraits<SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8>, 1703 FormatSwizzle<0, 1, 2, 3>, 1704 Defaults<0, 0, 0, 0x3f800000> 1705 { 1706 static const uint32_t bpp{ 32 }; 1707 static const uint32_t numComps{ 4 }; 1708 static const bool hasAlpha{ true }; 1709 static const uint32_t alphaComp{ 3 }; 1710 static const bool isSRGB{ false }; 1711 static const bool isBC{ false }; 1712 static const bool isSubsampled{ false }; 1713 static const uint32_t bcWidth{ 1 }; 1714 static const uint32_t bcHeight{ 1 }; 1715 1716 typedef Transpose8_8_8_8 TransposeT; 1717 typedef Format4<8, 8, 8, 8> FormatT; 1718 }; 1719 1720 ////////////////////////////////////////////////////////////////////////// 1721 /// FormatTraits<R8G8B8A8_USCALED> - Format traits specialization for R8G8B8A8_USCALED 1722 ////////////////////////////////////////////////////////////////////////// 1723 template<> struct FormatTraits<R8G8B8A8_USCALED> : 1724 ComponentTraits<SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8>, 1725 FormatSwizzle<0, 1, 2, 3>, 1726 Defaults<0, 0, 0, 0x3f800000> 1727 { 1728 static const uint32_t bpp{ 32 }; 1729 static const uint32_t numComps{ 4 }; 1730 static const bool hasAlpha{ true }; 1731 static const uint32_t alphaComp{ 3 }; 1732 static const bool isSRGB{ false }; 1733 static const bool isBC{ false }; 1734 static const bool isSubsampled{ false }; 1735 static const uint32_t bcWidth{ 1 }; 1736 static const uint32_t bcHeight{ 1 }; 1737 1738 typedef Transpose8_8_8_8 TransposeT; 1739 typedef Format4<8, 8, 8, 8> FormatT; 1740 }; 1741 1742 ////////////////////////////////////////////////////////////////////////// 1743 /// FormatTraits<R16G16_SSCALED> - Format traits specialization for R16G16_SSCALED 1744 ////////////////////////////////////////////////////////////////////////// 1745 template<> struct FormatTraits<R16G16_SSCALED> : 1746 ComponentTraits<SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16>, 1747 FormatSwizzle<0, 1>, 1748 Defaults<0, 0, 0, 0x3f800000> 1749 { 1750 static const uint32_t bpp{ 32 }; 1751 static const uint32_t numComps{ 2 }; 1752 static const bool hasAlpha{ false }; 1753 static const uint32_t alphaComp{ 0 }; 1754 static const bool isSRGB{ false }; 1755 static const bool isBC{ false }; 1756 static const bool isSubsampled{ false }; 1757 static const uint32_t bcWidth{ 1 }; 1758 static const uint32_t bcHeight{ 1 }; 1759 1760 typedef Transpose16_16 TransposeT; 1761 typedef Format2<16, 16> FormatT; 1762 }; 1763 1764 ////////////////////////////////////////////////////////////////////////// 1765 /// FormatTraits<R16G16_USCALED> - Format traits specialization for R16G16_USCALED 1766 ////////////////////////////////////////////////////////////////////////// 1767 template<> struct FormatTraits<R16G16_USCALED> : 1768 ComponentTraits<SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16>, 1769 FormatSwizzle<0, 1>, 1770 Defaults<0, 0, 0, 0x3f800000> 1771 { 1772 static const uint32_t bpp{ 32 }; 1773 static const uint32_t numComps{ 2 }; 1774 static const bool hasAlpha{ false }; 1775 static const uint32_t alphaComp{ 0 }; 1776 static const bool isSRGB{ false }; 1777 static const bool isBC{ false }; 1778 static const bool isSubsampled{ false }; 1779 static const uint32_t bcWidth{ 1 }; 1780 static const uint32_t bcHeight{ 1 }; 1781 1782 typedef Transpose16_16 TransposeT; 1783 typedef Format2<16, 16> FormatT; 1784 }; 1785 1786 ////////////////////////////////////////////////////////////////////////// 1787 /// FormatTraits<R32_SSCALED> - Format traits specialization for R32_SSCALED 1788 ////////////////////////////////////////////////////////////////////////// 1789 template<> struct FormatTraits<R32_SSCALED> : 1790 ComponentTraits<SWR_TYPE_SSCALED, 32>, 1791 FormatSwizzle<0>, 1792 Defaults<0, 0, 0, 0x3f800000> 1793 { 1794 static const uint32_t bpp{ 32 }; 1795 static const uint32_t numComps{ 1 }; 1796 static const bool hasAlpha{ false }; 1797 static const uint32_t alphaComp{ 0 }; 1798 static const bool isSRGB{ false }; 1799 static const bool isBC{ false }; 1800 static const bool isSubsampled{ false }; 1801 static const uint32_t bcWidth{ 1 }; 1802 static const uint32_t bcHeight{ 1 }; 1803 1804 typedef TransposeSingleComponent<32> TransposeT; 1805 typedef Format1<32> FormatT; 1806 }; 1807 1808 ////////////////////////////////////////////////////////////////////////// 1809 /// FormatTraits<R32_USCALED> - Format traits specialization for R32_USCALED 1810 ////////////////////////////////////////////////////////////////////////// 1811 template<> struct FormatTraits<R32_USCALED> : 1812 ComponentTraits<SWR_TYPE_USCALED, 32>, 1813 FormatSwizzle<0>, 1814 Defaults<0, 0, 0, 0x3f800000> 1815 { 1816 static const uint32_t bpp{ 32 }; 1817 static const uint32_t numComps{ 1 }; 1818 static const bool hasAlpha{ false }; 1819 static const uint32_t alphaComp{ 0 }; 1820 static const bool isSRGB{ false }; 1821 static const bool isBC{ false }; 1822 static const bool isSubsampled{ false }; 1823 static const uint32_t bcWidth{ 1 }; 1824 static const uint32_t bcHeight{ 1 }; 1825 1826 typedef TransposeSingleComponent<32> TransposeT; 1827 typedef Format1<32> FormatT; 1828 }; 1829 1830 ////////////////////////////////////////////////////////////////////////// 1831 /// FormatTraits<B5G6R5_UNORM> - Format traits specialization for B5G6R5_UNORM 1832 ////////////////////////////////////////////////////////////////////////// 1833 template<> struct FormatTraits<B5G6R5_UNORM> : 1834 ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 6, SWR_TYPE_UNORM, 5>, 1835 FormatSwizzle<2, 1, 0>, 1836 Defaults<0, 0, 0, 0x3f800000> 1837 { 1838 static const uint32_t bpp{ 16 }; 1839 static const uint32_t numComps{ 3 }; 1840 static const bool hasAlpha{ false }; 1841 static const uint32_t alphaComp{ 0 }; 1842 static const bool isSRGB{ false }; 1843 static const bool isBC{ false }; 1844 static const bool isSubsampled{ false }; 1845 static const uint32_t bcWidth{ 1 }; 1846 static const uint32_t bcHeight{ 1 }; 1847 1848 typedef Transpose5_6_5 TransposeT; 1849 typedef Format3<5, 6, 5> FormatT; 1850 }; 1851 1852 ////////////////////////////////////////////////////////////////////////// 1853 /// FormatTraits<B5G6R5_UNORM_SRGB> - Format traits specialization for B5G6R5_UNORM_SRGB 1854 ////////////////////////////////////////////////////////////////////////// 1855 template<> struct FormatTraits<B5G6R5_UNORM_SRGB> : 1856 ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 6, SWR_TYPE_UNORM, 5>, 1857 FormatSwizzle<2, 1, 0>, 1858 Defaults<0, 0, 0, 0x3f800000> 1859 { 1860 static const uint32_t bpp{ 16 }; 1861 static const uint32_t numComps{ 3 }; 1862 static const bool hasAlpha{ false }; 1863 static const uint32_t alphaComp{ 0 }; 1864 static const bool isSRGB{ true }; 1865 static const bool isBC{ false }; 1866 static const bool isSubsampled{ false }; 1867 static const uint32_t bcWidth{ 1 }; 1868 static const uint32_t bcHeight{ 1 }; 1869 1870 typedef Transpose5_6_5 TransposeT; 1871 typedef Format3<5, 6, 5> FormatT; 1872 }; 1873 1874 ////////////////////////////////////////////////////////////////////////// 1875 /// FormatTraits<B5G5R5A1_UNORM> - Format traits specialization for B5G5R5A1_UNORM 1876 ////////////////////////////////////////////////////////////////////////// 1877 template<> struct FormatTraits<B5G5R5A1_UNORM> : 1878 ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 1>, 1879 FormatSwizzle<2, 1, 0, 3>, 1880 Defaults<0, 0, 0, 0x3f800000> 1881 { 1882 static const uint32_t bpp{ 16 }; 1883 static const uint32_t numComps{ 4 }; 1884 static const bool hasAlpha{ true }; 1885 static const uint32_t alphaComp{ 3 }; 1886 static const bool isSRGB{ false }; 1887 static const bool isBC{ false }; 1888 static const bool isSubsampled{ false }; 1889 static const uint32_t bcWidth{ 1 }; 1890 static const uint32_t bcHeight{ 1 }; 1891 1892 typedef Transpose5_5_5_1 TransposeT; 1893 typedef Format4<5, 5, 5, 1> FormatT; 1894 }; 1895 1896 ////////////////////////////////////////////////////////////////////////// 1897 /// FormatTraits<B5G5R5A1_UNORM_SRGB> - Format traits specialization for B5G5R5A1_UNORM_SRGB 1898 ////////////////////////////////////////////////////////////////////////// 1899 template<> struct FormatTraits<B5G5R5A1_UNORM_SRGB> : 1900 ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 1>, 1901 FormatSwizzle<2, 1, 0, 3>, 1902 Defaults<0, 0, 0, 0x3f800000> 1903 { 1904 static const uint32_t bpp{ 16 }; 1905 static const uint32_t numComps{ 4 }; 1906 static const bool hasAlpha{ true }; 1907 static const uint32_t alphaComp{ 3 }; 1908 static const bool isSRGB{ true }; 1909 static const bool isBC{ false }; 1910 static const bool isSubsampled{ false }; 1911 static const uint32_t bcWidth{ 1 }; 1912 static const uint32_t bcHeight{ 1 }; 1913 1914 typedef Transpose5_5_5_1 TransposeT; 1915 typedef Format4<5, 5, 5, 1> FormatT; 1916 }; 1917 1918 ////////////////////////////////////////////////////////////////////////// 1919 /// FormatTraits<B4G4R4A4_UNORM> - Format traits specialization for B4G4R4A4_UNORM 1920 ////////////////////////////////////////////////////////////////////////// 1921 template<> struct FormatTraits<B4G4R4A4_UNORM> : 1922 ComponentTraits<SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4>, 1923 FormatSwizzle<2, 1, 0, 3>, 1924 Defaults<0, 0, 0, 0x3f800000> 1925 { 1926 static const uint32_t bpp{ 16 }; 1927 static const uint32_t numComps{ 4 }; 1928 static const bool hasAlpha{ true }; 1929 static const uint32_t alphaComp{ 3 }; 1930 static const bool isSRGB{ false }; 1931 static const bool isBC{ false }; 1932 static const bool isSubsampled{ false }; 1933 static const uint32_t bcWidth{ 1 }; 1934 static const uint32_t bcHeight{ 1 }; 1935 1936 typedef Transpose4_4_4_4 TransposeT; 1937 typedef Format4<4, 4, 4, 4> FormatT; 1938 }; 1939 1940 ////////////////////////////////////////////////////////////////////////// 1941 /// FormatTraits<B4G4R4A4_UNORM_SRGB> - Format traits specialization for B4G4R4A4_UNORM_SRGB 1942 ////////////////////////////////////////////////////////////////////////// 1943 template<> struct FormatTraits<B4G4R4A4_UNORM_SRGB> : 1944 ComponentTraits<SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4>, 1945 FormatSwizzle<2, 1, 0, 3>, 1946 Defaults<0, 0, 0, 0x3f800000> 1947 { 1948 static const uint32_t bpp{ 16 }; 1949 static const uint32_t numComps{ 4 }; 1950 static const bool hasAlpha{ true }; 1951 static const uint32_t alphaComp{ 3 }; 1952 static const bool isSRGB{ true }; 1953 static const bool isBC{ false }; 1954 static const bool isSubsampled{ false }; 1955 static const uint32_t bcWidth{ 1 }; 1956 static const uint32_t bcHeight{ 1 }; 1957 1958 typedef Transpose4_4_4_4 TransposeT; 1959 typedef Format4<4, 4, 4, 4> FormatT; 1960 }; 1961 1962 ////////////////////////////////////////////////////////////////////////// 1963 /// FormatTraits<R8G8_UNORM> - Format traits specialization for R8G8_UNORM 1964 ////////////////////////////////////////////////////////////////////////// 1965 template<> struct FormatTraits<R8G8_UNORM> : 1966 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>, 1967 FormatSwizzle<0, 1>, 1968 Defaults<0, 0, 0, 0x3f800000> 1969 { 1970 static const uint32_t bpp{ 16 }; 1971 static const uint32_t numComps{ 2 }; 1972 static const bool hasAlpha{ false }; 1973 static const uint32_t alphaComp{ 0 }; 1974 static const bool isSRGB{ false }; 1975 static const bool isBC{ false }; 1976 static const bool isSubsampled{ false }; 1977 static const uint32_t bcWidth{ 1 }; 1978 static const uint32_t bcHeight{ 1 }; 1979 1980 typedef Transpose8_8 TransposeT; 1981 typedef Format2<8, 8> FormatT; 1982 }; 1983 1984 ////////////////////////////////////////////////////////////////////////// 1985 /// FormatTraits<R8G8_SNORM> - Format traits specialization for R8G8_SNORM 1986 ////////////////////////////////////////////////////////////////////////// 1987 template<> struct FormatTraits<R8G8_SNORM> : 1988 ComponentTraits<SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8>, 1989 FormatSwizzle<0, 1>, 1990 Defaults<0, 0, 0, 0x3f800000> 1991 { 1992 static const uint32_t bpp{ 16 }; 1993 static const uint32_t numComps{ 2 }; 1994 static const bool hasAlpha{ false }; 1995 static const uint32_t alphaComp{ 0 }; 1996 static const bool isSRGB{ false }; 1997 static const bool isBC{ false }; 1998 static const bool isSubsampled{ false }; 1999 static const uint32_t bcWidth{ 1 }; 2000 static const uint32_t bcHeight{ 1 }; 2001 2002 typedef Transpose8_8 TransposeT; 2003 typedef Format2<8, 8> FormatT; 2004 }; 2005 2006 ////////////////////////////////////////////////////////////////////////// 2007 /// FormatTraits<R8G8_SINT> - Format traits specialization for R8G8_SINT 2008 ////////////////////////////////////////////////////////////////////////// 2009 template<> struct FormatTraits<R8G8_SINT> : 2010 ComponentTraits<SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8>, 2011 FormatSwizzle<0, 1>, 2012 Defaults<0, 0, 0, 0x1> 2013 { 2014 static const uint32_t bpp{ 16 }; 2015 static const uint32_t numComps{ 2 }; 2016 static const bool hasAlpha{ false }; 2017 static const uint32_t alphaComp{ 0 }; 2018 static const bool isSRGB{ false }; 2019 static const bool isBC{ false }; 2020 static const bool isSubsampled{ false }; 2021 static const uint32_t bcWidth{ 1 }; 2022 static const uint32_t bcHeight{ 1 }; 2023 2024 typedef Transpose8_8 TransposeT; 2025 typedef Format2<8, 8> FormatT; 2026 }; 2027 2028 ////////////////////////////////////////////////////////////////////////// 2029 /// FormatTraits<R8G8_UINT> - Format traits specialization for R8G8_UINT 2030 ////////////////////////////////////////////////////////////////////////// 2031 template<> struct FormatTraits<R8G8_UINT> : 2032 ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>, 2033 FormatSwizzle<0, 1>, 2034 Defaults<0, 0, 0, 0x1> 2035 { 2036 static const uint32_t bpp{ 16 }; 2037 static const uint32_t numComps{ 2 }; 2038 static const bool hasAlpha{ false }; 2039 static const uint32_t alphaComp{ 0 }; 2040 static const bool isSRGB{ false }; 2041 static const bool isBC{ false }; 2042 static const bool isSubsampled{ false }; 2043 static const uint32_t bcWidth{ 1 }; 2044 static const uint32_t bcHeight{ 1 }; 2045 2046 typedef Transpose8_8 TransposeT; 2047 typedef Format2<8, 8> FormatT; 2048 }; 2049 2050 ////////////////////////////////////////////////////////////////////////// 2051 /// FormatTraits<R16_UNORM> - Format traits specialization for R16_UNORM 2052 ////////////////////////////////////////////////////////////////////////// 2053 template<> struct FormatTraits<R16_UNORM> : 2054 ComponentTraits<SWR_TYPE_UNORM, 16>, 2055 FormatSwizzle<0>, 2056 Defaults<0, 0, 0, 0x3f800000> 2057 { 2058 static const uint32_t bpp{ 16 }; 2059 static const uint32_t numComps{ 1 }; 2060 static const bool hasAlpha{ false }; 2061 static const uint32_t alphaComp{ 0 }; 2062 static const bool isSRGB{ false }; 2063 static const bool isBC{ false }; 2064 static const bool isSubsampled{ false }; 2065 static const uint32_t bcWidth{ 1 }; 2066 static const uint32_t bcHeight{ 1 }; 2067 2068 typedef TransposeSingleComponent<16> TransposeT; 2069 typedef Format1<16> FormatT; 2070 }; 2071 2072 ////////////////////////////////////////////////////////////////////////// 2073 /// FormatTraits<R16_SNORM> - Format traits specialization for R16_SNORM 2074 ////////////////////////////////////////////////////////////////////////// 2075 template<> struct FormatTraits<R16_SNORM> : 2076 ComponentTraits<SWR_TYPE_SNORM, 16>, 2077 FormatSwizzle<0>, 2078 Defaults<0, 0, 0, 0x3f800000> 2079 { 2080 static const uint32_t bpp{ 16 }; 2081 static const uint32_t numComps{ 1 }; 2082 static const bool hasAlpha{ false }; 2083 static const uint32_t alphaComp{ 0 }; 2084 static const bool isSRGB{ false }; 2085 static const bool isBC{ false }; 2086 static const bool isSubsampled{ false }; 2087 static const uint32_t bcWidth{ 1 }; 2088 static const uint32_t bcHeight{ 1 }; 2089 2090 typedef TransposeSingleComponent<16> TransposeT; 2091 typedef Format1<16> FormatT; 2092 }; 2093 2094 ////////////////////////////////////////////////////////////////////////// 2095 /// FormatTraits<R16_SINT> - Format traits specialization for R16_SINT 2096 ////////////////////////////////////////////////////////////////////////// 2097 template<> struct FormatTraits<R16_SINT> : 2098 ComponentTraits<SWR_TYPE_SINT, 16>, 2099 FormatSwizzle<0>, 2100 Defaults<0, 0, 0, 0x1> 2101 { 2102 static const uint32_t bpp{ 16 }; 2103 static const uint32_t numComps{ 1 }; 2104 static const bool hasAlpha{ false }; 2105 static const uint32_t alphaComp{ 0 }; 2106 static const bool isSRGB{ false }; 2107 static const bool isBC{ false }; 2108 static const bool isSubsampled{ false }; 2109 static const uint32_t bcWidth{ 1 }; 2110 static const uint32_t bcHeight{ 1 }; 2111 2112 typedef TransposeSingleComponent<16> TransposeT; 2113 typedef Format1<16> FormatT; 2114 }; 2115 2116 ////////////////////////////////////////////////////////////////////////// 2117 /// FormatTraits<R16_UINT> - Format traits specialization for R16_UINT 2118 ////////////////////////////////////////////////////////////////////////// 2119 template<> struct FormatTraits<R16_UINT> : 2120 ComponentTraits<SWR_TYPE_UINT, 16>, 2121 FormatSwizzle<0>, 2122 Defaults<0, 0, 0, 0x1> 2123 { 2124 static const uint32_t bpp{ 16 }; 2125 static const uint32_t numComps{ 1 }; 2126 static const bool hasAlpha{ false }; 2127 static const uint32_t alphaComp{ 0 }; 2128 static const bool isSRGB{ false }; 2129 static const bool isBC{ false }; 2130 static const bool isSubsampled{ false }; 2131 static const uint32_t bcWidth{ 1 }; 2132 static const uint32_t bcHeight{ 1 }; 2133 2134 typedef TransposeSingleComponent<16> TransposeT; 2135 typedef Format1<16> FormatT; 2136 }; 2137 2138 ////////////////////////////////////////////////////////////////////////// 2139 /// FormatTraits<R16_FLOAT> - Format traits specialization for R16_FLOAT 2140 ////////////////////////////////////////////////////////////////////////// 2141 template<> struct FormatTraits<R16_FLOAT> : 2142 ComponentTraits<SWR_TYPE_FLOAT, 16>, 2143 FormatSwizzle<0>, 2144 Defaults<0, 0, 0, 0x3f800000> 2145 { 2146 static const uint32_t bpp{ 16 }; 2147 static const uint32_t numComps{ 1 }; 2148 static const bool hasAlpha{ false }; 2149 static const uint32_t alphaComp{ 0 }; 2150 static const bool isSRGB{ false }; 2151 static const bool isBC{ false }; 2152 static const bool isSubsampled{ false }; 2153 static const uint32_t bcWidth{ 1 }; 2154 static const uint32_t bcHeight{ 1 }; 2155 2156 typedef TransposeSingleComponent<16> TransposeT; 2157 typedef Format1<16> FormatT; 2158 }; 2159 2160 ////////////////////////////////////////////////////////////////////////// 2161 /// FormatTraits<I16_UNORM> - Format traits specialization for I16_UNORM 2162 ////////////////////////////////////////////////////////////////////////// 2163 template<> struct FormatTraits<I16_UNORM> : 2164 ComponentTraits<SWR_TYPE_UNORM, 16>, 2165 FormatSwizzle<0>, 2166 Defaults<0, 0, 0, 0x3f800000> 2167 { 2168 static const uint32_t bpp{ 16 }; 2169 static const uint32_t numComps{ 1 }; 2170 static const bool hasAlpha{ false }; 2171 static const uint32_t alphaComp{ 0 }; 2172 static const bool isSRGB{ false }; 2173 static const bool isBC{ false }; 2174 static const bool isSubsampled{ false }; 2175 static const uint32_t bcWidth{ 1 }; 2176 static const uint32_t bcHeight{ 1 }; 2177 2178 typedef TransposeSingleComponent<16> TransposeT; 2179 typedef Format1<16> FormatT; 2180 }; 2181 2182 ////////////////////////////////////////////////////////////////////////// 2183 /// FormatTraits<L16_UNORM> - Format traits specialization for L16_UNORM 2184 ////////////////////////////////////////////////////////////////////////// 2185 template<> struct FormatTraits<L16_UNORM> : 2186 ComponentTraits<SWR_TYPE_UNORM, 16>, 2187 FormatSwizzle<0>, 2188 Defaults<0, 0, 0, 0x3f800000> 2189 { 2190 static const uint32_t bpp{ 16 }; 2191 static const uint32_t numComps{ 1 }; 2192 static const bool hasAlpha{ false }; 2193 static const uint32_t alphaComp{ 0 }; 2194 static const bool isSRGB{ false }; 2195 static const bool isBC{ false }; 2196 static const bool isSubsampled{ false }; 2197 static const uint32_t bcWidth{ 1 }; 2198 static const uint32_t bcHeight{ 1 }; 2199 2200 typedef TransposeSingleComponent<16> TransposeT; 2201 typedef Format1<16> FormatT; 2202 }; 2203 2204 ////////////////////////////////////////////////////////////////////////// 2205 /// FormatTraits<A16_UNORM> - Format traits specialization for A16_UNORM 2206 ////////////////////////////////////////////////////////////////////////// 2207 template<> struct FormatTraits<A16_UNORM> : 2208 ComponentTraits<SWR_TYPE_UNORM, 16>, 2209 FormatSwizzle<3>, 2210 Defaults<0, 0, 0, 0x3f800000> 2211 { 2212 static const uint32_t bpp{ 16 }; 2213 static const uint32_t numComps{ 1 }; 2214 static const bool hasAlpha{ true }; 2215 static const uint32_t alphaComp{ 0 }; 2216 static const bool isSRGB{ false }; 2217 static const bool isBC{ false }; 2218 static const bool isSubsampled{ false }; 2219 static const uint32_t bcWidth{ 1 }; 2220 static const uint32_t bcHeight{ 1 }; 2221 2222 typedef TransposeSingleComponent<16> TransposeT; 2223 typedef Format1<16> FormatT; 2224 }; 2225 2226 ////////////////////////////////////////////////////////////////////////// 2227 /// FormatTraits<L8A8_UNORM> - Format traits specialization for L8A8_UNORM 2228 ////////////////////////////////////////////////////////////////////////// 2229 template<> struct FormatTraits<L8A8_UNORM> : 2230 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>, 2231 FormatSwizzle<0, 3>, 2232 Defaults<0, 0, 0, 0x3f800000> 2233 { 2234 static const uint32_t bpp{ 16 }; 2235 static const uint32_t numComps{ 2 }; 2236 static const bool hasAlpha{ true }; 2237 static const uint32_t alphaComp{ 1 }; 2238 static const bool isSRGB{ false }; 2239 static const bool isBC{ false }; 2240 static const bool isSubsampled{ false }; 2241 static const uint32_t bcWidth{ 1 }; 2242 static const uint32_t bcHeight{ 1 }; 2243 2244 typedef Transpose8_8 TransposeT; 2245 typedef Format2<8, 8> FormatT; 2246 }; 2247 2248 ////////////////////////////////////////////////////////////////////////// 2249 /// FormatTraits<I16_FLOAT> - Format traits specialization for I16_FLOAT 2250 ////////////////////////////////////////////////////////////////////////// 2251 template<> struct FormatTraits<I16_FLOAT> : 2252 ComponentTraits<SWR_TYPE_FLOAT, 16>, 2253 FormatSwizzle<0>, 2254 Defaults<0, 0, 0, 0x3f800000> 2255 { 2256 static const uint32_t bpp{ 16 }; 2257 static const uint32_t numComps{ 1 }; 2258 static const bool hasAlpha{ false }; 2259 static const uint32_t alphaComp{ 0 }; 2260 static const bool isSRGB{ false }; 2261 static const bool isBC{ false }; 2262 static const bool isSubsampled{ false }; 2263 static const uint32_t bcWidth{ 1 }; 2264 static const uint32_t bcHeight{ 1 }; 2265 2266 typedef TransposeSingleComponent<16> TransposeT; 2267 typedef Format1<16> FormatT; 2268 }; 2269 2270 ////////////////////////////////////////////////////////////////////////// 2271 /// FormatTraits<L16_FLOAT> - Format traits specialization for L16_FLOAT 2272 ////////////////////////////////////////////////////////////////////////// 2273 template<> struct FormatTraits<L16_FLOAT> : 2274 ComponentTraits<SWR_TYPE_FLOAT, 16>, 2275 FormatSwizzle<0>, 2276 Defaults<0, 0, 0, 0x3f800000> 2277 { 2278 static const uint32_t bpp{ 16 }; 2279 static const uint32_t numComps{ 1 }; 2280 static const bool hasAlpha{ false }; 2281 static const uint32_t alphaComp{ 0 }; 2282 static const bool isSRGB{ false }; 2283 static const bool isBC{ false }; 2284 static const bool isSubsampled{ false }; 2285 static const uint32_t bcWidth{ 1 }; 2286 static const uint32_t bcHeight{ 1 }; 2287 2288 typedef TransposeSingleComponent<16> TransposeT; 2289 typedef Format1<16> FormatT; 2290 }; 2291 2292 ////////////////////////////////////////////////////////////////////////// 2293 /// FormatTraits<A16_FLOAT> - Format traits specialization for A16_FLOAT 2294 ////////////////////////////////////////////////////////////////////////// 2295 template<> struct FormatTraits<A16_FLOAT> : 2296 ComponentTraits<SWR_TYPE_FLOAT, 16>, 2297 FormatSwizzle<3>, 2298 Defaults<0, 0, 0, 0x3f800000> 2299 { 2300 static const uint32_t bpp{ 16 }; 2301 static const uint32_t numComps{ 1 }; 2302 static const bool hasAlpha{ true }; 2303 static const uint32_t alphaComp{ 0 }; 2304 static const bool isSRGB{ false }; 2305 static const bool isBC{ false }; 2306 static const bool isSubsampled{ false }; 2307 static const uint32_t bcWidth{ 1 }; 2308 static const uint32_t bcHeight{ 1 }; 2309 2310 typedef TransposeSingleComponent<16> TransposeT; 2311 typedef Format1<16> FormatT; 2312 }; 2313 2314 ////////////////////////////////////////////////////////////////////////// 2315 /// FormatTraits<L8A8_UNORM_SRGB> - Format traits specialization for L8A8_UNORM_SRGB 2316 ////////////////////////////////////////////////////////////////////////// 2317 template<> struct FormatTraits<L8A8_UNORM_SRGB> : 2318 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>, 2319 FormatSwizzle<0, 3>, 2320 Defaults<0, 0, 0, 0x3f800000> 2321 { 2322 static const uint32_t bpp{ 16 }; 2323 static const uint32_t numComps{ 2 }; 2324 static const bool hasAlpha{ true }; 2325 static const uint32_t alphaComp{ 1 }; 2326 static const bool isSRGB{ true }; 2327 static const bool isBC{ false }; 2328 static const bool isSubsampled{ false }; 2329 static const uint32_t bcWidth{ 1 }; 2330 static const uint32_t bcHeight{ 1 }; 2331 2332 typedef Transpose8_8 TransposeT; 2333 typedef Format2<8, 8> FormatT; 2334 }; 2335 2336 ////////////////////////////////////////////////////////////////////////// 2337 /// FormatTraits<B5G5R5X1_UNORM> - Format traits specialization for B5G5R5X1_UNORM 2338 ////////////////////////////////////////////////////////////////////////// 2339 template<> struct FormatTraits<B5G5R5X1_UNORM> : 2340 ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNUSED, 1>, 2341 FormatSwizzle<2, 1, 0, 3>, 2342 Defaults<0, 0, 0, 0x3f800000> 2343 { 2344 static const uint32_t bpp{ 16 }; 2345 static const uint32_t numComps{ 3 }; 2346 static const bool hasAlpha{ false }; 2347 static const uint32_t alphaComp{ 0 }; 2348 static const bool isSRGB{ false }; 2349 static const bool isBC{ false }; 2350 static const bool isSubsampled{ false }; 2351 static const uint32_t bcWidth{ 1 }; 2352 static const uint32_t bcHeight{ 1 }; 2353 2354 typedef Transpose5_5_5_1 TransposeT; 2355 typedef Format4<5, 5, 5, 1> FormatT; 2356 }; 2357 2358 ////////////////////////////////////////////////////////////////////////// 2359 /// FormatTraits<B5G5R5X1_UNORM_SRGB> - Format traits specialization for B5G5R5X1_UNORM_SRGB 2360 ////////////////////////////////////////////////////////////////////////// 2361 template<> struct FormatTraits<B5G5R5X1_UNORM_SRGB> : 2362 ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNUSED, 1>, 2363 FormatSwizzle<2, 1, 0, 3>, 2364 Defaults<0, 0, 0, 0x3f800000> 2365 { 2366 static const uint32_t bpp{ 16 }; 2367 static const uint32_t numComps{ 3 }; 2368 static const bool hasAlpha{ false }; 2369 static const uint32_t alphaComp{ 0 }; 2370 static const bool isSRGB{ true }; 2371 static const bool isBC{ false }; 2372 static const bool isSubsampled{ false }; 2373 static const uint32_t bcWidth{ 1 }; 2374 static const uint32_t bcHeight{ 1 }; 2375 2376 typedef Transpose5_5_5_1 TransposeT; 2377 typedef Format4<5, 5, 5, 1> FormatT; 2378 }; 2379 2380 ////////////////////////////////////////////////////////////////////////// 2381 /// FormatTraits<R8G8_SSCALED> - Format traits specialization for R8G8_SSCALED 2382 ////////////////////////////////////////////////////////////////////////// 2383 template<> struct FormatTraits<R8G8_SSCALED> : 2384 ComponentTraits<SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8>, 2385 FormatSwizzle<0, 1>, 2386 Defaults<0, 0, 0, 0x3f800000> 2387 { 2388 static const uint32_t bpp{ 16 }; 2389 static const uint32_t numComps{ 2 }; 2390 static const bool hasAlpha{ false }; 2391 static const uint32_t alphaComp{ 0 }; 2392 static const bool isSRGB{ false }; 2393 static const bool isBC{ false }; 2394 static const bool isSubsampled{ false }; 2395 static const uint32_t bcWidth{ 1 }; 2396 static const uint32_t bcHeight{ 1 }; 2397 2398 typedef Transpose8_8 TransposeT; 2399 typedef Format2<8, 8> FormatT; 2400 }; 2401 2402 ////////////////////////////////////////////////////////////////////////// 2403 /// FormatTraits<R8G8_USCALED> - Format traits specialization for R8G8_USCALED 2404 ////////////////////////////////////////////////////////////////////////// 2405 template<> struct FormatTraits<R8G8_USCALED> : 2406 ComponentTraits<SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8>, 2407 FormatSwizzle<0, 1>, 2408 Defaults<0, 0, 0, 0x3f800000> 2409 { 2410 static const uint32_t bpp{ 16 }; 2411 static const uint32_t numComps{ 2 }; 2412 static const bool hasAlpha{ false }; 2413 static const uint32_t alphaComp{ 0 }; 2414 static const bool isSRGB{ false }; 2415 static const bool isBC{ false }; 2416 static const bool isSubsampled{ false }; 2417 static const uint32_t bcWidth{ 1 }; 2418 static const uint32_t bcHeight{ 1 }; 2419 2420 typedef Transpose8_8 TransposeT; 2421 typedef Format2<8, 8> FormatT; 2422 }; 2423 2424 ////////////////////////////////////////////////////////////////////////// 2425 /// FormatTraits<R16_SSCALED> - Format traits specialization for R16_SSCALED 2426 ////////////////////////////////////////////////////////////////////////// 2427 template<> struct FormatTraits<R16_SSCALED> : 2428 ComponentTraits<SWR_TYPE_SSCALED, 16>, 2429 FormatSwizzle<0>, 2430 Defaults<0, 0, 0, 0x3f800000> 2431 { 2432 static const uint32_t bpp{ 16 }; 2433 static const uint32_t numComps{ 1 }; 2434 static const bool hasAlpha{ false }; 2435 static const uint32_t alphaComp{ 0 }; 2436 static const bool isSRGB{ false }; 2437 static const bool isBC{ false }; 2438 static const bool isSubsampled{ false }; 2439 static const uint32_t bcWidth{ 1 }; 2440 static const uint32_t bcHeight{ 1 }; 2441 2442 typedef TransposeSingleComponent<16> TransposeT; 2443 typedef Format1<16> FormatT; 2444 }; 2445 2446 ////////////////////////////////////////////////////////////////////////// 2447 /// FormatTraits<R16_USCALED> - Format traits specialization for R16_USCALED 2448 ////////////////////////////////////////////////////////////////////////// 2449 template<> struct FormatTraits<R16_USCALED> : 2450 ComponentTraits<SWR_TYPE_USCALED, 16>, 2451 FormatSwizzle<0>, 2452 Defaults<0, 0, 0, 0x3f800000> 2453 { 2454 static const uint32_t bpp{ 16 }; 2455 static const uint32_t numComps{ 1 }; 2456 static const bool hasAlpha{ false }; 2457 static const uint32_t alphaComp{ 0 }; 2458 static const bool isSRGB{ false }; 2459 static const bool isBC{ false }; 2460 static const bool isSubsampled{ false }; 2461 static const uint32_t bcWidth{ 1 }; 2462 static const uint32_t bcHeight{ 1 }; 2463 2464 typedef TransposeSingleComponent<16> TransposeT; 2465 typedef Format1<16> FormatT; 2466 }; 2467 2468 ////////////////////////////////////////////////////////////////////////// 2469 /// FormatTraits<A1B5G5R5_UNORM> - Format traits specialization for A1B5G5R5_UNORM 2470 ////////////////////////////////////////////////////////////////////////// 2471 template<> struct FormatTraits<A1B5G5R5_UNORM> : 2472 ComponentTraits<SWR_TYPE_UNORM, 1, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5>, 2473 FormatSwizzle<3, 2, 1, 0>, 2474 Defaults<0, 0, 0, 0x3f800000> 2475 { 2476 static const uint32_t bpp{ 16 }; 2477 static const uint32_t numComps{ 4 }; 2478 static const bool hasAlpha{ true }; 2479 static const uint32_t alphaComp{ 3 }; 2480 static const bool isSRGB{ false }; 2481 static const bool isBC{ false }; 2482 static const bool isSubsampled{ false }; 2483 static const uint32_t bcWidth{ 1 }; 2484 static const uint32_t bcHeight{ 1 }; 2485 2486 typedef Transpose1_5_5_5 TransposeT; 2487 typedef Format4<1, 5, 5, 5> FormatT; 2488 }; 2489 2490 ////////////////////////////////////////////////////////////////////////// 2491 /// FormatTraits<A4B4G4R4_UNORM> - Format traits specialization for A4B4G4R4_UNORM 2492 ////////////////////////////////////////////////////////////////////////// 2493 template<> struct FormatTraits<A4B4G4R4_UNORM> : 2494 ComponentTraits<SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4>, 2495 FormatSwizzle<3, 2, 1, 0>, 2496 Defaults<0, 0, 0, 0x3f800000> 2497 { 2498 static const uint32_t bpp{ 16 }; 2499 static const uint32_t numComps{ 4 }; 2500 static const bool hasAlpha{ true }; 2501 static const uint32_t alphaComp{ 3 }; 2502 static const bool isSRGB{ false }; 2503 static const bool isBC{ false }; 2504 static const bool isSubsampled{ false }; 2505 static const uint32_t bcWidth{ 1 }; 2506 static const uint32_t bcHeight{ 1 }; 2507 2508 typedef Transpose4_4_4_4 TransposeT; 2509 typedef Format4<4, 4, 4, 4> FormatT; 2510 }; 2511 2512 ////////////////////////////////////////////////////////////////////////// 2513 /// FormatTraits<L8A8_UINT> - Format traits specialization for L8A8_UINT 2514 ////////////////////////////////////////////////////////////////////////// 2515 template<> struct FormatTraits<L8A8_UINT> : 2516 ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>, 2517 FormatSwizzle<0, 3>, 2518 Defaults<0, 0, 0, 0x1> 2519 { 2520 static const uint32_t bpp{ 16 }; 2521 static const uint32_t numComps{ 2 }; 2522 static const bool hasAlpha{ true }; 2523 static const uint32_t alphaComp{ 1 }; 2524 static const bool isSRGB{ false }; 2525 static const bool isBC{ false }; 2526 static const bool isSubsampled{ false }; 2527 static const uint32_t bcWidth{ 1 }; 2528 static const uint32_t bcHeight{ 1 }; 2529 2530 typedef Transpose8_8 TransposeT; 2531 typedef Format2<8, 8> FormatT; 2532 }; 2533 2534 ////////////////////////////////////////////////////////////////////////// 2535 /// FormatTraits<L8A8_SINT> - Format traits specialization for L8A8_SINT 2536 ////////////////////////////////////////////////////////////////////////// 2537 template<> struct FormatTraits<L8A8_SINT> : 2538 ComponentTraits<SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8>, 2539 FormatSwizzle<0, 3>, 2540 Defaults<0, 0, 0, 0x1> 2541 { 2542 static const uint32_t bpp{ 16 }; 2543 static const uint32_t numComps{ 2 }; 2544 static const bool hasAlpha{ true }; 2545 static const uint32_t alphaComp{ 1 }; 2546 static const bool isSRGB{ false }; 2547 static const bool isBC{ false }; 2548 static const bool isSubsampled{ false }; 2549 static const uint32_t bcWidth{ 1 }; 2550 static const uint32_t bcHeight{ 1 }; 2551 2552 typedef Transpose8_8 TransposeT; 2553 typedef Format2<8, 8> FormatT; 2554 }; 2555 2556 ////////////////////////////////////////////////////////////////////////// 2557 /// FormatTraits<R8_UNORM> - Format traits specialization for R8_UNORM 2558 ////////////////////////////////////////////////////////////////////////// 2559 template<> struct FormatTraits<R8_UNORM> : 2560 ComponentTraits<SWR_TYPE_UNORM, 8>, 2561 FormatSwizzle<0>, 2562 Defaults<0, 0, 0, 0x3f800000> 2563 { 2564 static const uint32_t bpp{ 8 }; 2565 static const uint32_t numComps{ 1 }; 2566 static const bool hasAlpha{ false }; 2567 static const uint32_t alphaComp{ 0 }; 2568 static const bool isSRGB{ false }; 2569 static const bool isBC{ false }; 2570 static const bool isSubsampled{ false }; 2571 static const uint32_t bcWidth{ 1 }; 2572 static const uint32_t bcHeight{ 1 }; 2573 2574 typedef TransposeSingleComponent<8> TransposeT; 2575 typedef Format1<8> FormatT; 2576 }; 2577 2578 ////////////////////////////////////////////////////////////////////////// 2579 /// FormatTraits<R8_SNORM> - Format traits specialization for R8_SNORM 2580 ////////////////////////////////////////////////////////////////////////// 2581 template<> struct FormatTraits<R8_SNORM> : 2582 ComponentTraits<SWR_TYPE_SNORM, 8>, 2583 FormatSwizzle<0>, 2584 Defaults<0, 0, 0, 0x3f800000> 2585 { 2586 static const uint32_t bpp{ 8 }; 2587 static const uint32_t numComps{ 1 }; 2588 static const bool hasAlpha{ false }; 2589 static const uint32_t alphaComp{ 0 }; 2590 static const bool isSRGB{ false }; 2591 static const bool isBC{ false }; 2592 static const bool isSubsampled{ false }; 2593 static const uint32_t bcWidth{ 1 }; 2594 static const uint32_t bcHeight{ 1 }; 2595 2596 typedef TransposeSingleComponent<8> TransposeT; 2597 typedef Format1<8> FormatT; 2598 }; 2599 2600 ////////////////////////////////////////////////////////////////////////// 2601 /// FormatTraits<R8_SINT> - Format traits specialization for R8_SINT 2602 ////////////////////////////////////////////////////////////////////////// 2603 template<> struct FormatTraits<R8_SINT> : 2604 ComponentTraits<SWR_TYPE_SINT, 8>, 2605 FormatSwizzle<0>, 2606 Defaults<0, 0, 0, 0x1> 2607 { 2608 static const uint32_t bpp{ 8 }; 2609 static const uint32_t numComps{ 1 }; 2610 static const bool hasAlpha{ false }; 2611 static const uint32_t alphaComp{ 0 }; 2612 static const bool isSRGB{ false }; 2613 static const bool isBC{ false }; 2614 static const bool isSubsampled{ false }; 2615 static const uint32_t bcWidth{ 1 }; 2616 static const uint32_t bcHeight{ 1 }; 2617 2618 typedef TransposeSingleComponent<8> TransposeT; 2619 typedef Format1<8> FormatT; 2620 }; 2621 2622 ////////////////////////////////////////////////////////////////////////// 2623 /// FormatTraits<R8_UINT> - Format traits specialization for R8_UINT 2624 ////////////////////////////////////////////////////////////////////////// 2625 template<> struct FormatTraits<R8_UINT> : 2626 ComponentTraits<SWR_TYPE_UINT, 8>, 2627 FormatSwizzle<0>, 2628 Defaults<0, 0, 0, 0x1> 2629 { 2630 static const uint32_t bpp{ 8 }; 2631 static const uint32_t numComps{ 1 }; 2632 static const bool hasAlpha{ false }; 2633 static const uint32_t alphaComp{ 0 }; 2634 static const bool isSRGB{ false }; 2635 static const bool isBC{ false }; 2636 static const bool isSubsampled{ false }; 2637 static const uint32_t bcWidth{ 1 }; 2638 static const uint32_t bcHeight{ 1 }; 2639 2640 typedef TransposeSingleComponent<8> TransposeT; 2641 typedef Format1<8> FormatT; 2642 }; 2643 2644 ////////////////////////////////////////////////////////////////////////// 2645 /// FormatTraits<A8_UNORM> - Format traits specialization for A8_UNORM 2646 ////////////////////////////////////////////////////////////////////////// 2647 template<> struct FormatTraits<A8_UNORM> : 2648 ComponentTraits<SWR_TYPE_UNORM, 8>, 2649 FormatSwizzle<3>, 2650 Defaults<0, 0, 0, 0x3f800000> 2651 { 2652 static const uint32_t bpp{ 8 }; 2653 static const uint32_t numComps{ 1 }; 2654 static const bool hasAlpha{ true }; 2655 static const uint32_t alphaComp{ 0 }; 2656 static const bool isSRGB{ false }; 2657 static const bool isBC{ false }; 2658 static const bool isSubsampled{ false }; 2659 static const uint32_t bcWidth{ 1 }; 2660 static const uint32_t bcHeight{ 1 }; 2661 2662 typedef TransposeSingleComponent<8> TransposeT; 2663 typedef Format1<8> FormatT; 2664 }; 2665 2666 ////////////////////////////////////////////////////////////////////////// 2667 /// FormatTraits<I8_UNORM> - Format traits specialization for I8_UNORM 2668 ////////////////////////////////////////////////////////////////////////// 2669 template<> struct FormatTraits<I8_UNORM> : 2670 ComponentTraits<SWR_TYPE_UNORM, 8>, 2671 FormatSwizzle<0>, 2672 Defaults<0, 0, 0, 0x3f800000> 2673 { 2674 static const uint32_t bpp{ 8 }; 2675 static const uint32_t numComps{ 1 }; 2676 static const bool hasAlpha{ false }; 2677 static const uint32_t alphaComp{ 0 }; 2678 static const bool isSRGB{ false }; 2679 static const bool isBC{ false }; 2680 static const bool isSubsampled{ false }; 2681 static const uint32_t bcWidth{ 1 }; 2682 static const uint32_t bcHeight{ 1 }; 2683 2684 typedef TransposeSingleComponent<8> TransposeT; 2685 typedef Format1<8> FormatT; 2686 }; 2687 2688 ////////////////////////////////////////////////////////////////////////// 2689 /// FormatTraits<L8_UNORM> - Format traits specialization for L8_UNORM 2690 ////////////////////////////////////////////////////////////////////////// 2691 template<> struct FormatTraits<L8_UNORM> : 2692 ComponentTraits<SWR_TYPE_UNORM, 8>, 2693 FormatSwizzle<0>, 2694 Defaults<0, 0, 0, 0x3f800000> 2695 { 2696 static const uint32_t bpp{ 8 }; 2697 static const uint32_t numComps{ 1 }; 2698 static const bool hasAlpha{ false }; 2699 static const uint32_t alphaComp{ 0 }; 2700 static const bool isSRGB{ false }; 2701 static const bool isBC{ false }; 2702 static const bool isSubsampled{ false }; 2703 static const uint32_t bcWidth{ 1 }; 2704 static const uint32_t bcHeight{ 1 }; 2705 2706 typedef TransposeSingleComponent<8> TransposeT; 2707 typedef Format1<8> FormatT; 2708 }; 2709 2710 ////////////////////////////////////////////////////////////////////////// 2711 /// FormatTraits<R8_SSCALED> - Format traits specialization for R8_SSCALED 2712 ////////////////////////////////////////////////////////////////////////// 2713 template<> struct FormatTraits<R8_SSCALED> : 2714 ComponentTraits<SWR_TYPE_SSCALED, 8>, 2715 FormatSwizzle<0>, 2716 Defaults<0, 0, 0, 0x3f800000> 2717 { 2718 static const uint32_t bpp{ 8 }; 2719 static const uint32_t numComps{ 1 }; 2720 static const bool hasAlpha{ false }; 2721 static const uint32_t alphaComp{ 0 }; 2722 static const bool isSRGB{ false }; 2723 static const bool isBC{ false }; 2724 static const bool isSubsampled{ false }; 2725 static const uint32_t bcWidth{ 1 }; 2726 static const uint32_t bcHeight{ 1 }; 2727 2728 typedef TransposeSingleComponent<8> TransposeT; 2729 typedef Format1<8> FormatT; 2730 }; 2731 2732 ////////////////////////////////////////////////////////////////////////// 2733 /// FormatTraits<R8_USCALED> - Format traits specialization for R8_USCALED 2734 ////////////////////////////////////////////////////////////////////////// 2735 template<> struct FormatTraits<R8_USCALED> : 2736 ComponentTraits<SWR_TYPE_USCALED, 8>, 2737 FormatSwizzle<0>, 2738 Defaults<0, 0, 0, 0x3f800000> 2739 { 2740 static const uint32_t bpp{ 8 }; 2741 static const uint32_t numComps{ 1 }; 2742 static const bool hasAlpha{ false }; 2743 static const uint32_t alphaComp{ 0 }; 2744 static const bool isSRGB{ false }; 2745 static const bool isBC{ false }; 2746 static const bool isSubsampled{ false }; 2747 static const uint32_t bcWidth{ 1 }; 2748 static const uint32_t bcHeight{ 1 }; 2749 2750 typedef TransposeSingleComponent<8> TransposeT; 2751 typedef Format1<8> FormatT; 2752 }; 2753 2754 ////////////////////////////////////////////////////////////////////////// 2755 /// FormatTraits<L8_UNORM_SRGB> - Format traits specialization for L8_UNORM_SRGB 2756 ////////////////////////////////////////////////////////////////////////// 2757 template<> struct FormatTraits<L8_UNORM_SRGB> : 2758 ComponentTraits<SWR_TYPE_UNORM, 8>, 2759 FormatSwizzle<0>, 2760 Defaults<0, 0, 0, 0x3f800000> 2761 { 2762 static const uint32_t bpp{ 8 }; 2763 static const uint32_t numComps{ 1 }; 2764 static const bool hasAlpha{ false }; 2765 static const uint32_t alphaComp{ 0 }; 2766 static const bool isSRGB{ true }; 2767 static const bool isBC{ false }; 2768 static const bool isSubsampled{ false }; 2769 static const uint32_t bcWidth{ 1 }; 2770 static const uint32_t bcHeight{ 1 }; 2771 2772 typedef TransposeSingleComponent<8> TransposeT; 2773 typedef Format1<8> FormatT; 2774 }; 2775 2776 ////////////////////////////////////////////////////////////////////////// 2777 /// FormatTraits<L8_UINT> - Format traits specialization for L8_UINT 2778 ////////////////////////////////////////////////////////////////////////// 2779 template<> struct FormatTraits<L8_UINT> : 2780 ComponentTraits<SWR_TYPE_UINT, 8>, 2781 FormatSwizzle<0>, 2782 Defaults<0, 0, 0, 0x1> 2783 { 2784 static const uint32_t bpp{ 8 }; 2785 static const uint32_t numComps{ 1 }; 2786 static const bool hasAlpha{ false }; 2787 static const uint32_t alphaComp{ 0 }; 2788 static const bool isSRGB{ false }; 2789 static const bool isBC{ false }; 2790 static const bool isSubsampled{ false }; 2791 static const uint32_t bcWidth{ 1 }; 2792 static const uint32_t bcHeight{ 1 }; 2793 2794 typedef TransposeSingleComponent<8> TransposeT; 2795 typedef Format1<8> FormatT; 2796 }; 2797 2798 ////////////////////////////////////////////////////////////////////////// 2799 /// FormatTraits<L8_SINT> - Format traits specialization for L8_SINT 2800 ////////////////////////////////////////////////////////////////////////// 2801 template<> struct FormatTraits<L8_SINT> : 2802 ComponentTraits<SWR_TYPE_SINT, 8>, 2803 FormatSwizzle<0>, 2804 Defaults<0, 0, 0, 0x1> 2805 { 2806 static const uint32_t bpp{ 8 }; 2807 static const uint32_t numComps{ 1 }; 2808 static const bool hasAlpha{ false }; 2809 static const uint32_t alphaComp{ 0 }; 2810 static const bool isSRGB{ false }; 2811 static const bool isBC{ false }; 2812 static const bool isSubsampled{ false }; 2813 static const uint32_t bcWidth{ 1 }; 2814 static const uint32_t bcHeight{ 1 }; 2815 2816 typedef TransposeSingleComponent<8> TransposeT; 2817 typedef Format1<8> FormatT; 2818 }; 2819 2820 ////////////////////////////////////////////////////////////////////////// 2821 /// FormatTraits<I8_UINT> - Format traits specialization for I8_UINT 2822 ////////////////////////////////////////////////////////////////////////// 2823 template<> struct FormatTraits<I8_UINT> : 2824 ComponentTraits<SWR_TYPE_UINT, 8>, 2825 FormatSwizzle<0>, 2826 Defaults<0, 0, 0, 0x1> 2827 { 2828 static const uint32_t bpp{ 8 }; 2829 static const uint32_t numComps{ 1 }; 2830 static const bool hasAlpha{ false }; 2831 static const uint32_t alphaComp{ 0 }; 2832 static const bool isSRGB{ false }; 2833 static const bool isBC{ false }; 2834 static const bool isSubsampled{ false }; 2835 static const uint32_t bcWidth{ 1 }; 2836 static const uint32_t bcHeight{ 1 }; 2837 2838 typedef TransposeSingleComponent<8> TransposeT; 2839 typedef Format1<8> FormatT; 2840 }; 2841 2842 ////////////////////////////////////////////////////////////////////////// 2843 /// FormatTraits<I8_SINT> - Format traits specialization for I8_SINT 2844 ////////////////////////////////////////////////////////////////////////// 2845 template<> struct FormatTraits<I8_SINT> : 2846 ComponentTraits<SWR_TYPE_SINT, 8>, 2847 FormatSwizzle<0>, 2848 Defaults<0, 0, 0, 0x1> 2849 { 2850 static const uint32_t bpp{ 8 }; 2851 static const uint32_t numComps{ 1 }; 2852 static const bool hasAlpha{ false }; 2853 static const uint32_t alphaComp{ 0 }; 2854 static const bool isSRGB{ false }; 2855 static const bool isBC{ false }; 2856 static const bool isSubsampled{ false }; 2857 static const uint32_t bcWidth{ 1 }; 2858 static const uint32_t bcHeight{ 1 }; 2859 2860 typedef TransposeSingleComponent<8> TransposeT; 2861 typedef Format1<8> FormatT; 2862 }; 2863 2864 ////////////////////////////////////////////////////////////////////////// 2865 /// FormatTraits<DXT1_RGB_SRGB> - Format traits specialization for DXT1_RGB_SRGB 2866 ////////////////////////////////////////////////////////////////////////// 2867 template<> struct FormatTraits<DXT1_RGB_SRGB> : 2868 ComponentTraits<SWR_TYPE_UNORM, 8>, 2869 FormatSwizzle<0>, 2870 Defaults<0, 0, 0, 0x3f800000> 2871 { 2872 static const uint32_t bpp{ 64 }; 2873 static const uint32_t numComps{ 1 }; 2874 static const bool hasAlpha{ true }; 2875 static const uint32_t alphaComp{ 3 }; 2876 static const bool isSRGB{ false }; 2877 static const bool isBC{ true }; 2878 static const bool isSubsampled{ false }; 2879 static const uint32_t bcWidth{ 4 }; 2880 static const uint32_t bcHeight{ 4 }; 2881 2882 typedef TransposeSingleComponent<8> TransposeT; 2883 typedef Format1<8> FormatT; 2884 }; 2885 2886 ////////////////////////////////////////////////////////////////////////// 2887 /// FormatTraits<YCRCB_SWAPUVY> - Format traits specialization for YCRCB_SWAPUVY 2888 ////////////////////////////////////////////////////////////////////////// 2889 template<> struct FormatTraits<YCRCB_SWAPUVY> : 2890 ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>, 2891 FormatSwizzle<0, 1, 2, 3>, 2892 Defaults<0, 0, 0, 0x1> 2893 { 2894 static const uint32_t bpp{ 32 }; 2895 static const uint32_t numComps{ 4 }; 2896 static const bool hasAlpha{ false }; 2897 static const uint32_t alphaComp{ 3 }; 2898 static const bool isSRGB{ false }; 2899 static const bool isBC{ false }; 2900 static const bool isSubsampled{ true }; 2901 static const uint32_t bcWidth{ 2 }; 2902 static const uint32_t bcHeight{ 1 }; 2903 2904 typedef Transpose8_8_8_8 TransposeT; 2905 typedef Format4<8, 8, 8, 8> FormatT; 2906 }; 2907 2908 ////////////////////////////////////////////////////////////////////////// 2909 /// FormatTraits<BC1_UNORM> - Format traits specialization for BC1_UNORM 2910 ////////////////////////////////////////////////////////////////////////// 2911 template<> struct FormatTraits<BC1_UNORM> : 2912 ComponentTraits<SWR_TYPE_UNORM, 8>, 2913 FormatSwizzle<0>, 2914 Defaults<0, 0, 0, 0x3f800000> 2915 { 2916 static const uint32_t bpp{ 64 }; 2917 static const uint32_t numComps{ 1 }; 2918 static const bool hasAlpha{ true }; 2919 static const uint32_t alphaComp{ 3 }; 2920 static const bool isSRGB{ false }; 2921 static const bool isBC{ true }; 2922 static const bool isSubsampled{ false }; 2923 static const uint32_t bcWidth{ 4 }; 2924 static const uint32_t bcHeight{ 4 }; 2925 2926 typedef TransposeSingleComponent<8> TransposeT; 2927 typedef Format1<8> FormatT; 2928 }; 2929 2930 ////////////////////////////////////////////////////////////////////////// 2931 /// FormatTraits<BC2_UNORM> - Format traits specialization for BC2_UNORM 2932 ////////////////////////////////////////////////////////////////////////// 2933 template<> struct FormatTraits<BC2_UNORM> : 2934 ComponentTraits<SWR_TYPE_UNORM, 8>, 2935 FormatSwizzle<0>, 2936 Defaults<0, 0, 0, 0x3f800000> 2937 { 2938 static const uint32_t bpp{ 128 }; 2939 static const uint32_t numComps{ 1 }; 2940 static const bool hasAlpha{ true }; 2941 static const uint32_t alphaComp{ 3 }; 2942 static const bool isSRGB{ false }; 2943 static const bool isBC{ true }; 2944 static const bool isSubsampled{ false }; 2945 static const uint32_t bcWidth{ 4 }; 2946 static const uint32_t bcHeight{ 4 }; 2947 2948 typedef TransposeSingleComponent<8> TransposeT; 2949 typedef Format1<8> FormatT; 2950 }; 2951 2952 ////////////////////////////////////////////////////////////////////////// 2953 /// FormatTraits<BC3_UNORM> - Format traits specialization for BC3_UNORM 2954 ////////////////////////////////////////////////////////////////////////// 2955 template<> struct FormatTraits<BC3_UNORM> : 2956 ComponentTraits<SWR_TYPE_UNORM, 8>, 2957 FormatSwizzle<0>, 2958 Defaults<0, 0, 0, 0x3f800000> 2959 { 2960 static const uint32_t bpp{ 128 }; 2961 static const uint32_t numComps{ 1 }; 2962 static const bool hasAlpha{ true }; 2963 static const uint32_t alphaComp{ 3 }; 2964 static const bool isSRGB{ false }; 2965 static const bool isBC{ true }; 2966 static const bool isSubsampled{ false }; 2967 static const uint32_t bcWidth{ 4 }; 2968 static const uint32_t bcHeight{ 4 }; 2969 2970 typedef TransposeSingleComponent<8> TransposeT; 2971 typedef Format1<8> FormatT; 2972 }; 2973 2974 ////////////////////////////////////////////////////////////////////////// 2975 /// FormatTraits<BC4_UNORM> - Format traits specialization for BC4_UNORM 2976 ////////////////////////////////////////////////////////////////////////// 2977 template<> struct FormatTraits<BC4_UNORM> : 2978 ComponentTraits<SWR_TYPE_UNORM, 8>, 2979 FormatSwizzle<0>, 2980 Defaults<0, 0, 0, 0x3f800000> 2981 { 2982 static const uint32_t bpp{ 64 }; 2983 static const uint32_t numComps{ 1 }; 2984 static const bool hasAlpha{ true }; 2985 static const uint32_t alphaComp{ 3 }; 2986 static const bool isSRGB{ false }; 2987 static const bool isBC{ true }; 2988 static const bool isSubsampled{ false }; 2989 static const uint32_t bcWidth{ 4 }; 2990 static const uint32_t bcHeight{ 4 }; 2991 2992 typedef TransposeSingleComponent<8> TransposeT; 2993 typedef Format1<8> FormatT; 2994 }; 2995 2996 ////////////////////////////////////////////////////////////////////////// 2997 /// FormatTraits<BC5_UNORM> - Format traits specialization for BC5_UNORM 2998 ////////////////////////////////////////////////////////////////////////// 2999 template<> struct FormatTraits<BC5_UNORM> : 3000 ComponentTraits<SWR_TYPE_UNORM, 8>, 3001 FormatSwizzle<0>, 3002 Defaults<0, 0, 0, 0x3f800000> 3003 { 3004 static const uint32_t bpp{ 128 }; 3005 static const uint32_t numComps{ 1 }; 3006 static const bool hasAlpha{ true }; 3007 static const uint32_t alphaComp{ 3 }; 3008 static const bool isSRGB{ false }; 3009 static const bool isBC{ true }; 3010 static const bool isSubsampled{ false }; 3011 static const uint32_t bcWidth{ 4 }; 3012 static const uint32_t bcHeight{ 4 }; 3013 3014 typedef TransposeSingleComponent<8> TransposeT; 3015 typedef Format1<8> FormatT; 3016 }; 3017 3018 ////////////////////////////////////////////////////////////////////////// 3019 /// FormatTraits<BC1_UNORM_SRGB> - Format traits specialization for BC1_UNORM_SRGB 3020 ////////////////////////////////////////////////////////////////////////// 3021 template<> struct FormatTraits<BC1_UNORM_SRGB> : 3022 ComponentTraits<SWR_TYPE_UNORM, 8>, 3023 FormatSwizzle<0>, 3024 Defaults<0, 0, 0, 0x3f800000> 3025 { 3026 static const uint32_t bpp{ 64 }; 3027 static const uint32_t numComps{ 1 }; 3028 static const bool hasAlpha{ true }; 3029 static const uint32_t alphaComp{ 3 }; 3030 static const bool isSRGB{ true }; 3031 static const bool isBC{ true }; 3032 static const bool isSubsampled{ false }; 3033 static const uint32_t bcWidth{ 4 }; 3034 static const uint32_t bcHeight{ 4 }; 3035 3036 typedef TransposeSingleComponent<8> TransposeT; 3037 typedef Format1<8> FormatT; 3038 }; 3039 3040 ////////////////////////////////////////////////////////////////////////// 3041 /// FormatTraits<BC2_UNORM_SRGB> - Format traits specialization for BC2_UNORM_SRGB 3042 ////////////////////////////////////////////////////////////////////////// 3043 template<> struct FormatTraits<BC2_UNORM_SRGB> : 3044 ComponentTraits<SWR_TYPE_UNORM, 8>, 3045 FormatSwizzle<0>, 3046 Defaults<0, 0, 0, 0x3f800000> 3047 { 3048 static const uint32_t bpp{ 128 }; 3049 static const uint32_t numComps{ 1 }; 3050 static const bool hasAlpha{ true }; 3051 static const uint32_t alphaComp{ 3 }; 3052 static const bool isSRGB{ true }; 3053 static const bool isBC{ true }; 3054 static const bool isSubsampled{ false }; 3055 static const uint32_t bcWidth{ 4 }; 3056 static const uint32_t bcHeight{ 4 }; 3057 3058 typedef TransposeSingleComponent<8> TransposeT; 3059 typedef Format1<8> FormatT; 3060 }; 3061 3062 ////////////////////////////////////////////////////////////////////////// 3063 /// FormatTraits<BC3_UNORM_SRGB> - Format traits specialization for BC3_UNORM_SRGB 3064 ////////////////////////////////////////////////////////////////////////// 3065 template<> struct FormatTraits<BC3_UNORM_SRGB> : 3066 ComponentTraits<SWR_TYPE_UNORM, 8>, 3067 FormatSwizzle<0>, 3068 Defaults<0, 0, 0, 0x3f800000> 3069 { 3070 static const uint32_t bpp{ 128 }; 3071 static const uint32_t numComps{ 1 }; 3072 static const bool hasAlpha{ true }; 3073 static const uint32_t alphaComp{ 3 }; 3074 static const bool isSRGB{ true }; 3075 static const bool isBC{ true }; 3076 static const bool isSubsampled{ false }; 3077 static const uint32_t bcWidth{ 4 }; 3078 static const uint32_t bcHeight{ 4 }; 3079 3080 typedef TransposeSingleComponent<8> TransposeT; 3081 typedef Format1<8> FormatT; 3082 }; 3083 3084 ////////////////////////////////////////////////////////////////////////// 3085 /// FormatTraits<YCRCB_SWAPUV> - Format traits specialization for YCRCB_SWAPUV 3086 ////////////////////////////////////////////////////////////////////////// 3087 template<> struct FormatTraits<YCRCB_SWAPUV> : 3088 ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>, 3089 FormatSwizzle<0, 1, 2, 3>, 3090 Defaults<0, 0, 0, 0x1> 3091 { 3092 static const uint32_t bpp{ 32 }; 3093 static const uint32_t numComps{ 4 }; 3094 static const bool hasAlpha{ false }; 3095 static const uint32_t alphaComp{ 3 }; 3096 static const bool isSRGB{ false }; 3097 static const bool isBC{ false }; 3098 static const bool isSubsampled{ true }; 3099 static const uint32_t bcWidth{ 2 }; 3100 static const uint32_t bcHeight{ 1 }; 3101 3102 typedef Transpose8_8_8_8 TransposeT; 3103 typedef Format4<8, 8, 8, 8> FormatT; 3104 }; 3105 3106 ////////////////////////////////////////////////////////////////////////// 3107 /// FormatTraits<DXT1_RGB> - Format traits specialization for DXT1_RGB 3108 ////////////////////////////////////////////////////////////////////////// 3109 template<> struct FormatTraits<DXT1_RGB> : 3110 ComponentTraits<SWR_TYPE_UNORM, 8>, 3111 FormatSwizzle<0>, 3112 Defaults<0, 0, 0, 0x3f800000> 3113 { 3114 static const uint32_t bpp{ 64 }; 3115 static const uint32_t numComps{ 1 }; 3116 static const bool hasAlpha{ true }; 3117 static const uint32_t alphaComp{ 3 }; 3118 static const bool isSRGB{ false }; 3119 static const bool isBC{ true }; 3120 static const bool isSubsampled{ false }; 3121 static const uint32_t bcWidth{ 4 }; 3122 static const uint32_t bcHeight{ 4 }; 3123 3124 typedef TransposeSingleComponent<8> TransposeT; 3125 typedef Format1<8> FormatT; 3126 }; 3127 3128 ////////////////////////////////////////////////////////////////////////// 3129 /// FormatTraits<R8G8B8_UNORM> - Format traits specialization for R8G8B8_UNORM 3130 ////////////////////////////////////////////////////////////////////////// 3131 template<> struct FormatTraits<R8G8B8_UNORM> : 3132 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>, 3133 FormatSwizzle<0, 1, 2>, 3134 Defaults<0, 0, 0, 0x3f800000> 3135 { 3136 static const uint32_t bpp{ 24 }; 3137 static const uint32_t numComps{ 3 }; 3138 static const bool hasAlpha{ false }; 3139 static const uint32_t alphaComp{ 0 }; 3140 static const bool isSRGB{ false }; 3141 static const bool isBC{ false }; 3142 static const bool isSubsampled{ false }; 3143 static const uint32_t bcWidth{ 1 }; 3144 static const uint32_t bcHeight{ 1 }; 3145 3146 typedef Transpose8_8_8 TransposeT; 3147 typedef Format3<8, 8, 8> FormatT; 3148 }; 3149 3150 ////////////////////////////////////////////////////////////////////////// 3151 /// FormatTraits<R8G8B8_SNORM> - Format traits specialization for R8G8B8_SNORM 3152 ////////////////////////////////////////////////////////////////////////// 3153 template<> struct FormatTraits<R8G8B8_SNORM> : 3154 ComponentTraits<SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8>, 3155 FormatSwizzle<0, 1, 2>, 3156 Defaults<0, 0, 0, 0x3f800000> 3157 { 3158 static const uint32_t bpp{ 24 }; 3159 static const uint32_t numComps{ 3 }; 3160 static const bool hasAlpha{ false }; 3161 static const uint32_t alphaComp{ 0 }; 3162 static const bool isSRGB{ false }; 3163 static const bool isBC{ false }; 3164 static const bool isSubsampled{ false }; 3165 static const uint32_t bcWidth{ 1 }; 3166 static const uint32_t bcHeight{ 1 }; 3167 3168 typedef Transpose8_8_8 TransposeT; 3169 typedef Format3<8, 8, 8> FormatT; 3170 }; 3171 3172 ////////////////////////////////////////////////////////////////////////// 3173 /// FormatTraits<R8G8B8_SSCALED> - Format traits specialization for R8G8B8_SSCALED 3174 ////////////////////////////////////////////////////////////////////////// 3175 template<> struct FormatTraits<R8G8B8_SSCALED> : 3176 ComponentTraits<SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8>, 3177 FormatSwizzle<0, 1, 2>, 3178 Defaults<0, 0, 0, 0x3f800000> 3179 { 3180 static const uint32_t bpp{ 24 }; 3181 static const uint32_t numComps{ 3 }; 3182 static const bool hasAlpha{ false }; 3183 static const uint32_t alphaComp{ 0 }; 3184 static const bool isSRGB{ false }; 3185 static const bool isBC{ false }; 3186 static const bool isSubsampled{ false }; 3187 static const uint32_t bcWidth{ 1 }; 3188 static const uint32_t bcHeight{ 1 }; 3189 3190 typedef Transpose8_8_8 TransposeT; 3191 typedef Format3<8, 8, 8> FormatT; 3192 }; 3193 3194 ////////////////////////////////////////////////////////////////////////// 3195 /// FormatTraits<R8G8B8_USCALED> - Format traits specialization for R8G8B8_USCALED 3196 ////////////////////////////////////////////////////////////////////////// 3197 template<> struct FormatTraits<R8G8B8_USCALED> : 3198 ComponentTraits<SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8>, 3199 FormatSwizzle<0, 1, 2>, 3200 Defaults<0, 0, 0, 0x3f800000> 3201 { 3202 static const uint32_t bpp{ 24 }; 3203 static const uint32_t numComps{ 3 }; 3204 static const bool hasAlpha{ false }; 3205 static const uint32_t alphaComp{ 0 }; 3206 static const bool isSRGB{ false }; 3207 static const bool isBC{ false }; 3208 static const bool isSubsampled{ false }; 3209 static const uint32_t bcWidth{ 1 }; 3210 static const uint32_t bcHeight{ 1 }; 3211 3212 typedef Transpose8_8_8 TransposeT; 3213 typedef Format3<8, 8, 8> FormatT; 3214 }; 3215 3216 ////////////////////////////////////////////////////////////////////////// 3217 /// FormatTraits<R64G64B64A64_FLOAT> - Format traits specialization for R64G64B64A64_FLOAT 3218 ////////////////////////////////////////////////////////////////////////// 3219 template<> struct FormatTraits<R64G64B64A64_FLOAT> : 3220 ComponentTraits<SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64>, 3221 FormatSwizzle<0, 1, 2, 3>, 3222 Defaults<0, 0, 0, 0x3f800000> 3223 { 3224 static const uint32_t bpp{ 256 }; 3225 static const uint32_t numComps{ 4 }; 3226 static const bool hasAlpha{ true }; 3227 static const uint32_t alphaComp{ 3 }; 3228 static const bool isSRGB{ false }; 3229 static const bool isBC{ false }; 3230 static const bool isSubsampled{ false }; 3231 static const uint32_t bcWidth{ 1 }; 3232 static const uint32_t bcHeight{ 1 }; 3233 3234 typedef Transpose64_64_64_64 TransposeT; 3235 typedef Format4<64, 64, 64, 64> FormatT; 3236 }; 3237 3238 ////////////////////////////////////////////////////////////////////////// 3239 /// FormatTraits<R64G64B64_FLOAT> - Format traits specialization for R64G64B64_FLOAT 3240 ////////////////////////////////////////////////////////////////////////// 3241 template<> struct FormatTraits<R64G64B64_FLOAT> : 3242 ComponentTraits<SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64>, 3243 FormatSwizzle<0, 1, 2>, 3244 Defaults<0, 0, 0, 0x3f800000> 3245 { 3246 static const uint32_t bpp{ 192 }; 3247 static const uint32_t numComps{ 3 }; 3248 static const bool hasAlpha{ false }; 3249 static const uint32_t alphaComp{ 0 }; 3250 static const bool isSRGB{ false }; 3251 static const bool isBC{ false }; 3252 static const bool isSubsampled{ false }; 3253 static const uint32_t bcWidth{ 1 }; 3254 static const uint32_t bcHeight{ 1 }; 3255 3256 typedef Transpose64_64_64 TransposeT; 3257 typedef Format3<64, 64, 64> FormatT; 3258 }; 3259 3260 ////////////////////////////////////////////////////////////////////////// 3261 /// FormatTraits<BC4_SNORM> - Format traits specialization for BC4_SNORM 3262 ////////////////////////////////////////////////////////////////////////// 3263 template<> struct FormatTraits<BC4_SNORM> : 3264 ComponentTraits<SWR_TYPE_SNORM, 8>, 3265 FormatSwizzle<0>, 3266 Defaults<0, 0, 0, 0x3f800000> 3267 { 3268 static const uint32_t bpp{ 64 }; 3269 static const uint32_t numComps{ 1 }; 3270 static const bool hasAlpha{ true }; 3271 static const uint32_t alphaComp{ 3 }; 3272 static const bool isSRGB{ false }; 3273 static const bool isBC{ true }; 3274 static const bool isSubsampled{ false }; 3275 static const uint32_t bcWidth{ 4 }; 3276 static const uint32_t bcHeight{ 4 }; 3277 3278 typedef TransposeSingleComponent<8> TransposeT; 3279 typedef Format1<8> FormatT; 3280 }; 3281 3282 ////////////////////////////////////////////////////////////////////////// 3283 /// FormatTraits<BC5_SNORM> - Format traits specialization for BC5_SNORM 3284 ////////////////////////////////////////////////////////////////////////// 3285 template<> struct FormatTraits<BC5_SNORM> : 3286 ComponentTraits<SWR_TYPE_SNORM, 8>, 3287 FormatSwizzle<0>, 3288 Defaults<0, 0, 0, 0x3f800000> 3289 { 3290 static const uint32_t bpp{ 128 }; 3291 static const uint32_t numComps{ 1 }; 3292 static const bool hasAlpha{ true }; 3293 static const uint32_t alphaComp{ 3 }; 3294 static const bool isSRGB{ false }; 3295 static const bool isBC{ true }; 3296 static const bool isSubsampled{ false }; 3297 static const uint32_t bcWidth{ 4 }; 3298 static const uint32_t bcHeight{ 4 }; 3299 3300 typedef TransposeSingleComponent<8> TransposeT; 3301 typedef Format1<8> FormatT; 3302 }; 3303 3304 ////////////////////////////////////////////////////////////////////////// 3305 /// FormatTraits<R16G16B16_FLOAT> - Format traits specialization for R16G16B16_FLOAT 3306 ////////////////////////////////////////////////////////////////////////// 3307 template<> struct FormatTraits<R16G16B16_FLOAT> : 3308 ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16>, 3309 FormatSwizzle<0, 1, 2>, 3310 Defaults<0, 0, 0, 0x3f800000> 3311 { 3312 static const uint32_t bpp{ 48 }; 3313 static const uint32_t numComps{ 3 }; 3314 static const bool hasAlpha{ false }; 3315 static const uint32_t alphaComp{ 0 }; 3316 static const bool isSRGB{ false }; 3317 static const bool isBC{ false }; 3318 static const bool isSubsampled{ false }; 3319 static const uint32_t bcWidth{ 1 }; 3320 static const uint32_t bcHeight{ 1 }; 3321 3322 typedef Transpose16_16_16 TransposeT; 3323 typedef Format3<16, 16, 16> FormatT; 3324 }; 3325 3326 ////////////////////////////////////////////////////////////////////////// 3327 /// FormatTraits<R16G16B16_UNORM> - Format traits specialization for R16G16B16_UNORM 3328 ////////////////////////////////////////////////////////////////////////// 3329 template<> struct FormatTraits<R16G16B16_UNORM> : 3330 ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16>, 3331 FormatSwizzle<0, 1, 2>, 3332 Defaults<0, 0, 0, 0x3f800000> 3333 { 3334 static const uint32_t bpp{ 48 }; 3335 static const uint32_t numComps{ 3 }; 3336 static const bool hasAlpha{ false }; 3337 static const uint32_t alphaComp{ 0 }; 3338 static const bool isSRGB{ false }; 3339 static const bool isBC{ false }; 3340 static const bool isSubsampled{ false }; 3341 static const uint32_t bcWidth{ 1 }; 3342 static const uint32_t bcHeight{ 1 }; 3343 3344 typedef Transpose16_16_16 TransposeT; 3345 typedef Format3<16, 16, 16> FormatT; 3346 }; 3347 3348 ////////////////////////////////////////////////////////////////////////// 3349 /// FormatTraits<R16G16B16_SNORM> - Format traits specialization for R16G16B16_SNORM 3350 ////////////////////////////////////////////////////////////////////////// 3351 template<> struct FormatTraits<R16G16B16_SNORM> : 3352 ComponentTraits<SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16>, 3353 FormatSwizzle<0, 1, 2>, 3354 Defaults<0, 0, 0, 0x3f800000> 3355 { 3356 static const uint32_t bpp{ 48 }; 3357 static const uint32_t numComps{ 3 }; 3358 static const bool hasAlpha{ false }; 3359 static const uint32_t alphaComp{ 0 }; 3360 static const bool isSRGB{ false }; 3361 static const bool isBC{ false }; 3362 static const bool isSubsampled{ false }; 3363 static const uint32_t bcWidth{ 1 }; 3364 static const uint32_t bcHeight{ 1 }; 3365 3366 typedef Transpose16_16_16 TransposeT; 3367 typedef Format3<16, 16, 16> FormatT; 3368 }; 3369 3370 ////////////////////////////////////////////////////////////////////////// 3371 /// FormatTraits<R16G16B16_SSCALED> - Format traits specialization for R16G16B16_SSCALED 3372 ////////////////////////////////////////////////////////////////////////// 3373 template<> struct FormatTraits<R16G16B16_SSCALED> : 3374 ComponentTraits<SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16>, 3375 FormatSwizzle<0, 1, 2>, 3376 Defaults<0, 0, 0, 0x3f800000> 3377 { 3378 static const uint32_t bpp{ 48 }; 3379 static const uint32_t numComps{ 3 }; 3380 static const bool hasAlpha{ false }; 3381 static const uint32_t alphaComp{ 0 }; 3382 static const bool isSRGB{ false }; 3383 static const bool isBC{ false }; 3384 static const bool isSubsampled{ false }; 3385 static const uint32_t bcWidth{ 1 }; 3386 static const uint32_t bcHeight{ 1 }; 3387 3388 typedef Transpose16_16_16 TransposeT; 3389 typedef Format3<16, 16, 16> FormatT; 3390 }; 3391 3392 ////////////////////////////////////////////////////////////////////////// 3393 /// FormatTraits<R16G16B16_USCALED> - Format traits specialization for R16G16B16_USCALED 3394 ////////////////////////////////////////////////////////////////////////// 3395 template<> struct FormatTraits<R16G16B16_USCALED> : 3396 ComponentTraits<SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16>, 3397 FormatSwizzle<0, 1, 2>, 3398 Defaults<0, 0, 0, 0x3f800000> 3399 { 3400 static const uint32_t bpp{ 48 }; 3401 static const uint32_t numComps{ 3 }; 3402 static const bool hasAlpha{ false }; 3403 static const uint32_t alphaComp{ 0 }; 3404 static const bool isSRGB{ false }; 3405 static const bool isBC{ false }; 3406 static const bool isSubsampled{ false }; 3407 static const uint32_t bcWidth{ 1 }; 3408 static const uint32_t bcHeight{ 1 }; 3409 3410 typedef Transpose16_16_16 TransposeT; 3411 typedef Format3<16, 16, 16> FormatT; 3412 }; 3413 3414 ////////////////////////////////////////////////////////////////////////// 3415 /// FormatTraits<BC6H_SF16> - Format traits specialization for BC6H_SF16 3416 ////////////////////////////////////////////////////////////////////////// 3417 template<> struct FormatTraits<BC6H_SF16> : 3418 ComponentTraits<SWR_TYPE_SNORM, 8>, 3419 FormatSwizzle<0>, 3420 Defaults<0, 0, 0, 0x3f800000> 3421 { 3422 static const uint32_t bpp{ 128 }; 3423 static const uint32_t numComps{ 1 }; 3424 static const bool hasAlpha{ true }; 3425 static const uint32_t alphaComp{ 3 }; 3426 static const bool isSRGB{ false }; 3427 static const bool isBC{ true }; 3428 static const bool isSubsampled{ false }; 3429 static const uint32_t bcWidth{ 4 }; 3430 static const uint32_t bcHeight{ 4 }; 3431 3432 typedef TransposeSingleComponent<8> TransposeT; 3433 typedef Format1<8> FormatT; 3434 }; 3435 3436 ////////////////////////////////////////////////////////////////////////// 3437 /// FormatTraits<BC7_UNORM> - Format traits specialization for BC7_UNORM 3438 ////////////////////////////////////////////////////////////////////////// 3439 template<> struct FormatTraits<BC7_UNORM> : 3440 ComponentTraits<SWR_TYPE_UNORM, 8>, 3441 FormatSwizzle<0>, 3442 Defaults<0, 0, 0, 0x3f800000> 3443 { 3444 static const uint32_t bpp{ 128 }; 3445 static const uint32_t numComps{ 1 }; 3446 static const bool hasAlpha{ true }; 3447 static const uint32_t alphaComp{ 3 }; 3448 static const bool isSRGB{ false }; 3449 static const bool isBC{ true }; 3450 static const bool isSubsampled{ false }; 3451 static const uint32_t bcWidth{ 4 }; 3452 static const uint32_t bcHeight{ 4 }; 3453 3454 typedef TransposeSingleComponent<8> TransposeT; 3455 typedef Format1<8> FormatT; 3456 }; 3457 3458 ////////////////////////////////////////////////////////////////////////// 3459 /// FormatTraits<BC7_UNORM_SRGB> - Format traits specialization for BC7_UNORM_SRGB 3460 ////////////////////////////////////////////////////////////////////////// 3461 template<> struct FormatTraits<BC7_UNORM_SRGB> : 3462 ComponentTraits<SWR_TYPE_UNORM, 8>, 3463 FormatSwizzle<0>, 3464 Defaults<0, 0, 0, 0x3f800000> 3465 { 3466 static const uint32_t bpp{ 128 }; 3467 static const uint32_t numComps{ 1 }; 3468 static const bool hasAlpha{ true }; 3469 static const uint32_t alphaComp{ 3 }; 3470 static const bool isSRGB{ true }; 3471 static const bool isBC{ true }; 3472 static const bool isSubsampled{ false }; 3473 static const uint32_t bcWidth{ 4 }; 3474 static const uint32_t bcHeight{ 4 }; 3475 3476 typedef TransposeSingleComponent<8> TransposeT; 3477 typedef Format1<8> FormatT; 3478 }; 3479 3480 ////////////////////////////////////////////////////////////////////////// 3481 /// FormatTraits<BC6H_UF16> - Format traits specialization for BC6H_UF16 3482 ////////////////////////////////////////////////////////////////////////// 3483 template<> struct FormatTraits<BC6H_UF16> : 3484 ComponentTraits<SWR_TYPE_UNORM, 8>, 3485 FormatSwizzle<0>, 3486 Defaults<0, 0, 0, 0x3f800000> 3487 { 3488 static const uint32_t bpp{ 128 }; 3489 static const uint32_t numComps{ 1 }; 3490 static const bool hasAlpha{ true }; 3491 static const uint32_t alphaComp{ 3 }; 3492 static const bool isSRGB{ false }; 3493 static const bool isBC{ true }; 3494 static const bool isSubsampled{ false }; 3495 static const uint32_t bcWidth{ 4 }; 3496 static const uint32_t bcHeight{ 4 }; 3497 3498 typedef TransposeSingleComponent<8> TransposeT; 3499 typedef Format1<8> FormatT; 3500 }; 3501 3502 ////////////////////////////////////////////////////////////////////////// 3503 /// FormatTraits<R8G8B8_UNORM_SRGB> - Format traits specialization for R8G8B8_UNORM_SRGB 3504 ////////////////////////////////////////////////////////////////////////// 3505 template<> struct FormatTraits<R8G8B8_UNORM_SRGB> : 3506 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>, 3507 FormatSwizzle<0, 1, 2>, 3508 Defaults<0, 0, 0, 0x3f800000> 3509 { 3510 static const uint32_t bpp{ 24 }; 3511 static const uint32_t numComps{ 3 }; 3512 static const bool hasAlpha{ false }; 3513 static const uint32_t alphaComp{ 0 }; 3514 static const bool isSRGB{ true }; 3515 static const bool isBC{ false }; 3516 static const bool isSubsampled{ false }; 3517 static const uint32_t bcWidth{ 1 }; 3518 static const uint32_t bcHeight{ 1 }; 3519 3520 typedef Transpose8_8_8 TransposeT; 3521 typedef Format3<8, 8, 8> FormatT; 3522 }; 3523 3524 ////////////////////////////////////////////////////////////////////////// 3525 /// FormatTraits<R16G16B16_UINT> - Format traits specialization for R16G16B16_UINT 3526 ////////////////////////////////////////////////////////////////////////// 3527 template<> struct FormatTraits<R16G16B16_UINT> : 3528 ComponentTraits<SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16>, 3529 FormatSwizzle<0, 1, 2>, 3530 Defaults<0, 0, 0, 0x1> 3531 { 3532 static const uint32_t bpp{ 48 }; 3533 static const uint32_t numComps{ 3 }; 3534 static const bool hasAlpha{ false }; 3535 static const uint32_t alphaComp{ 0 }; 3536 static const bool isSRGB{ false }; 3537 static const bool isBC{ false }; 3538 static const bool isSubsampled{ false }; 3539 static const uint32_t bcWidth{ 1 }; 3540 static const uint32_t bcHeight{ 1 }; 3541 3542 typedef Transpose16_16_16 TransposeT; 3543 typedef Format3<16, 16, 16> FormatT; 3544 }; 3545 3546 ////////////////////////////////////////////////////////////////////////// 3547 /// FormatTraits<R16G16B16_SINT> - Format traits specialization for R16G16B16_SINT 3548 ////////////////////////////////////////////////////////////////////////// 3549 template<> struct FormatTraits<R16G16B16_SINT> : 3550 ComponentTraits<SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16>, 3551 FormatSwizzle<0, 1, 2>, 3552 Defaults<0, 0, 0, 0x1> 3553 { 3554 static const uint32_t bpp{ 48 }; 3555 static const uint32_t numComps{ 3 }; 3556 static const bool hasAlpha{ false }; 3557 static const uint32_t alphaComp{ 0 }; 3558 static const bool isSRGB{ false }; 3559 static const bool isBC{ false }; 3560 static const bool isSubsampled{ false }; 3561 static const uint32_t bcWidth{ 1 }; 3562 static const uint32_t bcHeight{ 1 }; 3563 3564 typedef Transpose16_16_16 TransposeT; 3565 typedef Format3<16, 16, 16> FormatT; 3566 }; 3567 3568 ////////////////////////////////////////////////////////////////////////// 3569 /// FormatTraits<R32_SFIXED> - Format traits specialization for R32_SFIXED 3570 ////////////////////////////////////////////////////////////////////////// 3571 template<> struct FormatTraits<R32_SFIXED> : 3572 ComponentTraits<SWR_TYPE_SFIXED, 32>, 3573 FormatSwizzle<0>, 3574 Defaults<0, 0, 0, 0x3f800000> 3575 { 3576 static const uint32_t bpp{ 32 }; 3577 static const uint32_t numComps{ 1 }; 3578 static const bool hasAlpha{ false }; 3579 static const uint32_t alphaComp{ 0 }; 3580 static const bool isSRGB{ false }; 3581 static const bool isBC{ false }; 3582 static const bool isSubsampled{ false }; 3583 static const uint32_t bcWidth{ 1 }; 3584 static const uint32_t bcHeight{ 1 }; 3585 3586 typedef TransposeSingleComponent<32> TransposeT; 3587 typedef Format1<32> FormatT; 3588 }; 3589 3590 ////////////////////////////////////////////////////////////////////////// 3591 /// FormatTraits<R10G10B10A2_SNORM> - Format traits specialization for R10G10B10A2_SNORM 3592 ////////////////////////////////////////////////////////////////////////// 3593 template<> struct FormatTraits<R10G10B10A2_SNORM> : 3594 ComponentTraits<SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 2>, 3595 FormatSwizzle<0, 1, 2, 3>, 3596 Defaults<0, 0, 0, 0x3f800000> 3597 { 3598 static const uint32_t bpp{ 32 }; 3599 static const uint32_t numComps{ 4 }; 3600 static const bool hasAlpha{ true }; 3601 static const uint32_t alphaComp{ 3 }; 3602 static const bool isSRGB{ false }; 3603 static const bool isBC{ false }; 3604 static const bool isSubsampled{ false }; 3605 static const uint32_t bcWidth{ 1 }; 3606 static const uint32_t bcHeight{ 1 }; 3607 3608 typedef Transpose10_10_10_2 TransposeT; 3609 typedef Format4<10, 10, 10, 2> FormatT; 3610 }; 3611 3612 ////////////////////////////////////////////////////////////////////////// 3613 /// FormatTraits<R10G10B10A2_USCALED> - Format traits specialization for R10G10B10A2_USCALED 3614 ////////////////////////////////////////////////////////////////////////// 3615 template<> struct FormatTraits<R10G10B10A2_USCALED> : 3616 ComponentTraits<SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 2>, 3617 FormatSwizzle<0, 1, 2, 3>, 3618 Defaults<0, 0, 0, 0x3f800000> 3619 { 3620 static const uint32_t bpp{ 32 }; 3621 static const uint32_t numComps{ 4 }; 3622 static const bool hasAlpha{ true }; 3623 static const uint32_t alphaComp{ 3 }; 3624 static const bool isSRGB{ false }; 3625 static const bool isBC{ false }; 3626 static const bool isSubsampled{ false }; 3627 static const uint32_t bcWidth{ 1 }; 3628 static const uint32_t bcHeight{ 1 }; 3629 3630 typedef Transpose10_10_10_2 TransposeT; 3631 typedef Format4<10, 10, 10, 2> FormatT; 3632 }; 3633 3634 ////////////////////////////////////////////////////////////////////////// 3635 /// FormatTraits<R10G10B10A2_SSCALED> - Format traits specialization for R10G10B10A2_SSCALED 3636 ////////////////////////////////////////////////////////////////////////// 3637 template<> struct FormatTraits<R10G10B10A2_SSCALED> : 3638 ComponentTraits<SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 2>, 3639 FormatSwizzle<0, 1, 2, 3>, 3640 Defaults<0, 0, 0, 0x3f800000> 3641 { 3642 static const uint32_t bpp{ 32 }; 3643 static const uint32_t numComps{ 4 }; 3644 static const bool hasAlpha{ true }; 3645 static const uint32_t alphaComp{ 3 }; 3646 static const bool isSRGB{ false }; 3647 static const bool isBC{ false }; 3648 static const bool isSubsampled{ false }; 3649 static const uint32_t bcWidth{ 1 }; 3650 static const uint32_t bcHeight{ 1 }; 3651 3652 typedef Transpose10_10_10_2 TransposeT; 3653 typedef Format4<10, 10, 10, 2> FormatT; 3654 }; 3655 3656 ////////////////////////////////////////////////////////////////////////// 3657 /// FormatTraits<R10G10B10A2_SINT> - Format traits specialization for R10G10B10A2_SINT 3658 ////////////////////////////////////////////////////////////////////////// 3659 template<> struct FormatTraits<R10G10B10A2_SINT> : 3660 ComponentTraits<SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 2>, 3661 FormatSwizzle<0, 1, 2, 3>, 3662 Defaults<0, 0, 0, 0x1> 3663 { 3664 static const uint32_t bpp{ 32 }; 3665 static const uint32_t numComps{ 4 }; 3666 static const bool hasAlpha{ true }; 3667 static const uint32_t alphaComp{ 3 }; 3668 static const bool isSRGB{ false }; 3669 static const bool isBC{ false }; 3670 static const bool isSubsampled{ false }; 3671 static const uint32_t bcWidth{ 1 }; 3672 static const uint32_t bcHeight{ 1 }; 3673 3674 typedef Transpose10_10_10_2 TransposeT; 3675 typedef Format4<10, 10, 10, 2> FormatT; 3676 }; 3677 3678 ////////////////////////////////////////////////////////////////////////// 3679 /// FormatTraits<B10G10R10A2_SNORM> - Format traits specialization for B10G10R10A2_SNORM 3680 ////////////////////////////////////////////////////////////////////////// 3681 template<> struct FormatTraits<B10G10R10A2_SNORM> : 3682 ComponentTraits<SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 2>, 3683 FormatSwizzle<2, 1, 0, 3>, 3684 Defaults<0, 0, 0, 0x3f800000> 3685 { 3686 static const uint32_t bpp{ 32 }; 3687 static const uint32_t numComps{ 4 }; 3688 static const bool hasAlpha{ true }; 3689 static const uint32_t alphaComp{ 3 }; 3690 static const bool isSRGB{ false }; 3691 static const bool isBC{ false }; 3692 static const bool isSubsampled{ false }; 3693 static const uint32_t bcWidth{ 1 }; 3694 static const uint32_t bcHeight{ 1 }; 3695 3696 typedef Transpose10_10_10_2 TransposeT; 3697 typedef Format4<10, 10, 10, 2> FormatT; 3698 }; 3699 3700 ////////////////////////////////////////////////////////////////////////// 3701 /// FormatTraits<B10G10R10A2_USCALED> - Format traits specialization for B10G10R10A2_USCALED 3702 ////////////////////////////////////////////////////////////////////////// 3703 template<> struct FormatTraits<B10G10R10A2_USCALED> : 3704 ComponentTraits<SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 2>, 3705 FormatSwizzle<2, 1, 0, 3>, 3706 Defaults<0, 0, 0, 0x3f800000> 3707 { 3708 static const uint32_t bpp{ 32 }; 3709 static const uint32_t numComps{ 4 }; 3710 static const bool hasAlpha{ true }; 3711 static const uint32_t alphaComp{ 3 }; 3712 static const bool isSRGB{ false }; 3713 static const bool isBC{ false }; 3714 static const bool isSubsampled{ false }; 3715 static const uint32_t bcWidth{ 1 }; 3716 static const uint32_t bcHeight{ 1 }; 3717 3718 typedef Transpose10_10_10_2 TransposeT; 3719 typedef Format4<10, 10, 10, 2> FormatT; 3720 }; 3721 3722 ////////////////////////////////////////////////////////////////////////// 3723 /// FormatTraits<B10G10R10A2_SSCALED> - Format traits specialization for B10G10R10A2_SSCALED 3724 ////////////////////////////////////////////////////////////////////////// 3725 template<> struct FormatTraits<B10G10R10A2_SSCALED> : 3726 ComponentTraits<SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 2>, 3727 FormatSwizzle<2, 1, 0, 3>, 3728 Defaults<0, 0, 0, 0x3f800000> 3729 { 3730 static const uint32_t bpp{ 32 }; 3731 static const uint32_t numComps{ 4 }; 3732 static const bool hasAlpha{ true }; 3733 static const uint32_t alphaComp{ 3 }; 3734 static const bool isSRGB{ false }; 3735 static const bool isBC{ false }; 3736 static const bool isSubsampled{ false }; 3737 static const uint32_t bcWidth{ 1 }; 3738 static const uint32_t bcHeight{ 1 }; 3739 3740 typedef Transpose10_10_10_2 TransposeT; 3741 typedef Format4<10, 10, 10, 2> FormatT; 3742 }; 3743 3744 ////////////////////////////////////////////////////////////////////////// 3745 /// FormatTraits<B10G10R10A2_UINT> - Format traits specialization for B10G10R10A2_UINT 3746 ////////////////////////////////////////////////////////////////////////// 3747 template<> struct FormatTraits<B10G10R10A2_UINT> : 3748 ComponentTraits<SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 2>, 3749 FormatSwizzle<2, 1, 0, 3>, 3750 Defaults<0, 0, 0, 0x1> 3751 { 3752 static const uint32_t bpp{ 32 }; 3753 static const uint32_t numComps{ 4 }; 3754 static const bool hasAlpha{ true }; 3755 static const uint32_t alphaComp{ 3 }; 3756 static const bool isSRGB{ false }; 3757 static const bool isBC{ false }; 3758 static const bool isSubsampled{ false }; 3759 static const uint32_t bcWidth{ 1 }; 3760 static const uint32_t bcHeight{ 1 }; 3761 3762 typedef Transpose10_10_10_2 TransposeT; 3763 typedef Format4<10, 10, 10, 2> FormatT; 3764 }; 3765 3766 ////////////////////////////////////////////////////////////////////////// 3767 /// FormatTraits<B10G10R10A2_SINT> - Format traits specialization for B10G10R10A2_SINT 3768 ////////////////////////////////////////////////////////////////////////// 3769 template<> struct FormatTraits<B10G10R10A2_SINT> : 3770 ComponentTraits<SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 2>, 3771 FormatSwizzle<2, 1, 0, 3>, 3772 Defaults<0, 0, 0, 0x1> 3773 { 3774 static const uint32_t bpp{ 32 }; 3775 static const uint32_t numComps{ 4 }; 3776 static const bool hasAlpha{ true }; 3777 static const uint32_t alphaComp{ 3 }; 3778 static const bool isSRGB{ false }; 3779 static const bool isBC{ false }; 3780 static const bool isSubsampled{ false }; 3781 static const uint32_t bcWidth{ 1 }; 3782 static const uint32_t bcHeight{ 1 }; 3783 3784 typedef Transpose10_10_10_2 TransposeT; 3785 typedef Format4<10, 10, 10, 2> FormatT; 3786 }; 3787 3788 ////////////////////////////////////////////////////////////////////////// 3789 /// FormatTraits<R8G8B8_UINT> - Format traits specialization for R8G8B8_UINT 3790 ////////////////////////////////////////////////////////////////////////// 3791 template<> struct FormatTraits<R8G8B8_UINT> : 3792 ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>, 3793 FormatSwizzle<0, 1, 2>, 3794 Defaults<0, 0, 0, 0x1> 3795 { 3796 static const uint32_t bpp{ 24 }; 3797 static const uint32_t numComps{ 3 }; 3798 static const bool hasAlpha{ false }; 3799 static const uint32_t alphaComp{ 0 }; 3800 static const bool isSRGB{ false }; 3801 static const bool isBC{ false }; 3802 static const bool isSubsampled{ false }; 3803 static const uint32_t bcWidth{ 1 }; 3804 static const uint32_t bcHeight{ 1 }; 3805 3806 typedef Transpose8_8_8 TransposeT; 3807 typedef Format3<8, 8, 8> FormatT; 3808 }; 3809 3810 ////////////////////////////////////////////////////////////////////////// 3811 /// FormatTraits<R8G8B8_SINT> - Format traits specialization for R8G8B8_SINT 3812 ////////////////////////////////////////////////////////////////////////// 3813 template<> struct FormatTraits<R8G8B8_SINT> : 3814 ComponentTraits<SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8>, 3815 FormatSwizzle<0, 1, 2>, 3816 Defaults<0, 0, 0, 0x1> 3817 { 3818 static const uint32_t bpp{ 24 }; 3819 static const uint32_t numComps{ 3 }; 3820 static const bool hasAlpha{ false }; 3821 static const uint32_t alphaComp{ 0 }; 3822 static const bool isSRGB{ false }; 3823 static const bool isBC{ false }; 3824 static const bool isSubsampled{ false }; 3825 static const uint32_t bcWidth{ 1 }; 3826 static const uint32_t bcHeight{ 1 }; 3827 3828 typedef Transpose8_8_8 TransposeT; 3829 typedef Format3<8, 8, 8> FormatT; 3830 }; 3831 3832 ////////////////////////////////////////////////////////////////////////// 3833 /// FormatTraits<RAW> - Format traits specialization for RAW 3834 ////////////////////////////////////////////////////////////////////////// 3835 template<> struct FormatTraits<RAW> : 3836 ComponentTraits<SWR_TYPE_UINT, 8>, 3837 FormatSwizzle<0>, 3838 Defaults<0, 0, 0, 0x1> 3839 { 3840 static const uint32_t bpp{ 8 }; 3841 static const uint32_t numComps{ 1 }; 3842 static const bool hasAlpha{ false }; 3843 static const uint32_t alphaComp{ 3 }; 3844 static const bool isSRGB{ false }; 3845 static const bool isBC{ false }; 3846 static const bool isSubsampled{ false }; 3847 static const uint32_t bcWidth{ 1 }; 3848 static const uint32_t bcHeight{ 1 }; 3849 3850 typedef TransposeSingleComponent<8> TransposeT; 3851 typedef Format1<8> FormatT; 3852 }; 3853