| 481 | } |
| 482 | |
| 483 | DXGI_FORMAT ResourceFormat2DXGIFormat(ResourceFormat format) |
| 484 | { |
| 485 | if(format.Special()) |
| 486 | { |
| 487 | switch(format.type) |
| 488 | { |
| 489 | case ResourceFormatType::BC1: |
| 490 | return format.SRGBCorrected() ? DXGI_FORMAT_BC1_UNORM_SRGB : DXGI_FORMAT_BC1_UNORM; |
| 491 | case ResourceFormatType::BC2: |
| 492 | return format.SRGBCorrected() ? DXGI_FORMAT_BC2_UNORM_SRGB : DXGI_FORMAT_BC2_UNORM; |
| 493 | case ResourceFormatType::BC3: |
| 494 | return format.SRGBCorrected() ? DXGI_FORMAT_BC3_UNORM_SRGB : DXGI_FORMAT_BC3_UNORM; |
| 495 | case ResourceFormatType::BC4: |
| 496 | return format.compType == CompType::SNorm ? DXGI_FORMAT_BC4_SNORM : DXGI_FORMAT_BC4_UNORM; |
| 497 | case ResourceFormatType::BC5: |
| 498 | return format.compType == CompType::SNorm ? DXGI_FORMAT_BC5_SNORM : DXGI_FORMAT_BC5_UNORM; |
| 499 | case ResourceFormatType::BC6: |
| 500 | return format.compType == CompType::SNorm ? DXGI_FORMAT_BC6H_SF16 : DXGI_FORMAT_BC6H_UF16; |
| 501 | case ResourceFormatType::BC7: |
| 502 | return format.SRGBCorrected() ? DXGI_FORMAT_BC7_UNORM_SRGB : DXGI_FORMAT_BC7_UNORM; |
| 503 | case ResourceFormatType::R10G10B10A2: |
| 504 | if(format.BGRAOrder()) |
| 505 | return DXGI_FORMAT_UNKNOWN; |
| 506 | return format.compType == CompType::UInt ? DXGI_FORMAT_R10G10B10A2_UINT |
| 507 | : DXGI_FORMAT_R10G10B10A2_UNORM; |
| 508 | case ResourceFormatType::R11G11B10: return DXGI_FORMAT_R11G11B10_FLOAT; |
| 509 | case ResourceFormatType::R5G6B5: |
| 510 | if(!format.BGRAOrder()) |
| 511 | return DXGI_FORMAT_UNKNOWN; |
| 512 | return DXGI_FORMAT_B5G6R5_UNORM; |
| 513 | case ResourceFormatType::R5G5B5A1: |
| 514 | if(!format.BGRAOrder()) |
| 515 | return DXGI_FORMAT_UNKNOWN; |
| 516 | return DXGI_FORMAT_B5G5R5A1_UNORM; |
| 517 | case ResourceFormatType::R9G9B9E5: return DXGI_FORMAT_R9G9B9E5_SHAREDEXP; |
| 518 | case ResourceFormatType::R4G4B4A4: |
| 519 | if(!format.BGRAOrder()) |
| 520 | return DXGI_FORMAT_UNKNOWN; |
| 521 | return DXGI_FORMAT_B4G4R4A4_UNORM; |
| 522 | case ResourceFormatType::D24S8: return DXGI_FORMAT_D24_UNORM_S8_UINT; |
| 523 | case ResourceFormatType::D32S8: return DXGI_FORMAT_D32_FLOAT_S8X24_UINT; |
| 524 | case ResourceFormatType::S8: return DXGI_FORMAT_R8_UINT; |
| 525 | case ResourceFormatType::A8: return DXGI_FORMAT_A8_UNORM; |
| 526 | default: |
| 527 | case ResourceFormatType::R4G4: |
| 528 | case ResourceFormatType::D16S8: |
| 529 | case ResourceFormatType::ETC2: |
| 530 | case ResourceFormatType::EAC: |
| 531 | case ResourceFormatType::ASTC: |
| 532 | case ResourceFormatType::YUV8: |
| 533 | case ResourceFormatType::YUV10: |
| 534 | case ResourceFormatType::YUV12: |
| 535 | case ResourceFormatType::YUV16: return DXGI_FORMAT_UNKNOWN; |
| 536 | } |
| 537 | } |
| 538 | |
| 539 | if(format.compCount == 4) |
| 540 | { |