Support all BC formats on D3D12, Metal and Vulkan

This patch adds the support of all BC formats on D3D12, Metal and
Vulkan and related end2end tests.

BUG=dawn:42
TEST=dawn_end2end_tests

Change-Id: I50caf687d3cfee7df80070952f55f96dc363a830
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/8900
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
This commit is contained in:
Jiawei Shao
2019-07-17 00:00:10 +00:00
committed by Commit Bot service account
parent d6f13c645b
commit 5580970f59
3 changed files with 158 additions and 17 deletions

View File

@@ -191,11 +191,34 @@ namespace dawn_native { namespace d3d12 {
case dawn::TextureFormat::Depth24PlusStencil8:
return DXGI_FORMAT_D32_FLOAT_S8X24_UINT;
// TODO(jiawei.shao@intel.com): support all BC formats
case dawn::TextureFormat::BC1RGBAUnorm:
return DXGI_FORMAT_BC1_UNORM;
case dawn::TextureFormat::BC1RGBAUnormSrgb:
return DXGI_FORMAT_BC1_UNORM_SRGB;
case dawn::TextureFormat::BC2RGBAUnorm:
return DXGI_FORMAT_BC2_UNORM;
case dawn::TextureFormat::BC2RGBAUnormSrgb:
return DXGI_FORMAT_BC2_UNORM_SRGB;
case dawn::TextureFormat::BC3RGBAUnorm:
return DXGI_FORMAT_BC3_UNORM;
case dawn::TextureFormat::BC3RGBAUnormSrgb:
return DXGI_FORMAT_BC3_UNORM_SRGB;
case dawn::TextureFormat::BC4RSnorm:
return DXGI_FORMAT_BC4_SNORM;
case dawn::TextureFormat::BC4RUnorm:
return DXGI_FORMAT_BC4_UNORM;
case dawn::TextureFormat::BC5RGSnorm:
return DXGI_FORMAT_BC5_SNORM;
case dawn::TextureFormat::BC5RGUnorm:
return DXGI_FORMAT_BC5_UNORM;
case dawn::TextureFormat::BC6HRGBSfloat:
return DXGI_FORMAT_BC6H_SF16;
case dawn::TextureFormat::BC6HRGBUfloat:
return DXGI_FORMAT_BC6H_UF16;
case dawn::TextureFormat::BC7RGBAUnorm:
return DXGI_FORMAT_BC7_UNORM;
case dawn::TextureFormat::BC7RGBAUnormSrgb:
return DXGI_FORMAT_BC7_UNORM_SRGB;
default:
UNREACHABLE();

View File

@@ -217,11 +217,34 @@ namespace dawn_native { namespace metal {
case dawn::TextureFormat::Depth24PlusStencil8:
return MTLPixelFormatDepth32Float_Stencil8;
// TODO(jiawei.shao@intel.com): support all BC formats
case dawn::TextureFormat::BC1RGBAUnorm:
return MTLPixelFormatBC1_RGBA;
case dawn::TextureFormat::BC1RGBAUnormSrgb:
return MTLPixelFormatBC1_RGBA_sRGB;
case dawn::TextureFormat::BC2RGBAUnorm:
return MTLPixelFormatBC2_RGBA;
case dawn::TextureFormat::BC2RGBAUnormSrgb:
return MTLPixelFormatBC2_RGBA_sRGB;
case dawn::TextureFormat::BC3RGBAUnorm:
return MTLPixelFormatBC3_RGBA;
case dawn::TextureFormat::BC3RGBAUnormSrgb:
return MTLPixelFormatBC3_RGBA_sRGB;
case dawn::TextureFormat::BC4RSnorm:
return MTLPixelFormatBC4_RSnorm;
case dawn::TextureFormat::BC4RUnorm:
return MTLPixelFormatBC4_RUnorm;
case dawn::TextureFormat::BC5RGSnorm:
return MTLPixelFormatBC5_RGSnorm;
case dawn::TextureFormat::BC5RGUnorm:
return MTLPixelFormatBC5_RGUnorm;
case dawn::TextureFormat::BC6HRGBSfloat:
return MTLPixelFormatBC6H_RGBFloat;
case dawn::TextureFormat::BC6HRGBUfloat:
return MTLPixelFormatBC6H_RGBUfloat;
case dawn::TextureFormat::BC7RGBAUnorm:
return MTLPixelFormatBC7_RGBAUnorm;
case dawn::TextureFormat::BC7RGBAUnormSrgb:
return MTLPixelFormatBC7_RGBAUnorm_sRGB;
default:
UNREACHABLE();