• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2015 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 
8 #include "GrVkUtil.h"
9 
GrPixelConfigToVkFormat(GrPixelConfig config,VkFormat * format)10 bool GrPixelConfigToVkFormat(GrPixelConfig config, VkFormat* format) {
11     VkFormat dontCare;
12     if (!format) {
13         format = &dontCare;
14     }
15 
16     switch (config) {
17         case kRGBA_8888_GrPixelConfig:
18             *format = VK_FORMAT_R8G8B8A8_UNORM;
19             break;
20         case kBGRA_8888_GrPixelConfig:
21             *format = VK_FORMAT_B8G8R8A8_UNORM;
22             break;
23         case kSRGBA_8888_GrPixelConfig:
24             *format = VK_FORMAT_R8G8B8A8_SRGB;
25             break;
26         case kRGB_565_GrPixelConfig:
27             *format = VK_FORMAT_R5G6B5_UNORM_PACK16;
28             break;
29         case kRGBA_4444_GrPixelConfig:
30             *format = VK_FORMAT_R4G4B4A4_UNORM_PACK16;
31             break;
32         case kIndex_8_GrPixelConfig:
33             // No current rad support for this config
34             return false;
35         case kAlpha_8_GrPixelConfig:
36             *format = VK_FORMAT_R8_UNORM;
37             break;
38         case kETC1_GrPixelConfig:
39             // converting to ETC2 which is a superset of ETC1
40             *format = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK;
41             break;
42         case kLATC_GrPixelConfig:
43             // No current rad support for this config
44             return false;
45         case kR11_EAC_GrPixelConfig:
46             *format = VK_FORMAT_EAC_R11_UNORM_BLOCK;
47             break;
48         case kASTC_12x12_GrPixelConfig:
49             *format = VK_FORMAT_ASTC_12x12_UNORM_BLOCK;
50             break;
51         case kRGBA_float_GrPixelConfig:
52             *format = VK_FORMAT_R32G32B32A32_SFLOAT;
53             break;
54         case kRGBA_half_GrPixelConfig:
55             *format = VK_FORMAT_R16G16B16A16_SFLOAT;
56             break;
57         case kAlpha_half_GrPixelConfig:
58             *format = VK_FORMAT_R16_SFLOAT;
59             break;
60         default:
61             return false;
62     }
63     return true;
64 }
65 
GrSampleCountToVkSampleCount(uint32_t samples,VkSampleCountFlagBits * vkSamples)66 bool GrSampleCountToVkSampleCount(uint32_t samples, VkSampleCountFlagBits* vkSamples) {
67     switch (samples) {
68         case 0: // fall through
69         case 1:
70             *vkSamples = VK_SAMPLE_COUNT_1_BIT;
71             return true;
72         case 2:
73             *vkSamples = VK_SAMPLE_COUNT_2_BIT;
74             return true;
75         case 4:
76             *vkSamples = VK_SAMPLE_COUNT_2_BIT;
77             return true;
78         case 8:
79             *vkSamples = VK_SAMPLE_COUNT_2_BIT;
80             return true;
81         case 16:
82             *vkSamples = VK_SAMPLE_COUNT_2_BIT;
83             return true;
84         case 32:
85             *vkSamples = VK_SAMPLE_COUNT_2_BIT;
86             return true;
87         case 64:
88             *vkSamples = VK_SAMPLE_COUNT_2_BIT;
89             return true;
90         default:
91             return false;
92     }
93 }
94 
95