1 /*
2 * Copyright 2019 Google LLC
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
8 #include "src/gpu/mock/GrMockCaps.h"
9
10 #include "src/gpu/GrProgramDesc.h"
11
makeDesc(GrRenderTarget *,const GrProgramInfo & programInfo,ProgramDescOverrideFlags overrideFlags) const12 GrProgramDesc GrMockCaps::makeDesc(GrRenderTarget* /* rt */,
13 const GrProgramInfo& programInfo,
14 ProgramDescOverrideFlags overrideFlags) const {
15 SkASSERT(overrideFlags == ProgramDescOverrideFlags::kNone);
16 GrProgramDesc desc;
17 GrProgramDesc::Build(&desc, programInfo, *this);
18 return desc;
19 }
20
computeFormatKey(const GrBackendFormat & format) const21 uint64_t GrMockCaps::computeFormatKey(const GrBackendFormat& format) const {
22 #ifdef SK_DEBUG
23 SkImage::CompressionType compression = format.asMockCompressionType();
24 SkASSERT(compression == SkImage::CompressionType::kNone);
25 #endif
26 auto ct = format.asMockColorType();
27 return (uint64_t)ct;
28 }
29
30 #if GR_TEST_UTILS
getTestingCombinations() const31 std::vector<GrCaps::TestFormatColorTypeCombination> GrMockCaps::getTestingCombinations() const {
32 // TODO: need to add compressed formats to this list
33 std::vector<GrCaps::TestFormatColorTypeCombination> combos = {
34 { GrColorType::kAlpha_8, GrBackendFormat::MakeMock(GrColorType::kAlpha_8,
35 SkImage::CompressionType::kNone)},
36 { GrColorType::kBGR_565, GrBackendFormat::MakeMock(GrColorType::kBGR_565,
37 SkImage::CompressionType::kNone)},
38 { GrColorType::kABGR_4444, GrBackendFormat::MakeMock(GrColorType::kABGR_4444,
39 SkImage::CompressionType::kNone)},
40 { GrColorType::kRGBA_8888, GrBackendFormat::MakeMock(GrColorType::kRGBA_8888,
41 SkImage::CompressionType::kNone)},
42 { GrColorType::kRGBA_8888_SRGB, GrBackendFormat::MakeMock(GrColorType::kRGBA_8888_SRGB,
43 SkImage::CompressionType::kNone)},
44 { GrColorType::kRGB_888x, GrBackendFormat::MakeMock(GrColorType::kRGB_888x,
45 SkImage::CompressionType::kNone)},
46 { GrColorType::kRG_88, GrBackendFormat::MakeMock(GrColorType::kRG_88,
47 SkImage::CompressionType::kNone)},
48 { GrColorType::kBGRA_8888, GrBackendFormat::MakeMock(GrColorType::kBGRA_8888,
49 SkImage::CompressionType::kNone)},
50 { GrColorType::kRGBA_1010102, GrBackendFormat::MakeMock(GrColorType::kRGBA_1010102,
51 SkImage::CompressionType::kNone)},
52 { GrColorType::kBGRA_1010102, GrBackendFormat::MakeMock(GrColorType::kBGRA_1010102,
53 SkImage::CompressionType::kNone)},
54 { GrColorType::kGray_8, GrBackendFormat::MakeMock(GrColorType::kGray_8,
55 SkImage::CompressionType::kNone)},
56 { GrColorType::kAlpha_F16, GrBackendFormat::MakeMock(GrColorType::kAlpha_F16,
57 SkImage::CompressionType::kNone)},
58 { GrColorType::kRGBA_F16, GrBackendFormat::MakeMock(GrColorType::kRGBA_F16,
59 SkImage::CompressionType::kNone)},
60 { GrColorType::kRGBA_F16_Clamped,GrBackendFormat::MakeMock(GrColorType::kRGBA_F16_Clamped,
61 SkImage::CompressionType::kNone)},
62 { GrColorType::kAlpha_16, GrBackendFormat::MakeMock(GrColorType::kAlpha_16,
63 SkImage::CompressionType::kNone)},
64 { GrColorType::kRG_1616, GrBackendFormat::MakeMock(GrColorType::kRG_1616,
65 SkImage::CompressionType::kNone)},
66 { GrColorType::kRGBA_16161616, GrBackendFormat::MakeMock(GrColorType::kRGBA_16161616,
67 SkImage::CompressionType::kNone)},
68 { GrColorType::kRG_F16, GrBackendFormat::MakeMock(GrColorType::kRG_F16,
69 SkImage::CompressionType::kNone)},
70 // For these two compressed image formats the color type will effectively be RGB_888x
71 { GrColorType::kRGB_888x, GrBackendFormat::MakeMock(GrColorType::kUnknown,
72 SkImage::CompressionType::kETC2_RGB8_UNORM)},
73 { GrColorType::kRGB_888x, GrBackendFormat::MakeMock(GrColorType::kUnknown,
74 SkImage::CompressionType::kBC1_RGB8_UNORM)},
75 { GrColorType::kRGBA_8888, GrBackendFormat::MakeMock(GrColorType::kUnknown,
76 SkImage::CompressionType::kBC1_RGBA8_UNORM)},
77 };
78
79 #ifdef SK_DEBUG
80 for (const GrCaps::TestFormatColorTypeCombination& combo : combos) {
81 SkASSERT(this->onAreColorTypeAndFormatCompatible(combo.fColorType, combo.fFormat));
82 }
83 #endif
84
85 return combos;
86 }
87
88 #endif
89