blob: ad790baa7947edbf093be7e2c0eb3ad5fd24cedb [file] [log] [blame]
Stephen White985741a2019-07-18 11:43:45 -04001/*
2 * Copyright 2019 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
Mike Klein52337de2019-07-25 09:00:52 -05008#include "src/gpu/dawn/GrDawnUtil.h"
Stephen White985741a2019-07-18 11:43:45 -04009
10GrPixelConfig GrDawnFormatToPixelConfig(dawn::TextureFormat format) {
11 switch (format) {
Stephen White3e45e122019-07-22 09:12:29 -040012 case dawn::TextureFormat::RGBA8Unorm:
Stephen White985741a2019-07-18 11:43:45 -040013 return kRGBA_8888_GrPixelConfig;
Stephen White3e45e122019-07-22 09:12:29 -040014 case dawn::TextureFormat::BGRA8Unorm:
Stephen White985741a2019-07-18 11:43:45 -040015 return kBGRA_8888_GrPixelConfig;
16 case dawn::TextureFormat::R8Unorm:
17 return kAlpha_8_GrPixelConfig;
Stephen White3e45e122019-07-22 09:12:29 -040018 case dawn::TextureFormat::Depth24PlusStencil8:
Stephen White985741a2019-07-18 11:43:45 -040019 default:
20 SkASSERT(false);
21 return kRGBA_8888_GrPixelConfig;
22 }
23}
24
Stephen Whited7325182019-08-02 17:22:59 -040025bool GrDawnFormatIsRenderable(dawn::TextureFormat format) {
26 // For now, all the formats above are renderable. If a non-renderable format is added
27 // (see dawn/src/dawn_native/Format.cpp), an exception should be added here.
28 return true;
29}
30
Stephen White985741a2019-07-18 11:43:45 -040031bool GrPixelConfigToDawnFormat(GrPixelConfig config, dawn::TextureFormat* format) {
32 switch (config) {
33 case kRGBA_8888_GrPixelConfig:
34 case kRGBA_4444_GrPixelConfig:
35 case kRGB_565_GrPixelConfig:
36 case kGray_8_GrPixelConfig:
Stephen White3e45e122019-07-22 09:12:29 -040037 *format = dawn::TextureFormat::RGBA8Unorm;
Stephen White985741a2019-07-18 11:43:45 -040038 return true;
39 case kBGRA_8888_GrPixelConfig:
Stephen White3e45e122019-07-22 09:12:29 -040040 *format = dawn::TextureFormat::BGRA8Unorm;
Stephen White985741a2019-07-18 11:43:45 -040041 return true;
42 case kAlpha_8_GrPixelConfig:
43 *format = dawn::TextureFormat::R8Unorm;
44 return true;
45 default:
46 return false;
47 }
48}
Stephen Whited7325182019-08-02 17:22:59 -040049
50#if GR_TEST_UTILS
51const char* GrDawnFormatToStr(dawn::TextureFormat format) {
52 switch (format) {
53 case dawn::TextureFormat::RGBA8Unorm:
54 return "RGBA8Unorm";
55 case dawn::TextureFormat::BGRA8Unorm:
56 return "BGRA8Unorm";
57 case dawn::TextureFormat::R8Unorm:
58 return "R8Unorm";
59 case dawn::TextureFormat::Depth24PlusStencil8:
60 return "Depth24PlusStencil8";
61 default:
62 SkASSERT(false);
63 return "Unknown";
64 }
65}
66#endif