OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "GrVkUtil.h" | 8 #include "GrVkUtil.h" |
9 | 9 |
10 bool GrPixelConfigToVkFormat(GrPixelConfig config, VkFormat* format) { | 10 bool GrPixelConfigToVkFormat(GrPixelConfig config, VkFormat* format) { |
11 VkFormat dontCare; | 11 VkFormat dontCare; |
12 if (!format) { | 12 if (!format) { |
13 format = &dontCare; | 13 format = &dontCare; |
14 } | 14 } |
15 | 15 |
16 switch (config) { | 16 switch (config) { |
17 case kRGBA_8888_GrPixelConfig: | 17 case kRGBA_8888_GrPixelConfig: |
18 *format = VK_FORMAT_R8G8B8A8_UNORM; | 18 *format = VK_FORMAT_R8G8B8A8_UNORM; |
19 break; | 19 break; |
20 case kBGRA_8888_GrPixelConfig: | 20 case kBGRA_8888_GrPixelConfig: |
21 *format = VK_FORMAT_B8G8R8A8_UNORM; | 21 *format = VK_FORMAT_B8G8R8A8_UNORM; |
22 break; | 22 break; |
23 case kSRGBA_8888_GrPixelConfig: | 23 case kSRGBA_8888_GrPixelConfig: |
24 *format = VK_FORMAT_R8G8B8A8_SRGB; | 24 *format = VK_FORMAT_R8G8B8A8_SRGB; |
25 break; | 25 break; |
| 26 case kSBGRA_8888_GrPixelConfig: |
| 27 *format = VK_FORMAT_B8G8R8A8_SRGB; |
| 28 break; |
26 case kRGB_565_GrPixelConfig: | 29 case kRGB_565_GrPixelConfig: |
27 *format = VK_FORMAT_R5G6B5_UNORM_PACK16; | 30 *format = VK_FORMAT_R5G6B5_UNORM_PACK16; |
28 break; | 31 break; |
29 case kRGBA_4444_GrPixelConfig: | 32 case kRGBA_4444_GrPixelConfig: |
30 *format = VK_FORMAT_R4G4B4A4_UNORM_PACK16; | 33 *format = VK_FORMAT_R4G4B4A4_UNORM_PACK16; |
31 break; | 34 break; |
32 case kIndex_8_GrPixelConfig: | 35 case kIndex_8_GrPixelConfig: |
33 // No current rad support for this config | 36 // No current vulkan support for this config |
34 return false; | 37 return false; |
35 case kAlpha_8_GrPixelConfig: | 38 case kAlpha_8_GrPixelConfig: |
36 *format = VK_FORMAT_R8_UNORM; | 39 *format = VK_FORMAT_R8_UNORM; |
37 break; | 40 break; |
38 case kETC1_GrPixelConfig: | 41 case kETC1_GrPixelConfig: |
39 // converting to ETC2 which is a superset of ETC1 | 42 // converting to ETC2 which is a superset of ETC1 |
40 *format = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK; | 43 *format = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK; |
41 break; | 44 break; |
42 case kLATC_GrPixelConfig: | 45 case kLATC_GrPixelConfig: |
43 // No current rad support for this config | 46 // No current vulkan support for this config |
44 return false; | 47 return false; |
45 case kR11_EAC_GrPixelConfig: | 48 case kR11_EAC_GrPixelConfig: |
46 *format = VK_FORMAT_EAC_R11_UNORM_BLOCK; | 49 *format = VK_FORMAT_EAC_R11_UNORM_BLOCK; |
47 break; | 50 break; |
48 case kASTC_12x12_GrPixelConfig: | 51 case kASTC_12x12_GrPixelConfig: |
49 *format = VK_FORMAT_ASTC_12x12_UNORM_BLOCK; | 52 *format = VK_FORMAT_ASTC_12x12_UNORM_BLOCK; |
50 break; | 53 break; |
51 case kRGBA_float_GrPixelConfig: | 54 case kRGBA_float_GrPixelConfig: |
52 *format = VK_FORMAT_R32G32B32A32_SFLOAT; | 55 *format = VK_FORMAT_R32G32B32A32_SFLOAT; |
53 break; | 56 break; |
54 case kRGBA_half_GrPixelConfig: | 57 case kRGBA_half_GrPixelConfig: |
55 *format = VK_FORMAT_R16G16B16A16_SFLOAT; | 58 *format = VK_FORMAT_R16G16B16A16_SFLOAT; |
56 break; | 59 break; |
57 case kAlpha_half_GrPixelConfig: | 60 case kAlpha_half_GrPixelConfig: |
58 *format = VK_FORMAT_R16_SFLOAT; | 61 *format = VK_FORMAT_R16_SFLOAT; |
59 break; | 62 break; |
60 default: | 63 default: |
61 return false; | 64 return false; |
62 } | 65 } |
63 return true; | 66 return true; |
64 } | 67 } |
65 | 68 |
| 69 bool GrVkFormatToPixelConfig(VkFormat format, GrPixelConfig* config) { |
| 70 GrPixelConfig dontCare; |
| 71 if (!config) { |
| 72 config = &dontCare; |
| 73 } |
| 74 |
| 75 switch (format) { |
| 76 case VK_FORMAT_R8G8B8A8_UNORM: |
| 77 *config = kRGBA_8888_GrPixelConfig; |
| 78 break; |
| 79 case VK_FORMAT_B8G8R8A8_UNORM: |
| 80 *config = kBGRA_8888_GrPixelConfig; |
| 81 break; |
| 82 case VK_FORMAT_R8G8B8A8_SRGB: |
| 83 *config = kSRGBA_8888_GrPixelConfig; |
| 84 break; |
| 85 case VK_FORMAT_B8G8R8A8_SRGB: |
| 86 *config = kSBGRA_8888_GrPixelConfig; |
| 87 break; |
| 88 case VK_FORMAT_R5G6B5_UNORM_PACK16: |
| 89 *config = kRGB_565_GrPixelConfig; |
| 90 break; |
| 91 case VK_FORMAT_R4G4B4A4_UNORM_PACK16: |
| 92 *config = kRGBA_4444_GrPixelConfig; |
| 93 break; |
| 94 case VK_FORMAT_R8_UNORM: |
| 95 *config = kAlpha_8_GrPixelConfig; |
| 96 break; |
| 97 case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: |
| 98 *config = kETC1_GrPixelConfig; |
| 99 break; |
| 100 case VK_FORMAT_EAC_R11_UNORM_BLOCK: |
| 101 *config = kR11_EAC_GrPixelConfig; |
| 102 break; |
| 103 case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: |
| 104 *config = kASTC_12x12_GrPixelConfig; |
| 105 break; |
| 106 case VK_FORMAT_R32G32B32A32_SFLOAT: |
| 107 *config = kRGBA_float_GrPixelConfig; |
| 108 break; |
| 109 case VK_FORMAT_R16G16B16A16_SFLOAT: |
| 110 *config = kRGBA_half_GrPixelConfig; |
| 111 break; |
| 112 case VK_FORMAT_R16_SFLOAT: |
| 113 *config = kAlpha_half_GrPixelConfig; |
| 114 break; |
| 115 default: |
| 116 return false; |
| 117 } |
| 118 return true; |
| 119 } |
| 120 |
66 bool GrSampleCountToVkSampleCount(uint32_t samples, VkSampleCountFlagBits* vkSam
ples) { | 121 bool GrSampleCountToVkSampleCount(uint32_t samples, VkSampleCountFlagBits* vkSam
ples) { |
67 switch (samples) { | 122 switch (samples) { |
68 case 0: // fall through | 123 case 0: // fall through |
69 case 1: | 124 case 1: |
70 *vkSamples = VK_SAMPLE_COUNT_1_BIT; | 125 *vkSamples = VK_SAMPLE_COUNT_1_BIT; |
71 return true; | 126 return true; |
72 case 2: | 127 case 2: |
73 *vkSamples = VK_SAMPLE_COUNT_2_BIT; | 128 *vkSamples = VK_SAMPLE_COUNT_2_BIT; |
74 return true; | 129 return true; |
75 case 4: | 130 case 4: |
76 *vkSamples = VK_SAMPLE_COUNT_2_BIT; | 131 *vkSamples = VK_SAMPLE_COUNT_2_BIT; |
77 return true; | 132 return true; |
78 case 8: | 133 case 8: |
79 *vkSamples = VK_SAMPLE_COUNT_2_BIT; | 134 *vkSamples = VK_SAMPLE_COUNT_2_BIT; |
80 return true; | 135 return true; |
81 case 16: | 136 case 16: |
82 *vkSamples = VK_SAMPLE_COUNT_2_BIT; | 137 *vkSamples = VK_SAMPLE_COUNT_2_BIT; |
83 return true; | 138 return true; |
84 case 32: | 139 case 32: |
85 *vkSamples = VK_SAMPLE_COUNT_2_BIT; | 140 *vkSamples = VK_SAMPLE_COUNT_2_BIT; |
86 return true; | 141 return true; |
87 case 64: | 142 case 64: |
88 *vkSamples = VK_SAMPLE_COUNT_2_BIT; | 143 *vkSamples = VK_SAMPLE_COUNT_2_BIT; |
89 return true; | 144 return true; |
90 default: | 145 default: |
91 return false; | 146 return false; |
92 } | 147 } |
93 } | 148 } |
OLD | NEW |