1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by gen_vk_internal_shaders.py using data from shaders/src/*
3 //
4 // Copyright 2018 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // vk_internal_shaders_autogen.cpp:
9 // Pre-generated shader library for the ANGLE Vulkan back-end.
10
11 #include "libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h"
12
13 #define USE_SYSTEM_ZLIB
14 #include "compression_utils_portable.h"
15
16 namespace rx
17 {
18 namespace vk
19 {
20 namespace
21 {
22 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000000.inc"
23 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000001.inc"
24 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000002.inc"
25 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000003.inc"
26 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000004.inc"
27 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000005.inc"
28 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000006.inc"
29 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000007.inc"
30 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000008.inc"
31 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000009.inc"
32 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000A.inc"
33 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000B.inc"
34 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000C.inc"
35 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000D.inc"
36 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000E.inc"
37 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000F.inc"
38 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000010.inc"
39 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000011.inc"
40 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000012.inc"
41 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000013.inc"
42 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000014.inc"
43 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000015.inc"
44 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000016.inc"
45 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000017.inc"
46 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc"
47 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000001.inc"
48 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000002.inc"
49 #include "libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000003.inc"
50 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc"
51 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc"
52 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000002.inc"
53 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000003.inc"
54 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndexIndirectLineLoop.comp.00000000.inc"
55 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndexIndirectLineLoop.comp.00000001.inc"
56 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndexIndirectLineLoop.comp.00000002.inc"
57 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndirectLineLoop.comp.00000000.inc"
58 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000000.inc"
59 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000001.inc"
60 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000002.inc"
61 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000003.inc"
62 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000004.inc"
63 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000005.inc"
64 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000006.inc"
65 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000007.inc"
66 #include "libANGLE/renderer/vulkan/shaders/gen/CopyImageToBuffer.comp.00000000.inc"
67 #include "libANGLE/renderer/vulkan/shaders/gen/CopyImageToBuffer.comp.00000001.inc"
68 #include "libANGLE/renderer/vulkan/shaders/gen/EtcToBc.comp.00000000.inc"
69 #include "libANGLE/renderer/vulkan/shaders/gen/EtcToBc.comp.00000001.inc"
70 #include "libANGLE/renderer/vulkan/shaders/gen/ExportStencil.frag.00000000.inc"
71 #include "libANGLE/renderer/vulkan/shaders/gen/FullScreenTri.vert.00000000.inc"
72 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000000.inc"
73 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000001.inc"
74 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000002.inc"
75 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000003.inc"
76 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000004.inc"
77 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000005.inc"
78 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000006.inc"
79 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000007.inc"
80 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000008.inc"
81 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000009.inc"
82 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000000.inc"
83 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000001.inc"
84 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000002.inc"
85 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000003.inc"
86 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000004.inc"
87 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000005.inc"
88 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000006.inc"
89 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000007.inc"
90 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000008.inc"
91 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000009.inc"
92 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000A.inc"
93 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000B.inc"
94 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000C.inc"
95 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000D.inc"
96 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000E.inc"
97 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000F.inc"
98 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000010.inc"
99 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000011.inc"
100 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000012.inc"
101 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000013.inc"
102 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000014.inc"
103 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000015.inc"
104 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000016.inc"
105 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000017.inc"
106 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000018.inc"
107 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000019.inc"
108 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000001A.inc"
109 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000001B.inc"
110 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000001C.inc"
111 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000001D.inc"
112 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000001E.inc"
113 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000001F.inc"
114 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000020.inc"
115 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000021.inc"
116 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000022.inc"
117 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000023.inc"
118 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000024.inc"
119 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000025.inc"
120 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000026.inc"
121 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000027.inc"
122 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000028.inc"
123 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000029.inc"
124 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000002A.inc"
125 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000002B.inc"
126 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000002C.inc"
127 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000002D.inc"
128 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000002E.inc"
129 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000002F.inc"
130 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000000.inc"
131 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc"
132 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc"
133 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc"
134 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc"
135 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc"
136 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc"
137 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000007.inc"
138 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc"
139 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc"
140 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc"
141 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc"
142 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc"
143 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc"
144 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc"
145 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc"
146 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc"
147 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc"
148 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000016.inc"
149 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000017.inc"
150 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000018.inc"
151 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000019.inc"
152 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001A.inc"
153 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001B.inc"
154 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000020.inc"
155 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000021.inc"
156 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000022.inc"
157 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000023.inc"
158 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000024.inc"
159 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000025.inc"
160 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000026.inc"
161 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000027.inc"
162 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000028.inc"
163 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000029.inc"
164 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002A.inc"
165 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002B.inc"
166 #include "libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.frag.00000000.inc"
167 #include "libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.vert.00000000.inc"
168
169 // This is compressed SPIR-V binary blob and size
170 struct CompressedShaderBlob
171 {
172 const uint8_t *code;
173 uint32_t size;
174 };
175
176 constexpr CompressedShaderBlob kBlitResolve_frag_shaders[] = {
177 {kBlitResolve_frag_00000000, sizeof(kBlitResolve_frag_00000000)},
178 {kBlitResolve_frag_00000001, sizeof(kBlitResolve_frag_00000001)},
179 {kBlitResolve_frag_00000002, sizeof(kBlitResolve_frag_00000002)},
180 {kBlitResolve_frag_00000003, sizeof(kBlitResolve_frag_00000003)},
181 {kBlitResolve_frag_00000004, sizeof(kBlitResolve_frag_00000004)},
182 {kBlitResolve_frag_00000005, sizeof(kBlitResolve_frag_00000005)},
183 {kBlitResolve_frag_00000006, sizeof(kBlitResolve_frag_00000006)},
184 {kBlitResolve_frag_00000007, sizeof(kBlitResolve_frag_00000007)},
185 {kBlitResolve_frag_00000008, sizeof(kBlitResolve_frag_00000008)},
186 {kBlitResolve_frag_00000009, sizeof(kBlitResolve_frag_00000009)},
187 {kBlitResolve_frag_0000000A, sizeof(kBlitResolve_frag_0000000A)},
188 {kBlitResolve_frag_0000000B, sizeof(kBlitResolve_frag_0000000B)},
189 {kBlitResolve_frag_0000000C, sizeof(kBlitResolve_frag_0000000C)},
190 {kBlitResolve_frag_0000000D, sizeof(kBlitResolve_frag_0000000D)},
191 {kBlitResolve_frag_0000000E, sizeof(kBlitResolve_frag_0000000E)},
192 {kBlitResolve_frag_0000000F, sizeof(kBlitResolve_frag_0000000F)},
193 {kBlitResolve_frag_00000010, sizeof(kBlitResolve_frag_00000010)},
194 {kBlitResolve_frag_00000011, sizeof(kBlitResolve_frag_00000011)},
195 {kBlitResolve_frag_00000012, sizeof(kBlitResolve_frag_00000012)},
196 {kBlitResolve_frag_00000013, sizeof(kBlitResolve_frag_00000013)},
197 {kBlitResolve_frag_00000014, sizeof(kBlitResolve_frag_00000014)},
198 {kBlitResolve_frag_00000015, sizeof(kBlitResolve_frag_00000015)},
199 {kBlitResolve_frag_00000016, sizeof(kBlitResolve_frag_00000016)},
200 {kBlitResolve_frag_00000017, sizeof(kBlitResolve_frag_00000017)},
201 };
202 constexpr CompressedShaderBlob kBlitResolveStencilNoExport_comp_shaders[] = {
203 {kBlitResolveStencilNoExport_comp_00000000, sizeof(kBlitResolveStencilNoExport_comp_00000000)},
204 {kBlitResolveStencilNoExport_comp_00000001, sizeof(kBlitResolveStencilNoExport_comp_00000001)},
205 {kBlitResolveStencilNoExport_comp_00000002, sizeof(kBlitResolveStencilNoExport_comp_00000002)},
206 {kBlitResolveStencilNoExport_comp_00000003, sizeof(kBlitResolveStencilNoExport_comp_00000003)},
207 };
208 constexpr CompressedShaderBlob kConvertIndex_comp_shaders[] = {
209 {kConvertIndex_comp_00000000, sizeof(kConvertIndex_comp_00000000)},
210 {kConvertIndex_comp_00000001, sizeof(kConvertIndex_comp_00000001)},
211 {kConvertIndex_comp_00000002, sizeof(kConvertIndex_comp_00000002)},
212 {kConvertIndex_comp_00000003, sizeof(kConvertIndex_comp_00000003)},
213 };
214 constexpr CompressedShaderBlob kConvertIndexIndirectLineLoop_comp_shaders[] = {
215 {kConvertIndexIndirectLineLoop_comp_00000000,
216 sizeof(kConvertIndexIndirectLineLoop_comp_00000000)},
217 {kConvertIndexIndirectLineLoop_comp_00000001,
218 sizeof(kConvertIndexIndirectLineLoop_comp_00000001)},
219 {kConvertIndexIndirectLineLoop_comp_00000002,
220 sizeof(kConvertIndexIndirectLineLoop_comp_00000002)},
221 };
222 constexpr CompressedShaderBlob kConvertIndirectLineLoop_comp_shaders[] = {
223 {kConvertIndirectLineLoop_comp_00000000, sizeof(kConvertIndirectLineLoop_comp_00000000)},
224 };
225 constexpr CompressedShaderBlob kConvertVertex_comp_shaders[] = {
226 {kConvertVertex_comp_00000000, sizeof(kConvertVertex_comp_00000000)},
227 {kConvertVertex_comp_00000001, sizeof(kConvertVertex_comp_00000001)},
228 {kConvertVertex_comp_00000002, sizeof(kConvertVertex_comp_00000002)},
229 {kConvertVertex_comp_00000003, sizeof(kConvertVertex_comp_00000003)},
230 {kConvertVertex_comp_00000004, sizeof(kConvertVertex_comp_00000004)},
231 {kConvertVertex_comp_00000005, sizeof(kConvertVertex_comp_00000005)},
232 {kConvertVertex_comp_00000006, sizeof(kConvertVertex_comp_00000006)},
233 {kConvertVertex_comp_00000007, sizeof(kConvertVertex_comp_00000007)},
234 };
235 constexpr CompressedShaderBlob kCopyImageToBuffer_comp_shaders[] = {
236 {kCopyImageToBuffer_comp_00000000, sizeof(kCopyImageToBuffer_comp_00000000)},
237 {kCopyImageToBuffer_comp_00000001, sizeof(kCopyImageToBuffer_comp_00000001)},
238 };
239 constexpr CompressedShaderBlob kEtcToBc_comp_shaders[] = {
240 {kEtcToBc_comp_00000000, sizeof(kEtcToBc_comp_00000000)},
241 {kEtcToBc_comp_00000001, sizeof(kEtcToBc_comp_00000001)},
242 };
243 constexpr CompressedShaderBlob kExportStencil_frag_shaders[] = {
244 {kExportStencil_frag_00000000, sizeof(kExportStencil_frag_00000000)},
245 };
246 constexpr CompressedShaderBlob kFullScreenTri_vert_shaders[] = {
247 {kFullScreenTri_vert_00000000, sizeof(kFullScreenTri_vert_00000000)},
248 };
249 constexpr CompressedShaderBlob kGenerateMipmap_comp_shaders[] = {
250 {kGenerateMipmap_comp_00000000, sizeof(kGenerateMipmap_comp_00000000)},
251 {kGenerateMipmap_comp_00000001, sizeof(kGenerateMipmap_comp_00000001)},
252 {kGenerateMipmap_comp_00000002, sizeof(kGenerateMipmap_comp_00000002)},
253 {kGenerateMipmap_comp_00000003, sizeof(kGenerateMipmap_comp_00000003)},
254 {kGenerateMipmap_comp_00000004, sizeof(kGenerateMipmap_comp_00000004)},
255 {kGenerateMipmap_comp_00000005, sizeof(kGenerateMipmap_comp_00000005)},
256 {kGenerateMipmap_comp_00000006, sizeof(kGenerateMipmap_comp_00000006)},
257 {kGenerateMipmap_comp_00000007, sizeof(kGenerateMipmap_comp_00000007)},
258 {kGenerateMipmap_comp_00000008, sizeof(kGenerateMipmap_comp_00000008)},
259 {kGenerateMipmap_comp_00000009, sizeof(kGenerateMipmap_comp_00000009)},
260 };
261 constexpr CompressedShaderBlob kImageClear_frag_shaders[] = {
262 {kImageClear_frag_00000000, sizeof(kImageClear_frag_00000000)},
263 {kImageClear_frag_00000001, sizeof(kImageClear_frag_00000001)},
264 {kImageClear_frag_00000002, sizeof(kImageClear_frag_00000002)},
265 {kImageClear_frag_00000003, sizeof(kImageClear_frag_00000003)},
266 {kImageClear_frag_00000004, sizeof(kImageClear_frag_00000004)},
267 {kImageClear_frag_00000005, sizeof(kImageClear_frag_00000005)},
268 {kImageClear_frag_00000006, sizeof(kImageClear_frag_00000006)},
269 {kImageClear_frag_00000007, sizeof(kImageClear_frag_00000007)},
270 {kImageClear_frag_00000008, sizeof(kImageClear_frag_00000008)},
271 {kImageClear_frag_00000009, sizeof(kImageClear_frag_00000009)},
272 {kImageClear_frag_0000000A, sizeof(kImageClear_frag_0000000A)},
273 {kImageClear_frag_0000000B, sizeof(kImageClear_frag_0000000B)},
274 {kImageClear_frag_0000000C, sizeof(kImageClear_frag_0000000C)},
275 {kImageClear_frag_0000000D, sizeof(kImageClear_frag_0000000D)},
276 {kImageClear_frag_0000000E, sizeof(kImageClear_frag_0000000E)},
277 {kImageClear_frag_0000000F, sizeof(kImageClear_frag_0000000F)},
278 {kImageClear_frag_00000010, sizeof(kImageClear_frag_00000010)},
279 {kImageClear_frag_00000011, sizeof(kImageClear_frag_00000011)},
280 {kImageClear_frag_00000012, sizeof(kImageClear_frag_00000012)},
281 {kImageClear_frag_00000013, sizeof(kImageClear_frag_00000013)},
282 {kImageClear_frag_00000014, sizeof(kImageClear_frag_00000014)},
283 {kImageClear_frag_00000015, sizeof(kImageClear_frag_00000015)},
284 {kImageClear_frag_00000016, sizeof(kImageClear_frag_00000016)},
285 {kImageClear_frag_00000017, sizeof(kImageClear_frag_00000017)},
286 {kImageClear_frag_00000018, sizeof(kImageClear_frag_00000018)},
287 {kImageClear_frag_00000019, sizeof(kImageClear_frag_00000019)},
288 {kImageClear_frag_0000001A, sizeof(kImageClear_frag_0000001A)},
289 {kImageClear_frag_0000001B, sizeof(kImageClear_frag_0000001B)},
290 {kImageClear_frag_0000001C, sizeof(kImageClear_frag_0000001C)},
291 {kImageClear_frag_0000001D, sizeof(kImageClear_frag_0000001D)},
292 {kImageClear_frag_0000001E, sizeof(kImageClear_frag_0000001E)},
293 {kImageClear_frag_0000001F, sizeof(kImageClear_frag_0000001F)},
294 {kImageClear_frag_00000020, sizeof(kImageClear_frag_00000020)},
295 {kImageClear_frag_00000021, sizeof(kImageClear_frag_00000021)},
296 {kImageClear_frag_00000022, sizeof(kImageClear_frag_00000022)},
297 {kImageClear_frag_00000023, sizeof(kImageClear_frag_00000023)},
298 {kImageClear_frag_00000024, sizeof(kImageClear_frag_00000024)},
299 {kImageClear_frag_00000025, sizeof(kImageClear_frag_00000025)},
300 {kImageClear_frag_00000026, sizeof(kImageClear_frag_00000026)},
301 {kImageClear_frag_00000027, sizeof(kImageClear_frag_00000027)},
302 {kImageClear_frag_00000028, sizeof(kImageClear_frag_00000028)},
303 {kImageClear_frag_00000029, sizeof(kImageClear_frag_00000029)},
304 {kImageClear_frag_0000002A, sizeof(kImageClear_frag_0000002A)},
305 {kImageClear_frag_0000002B, sizeof(kImageClear_frag_0000002B)},
306 {kImageClear_frag_0000002C, sizeof(kImageClear_frag_0000002C)},
307 {kImageClear_frag_0000002D, sizeof(kImageClear_frag_0000002D)},
308 {kImageClear_frag_0000002E, sizeof(kImageClear_frag_0000002E)},
309 {kImageClear_frag_0000002F, sizeof(kImageClear_frag_0000002F)},
310 };
311 constexpr CompressedShaderBlob kImageCopy_frag_shaders[] = {
312 {kImageCopy_frag_00000000, sizeof(kImageCopy_frag_00000000)},
313 {kImageCopy_frag_00000001, sizeof(kImageCopy_frag_00000001)},
314 {kImageCopy_frag_00000002, sizeof(kImageCopy_frag_00000002)},
315 {kImageCopy_frag_00000003, sizeof(kImageCopy_frag_00000003)},
316 {kImageCopy_frag_00000004, sizeof(kImageCopy_frag_00000004)},
317 {kImageCopy_frag_00000005, sizeof(kImageCopy_frag_00000005)},
318 {kImageCopy_frag_00000006, sizeof(kImageCopy_frag_00000006)},
319 {kImageCopy_frag_00000007, sizeof(kImageCopy_frag_00000007)},
320 {kImageCopy_frag_00000008, sizeof(kImageCopy_frag_00000008)},
321 {kImageCopy_frag_00000009, sizeof(kImageCopy_frag_00000009)},
322 {kImageCopy_frag_0000000A, sizeof(kImageCopy_frag_0000000A)},
323 {kImageCopy_frag_0000000B, sizeof(kImageCopy_frag_0000000B)},
324 {nullptr, 0}, // 0x0000000C
325 {nullptr, 0}, // 0x0000000D
326 {nullptr, 0}, // 0x0000000E
327 {nullptr, 0}, // 0x0000000F
328 {kImageCopy_frag_00000010, sizeof(kImageCopy_frag_00000010)},
329 {kImageCopy_frag_00000011, sizeof(kImageCopy_frag_00000011)},
330 {kImageCopy_frag_00000012, sizeof(kImageCopy_frag_00000012)},
331 {kImageCopy_frag_00000013, sizeof(kImageCopy_frag_00000013)},
332 {kImageCopy_frag_00000014, sizeof(kImageCopy_frag_00000014)},
333 {kImageCopy_frag_00000015, sizeof(kImageCopy_frag_00000015)},
334 {kImageCopy_frag_00000016, sizeof(kImageCopy_frag_00000016)},
335 {kImageCopy_frag_00000017, sizeof(kImageCopy_frag_00000017)},
336 {kImageCopy_frag_00000018, sizeof(kImageCopy_frag_00000018)},
337 {kImageCopy_frag_00000019, sizeof(kImageCopy_frag_00000019)},
338 {kImageCopy_frag_0000001A, sizeof(kImageCopy_frag_0000001A)},
339 {kImageCopy_frag_0000001B, sizeof(kImageCopy_frag_0000001B)},
340 {nullptr, 0}, // 0x0000001C
341 {nullptr, 0}, // 0x0000001D
342 {nullptr, 0}, // 0x0000001E
343 {nullptr, 0}, // 0x0000001F
344 {kImageCopy_frag_00000020, sizeof(kImageCopy_frag_00000020)},
345 {kImageCopy_frag_00000021, sizeof(kImageCopy_frag_00000021)},
346 {kImageCopy_frag_00000022, sizeof(kImageCopy_frag_00000022)},
347 {kImageCopy_frag_00000023, sizeof(kImageCopy_frag_00000023)},
348 {kImageCopy_frag_00000024, sizeof(kImageCopy_frag_00000024)},
349 {kImageCopy_frag_00000025, sizeof(kImageCopy_frag_00000025)},
350 {kImageCopy_frag_00000026, sizeof(kImageCopy_frag_00000026)},
351 {kImageCopy_frag_00000027, sizeof(kImageCopy_frag_00000027)},
352 {kImageCopy_frag_00000028, sizeof(kImageCopy_frag_00000028)},
353 {kImageCopy_frag_00000029, sizeof(kImageCopy_frag_00000029)},
354 {kImageCopy_frag_0000002A, sizeof(kImageCopy_frag_0000002A)},
355 {kImageCopy_frag_0000002B, sizeof(kImageCopy_frag_0000002B)},
356 };
357 constexpr CompressedShaderBlob kOverlayDraw_frag_shaders[] = {
358 {kOverlayDraw_frag_00000000, sizeof(kOverlayDraw_frag_00000000)},
359 };
360 constexpr CompressedShaderBlob kOverlayDraw_vert_shaders[] = {
361 {kOverlayDraw_vert_00000000, sizeof(kOverlayDraw_vert_00000000)},
362 };
363
GetShader(Context * context,RefCounted<ShaderModule> * shaders,const CompressedShaderBlob * compressedShaderBlobs,size_t shadersCount,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)364 angle::Result GetShader(Context *context,
365 RefCounted<ShaderModule> *shaders,
366 const CompressedShaderBlob *compressedShaderBlobs,
367 size_t shadersCount,
368 uint32_t shaderFlags,
369 RefCounted<ShaderModule> **shaderOut)
370 {
371 ASSERT(shaderFlags < shadersCount);
372 RefCounted<ShaderModule> &shader = shaders[shaderFlags];
373 *shaderOut = &shader;
374
375 if (shader.get().valid())
376 {
377 return angle::Result::Continue;
378 }
379
380 // Create shader lazily. Access will need to be locked for multi-threading.
381 const CompressedShaderBlob &compressedShaderCode = compressedShaderBlobs[shaderFlags];
382 ASSERT(compressedShaderCode.code != nullptr);
383
384 uLong uncompressedSize = zlib_internal::GetGzipUncompressedSize(compressedShaderCode.code,
385 compressedShaderCode.size);
386 std::vector<uint32_t> shaderCode((uncompressedSize + 3) / 4, 0);
387
388 // Note: we assume a little-endian environment throughout ANGLE.
389 int zResult = zlib_internal::GzipUncompressHelper(
390 reinterpret_cast<uint8_t *>(shaderCode.data()), &uncompressedSize,
391 compressedShaderCode.code, compressedShaderCode.size);
392
393 if (zResult != Z_OK)
394 {
395 ERR() << "Failure to decompressed internal shader: " << zResult << "\n";
396 return angle::Result::Stop;
397 }
398
399 return InitShaderModule(context, &shader.get(), shaderCode.data(), shaderCode.size() * 4);
400 }
401 } // anonymous namespace
402
ShaderLibrary()403 ShaderLibrary::ShaderLibrary() {}
404
~ShaderLibrary()405 ShaderLibrary::~ShaderLibrary() {}
406
destroy(VkDevice device)407 void ShaderLibrary::destroy(VkDevice device)
408 {
409 for (RefCounted<ShaderModule> &shader : mBlitResolve_frag_shaders)
410 {
411 shader.get().destroy(device);
412 }
413 for (RefCounted<ShaderModule> &shader : mBlitResolveStencilNoExport_comp_shaders)
414 {
415 shader.get().destroy(device);
416 }
417 for (RefCounted<ShaderModule> &shader : mConvertIndex_comp_shaders)
418 {
419 shader.get().destroy(device);
420 }
421 for (RefCounted<ShaderModule> &shader : mConvertIndexIndirectLineLoop_comp_shaders)
422 {
423 shader.get().destroy(device);
424 }
425 for (RefCounted<ShaderModule> &shader : mConvertIndirectLineLoop_comp_shaders)
426 {
427 shader.get().destroy(device);
428 }
429 for (RefCounted<ShaderModule> &shader : mConvertVertex_comp_shaders)
430 {
431 shader.get().destroy(device);
432 }
433 for (RefCounted<ShaderModule> &shader : mCopyImageToBuffer_comp_shaders)
434 {
435 shader.get().destroy(device);
436 }
437 for (RefCounted<ShaderModule> &shader : mEtcToBc_comp_shaders)
438 {
439 shader.get().destroy(device);
440 }
441 for (RefCounted<ShaderModule> &shader : mExportStencil_frag_shaders)
442 {
443 shader.get().destroy(device);
444 }
445 for (RefCounted<ShaderModule> &shader : mFullScreenTri_vert_shaders)
446 {
447 shader.get().destroy(device);
448 }
449 for (RefCounted<ShaderModule> &shader : mGenerateMipmap_comp_shaders)
450 {
451 shader.get().destroy(device);
452 }
453 for (RefCounted<ShaderModule> &shader : mImageClear_frag_shaders)
454 {
455 shader.get().destroy(device);
456 }
457 for (RefCounted<ShaderModule> &shader : mImageCopy_frag_shaders)
458 {
459 shader.get().destroy(device);
460 }
461 for (RefCounted<ShaderModule> &shader : mOverlayDraw_frag_shaders)
462 {
463 shader.get().destroy(device);
464 }
465 for (RefCounted<ShaderModule> &shader : mOverlayDraw_vert_shaders)
466 {
467 shader.get().destroy(device);
468 }
469 }
470
getBlitResolve_frag(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)471 angle::Result ShaderLibrary::getBlitResolve_frag(Context *context,
472 uint32_t shaderFlags,
473 RefCounted<ShaderModule> **shaderOut)
474 {
475 return GetShader(context, mBlitResolve_frag_shaders, kBlitResolve_frag_shaders,
476 ArraySize(kBlitResolve_frag_shaders), shaderFlags, shaderOut);
477 }
478
getBlitResolveStencilNoExport_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)479 angle::Result ShaderLibrary::getBlitResolveStencilNoExport_comp(
480 Context *context,
481 uint32_t shaderFlags,
482 RefCounted<ShaderModule> **shaderOut)
483 {
484 return GetShader(context, mBlitResolveStencilNoExport_comp_shaders,
485 kBlitResolveStencilNoExport_comp_shaders,
486 ArraySize(kBlitResolveStencilNoExport_comp_shaders), shaderFlags, shaderOut);
487 }
488
getConvertIndex_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)489 angle::Result ShaderLibrary::getConvertIndex_comp(Context *context,
490 uint32_t shaderFlags,
491 RefCounted<ShaderModule> **shaderOut)
492 {
493 return GetShader(context, mConvertIndex_comp_shaders, kConvertIndex_comp_shaders,
494 ArraySize(kConvertIndex_comp_shaders), shaderFlags, shaderOut);
495 }
496
getConvertIndexIndirectLineLoop_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)497 angle::Result ShaderLibrary::getConvertIndexIndirectLineLoop_comp(
498 Context *context,
499 uint32_t shaderFlags,
500 RefCounted<ShaderModule> **shaderOut)
501 {
502 return GetShader(context, mConvertIndexIndirectLineLoop_comp_shaders,
503 kConvertIndexIndirectLineLoop_comp_shaders,
504 ArraySize(kConvertIndexIndirectLineLoop_comp_shaders), shaderFlags, shaderOut);
505 }
506
getConvertIndirectLineLoop_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)507 angle::Result ShaderLibrary::getConvertIndirectLineLoop_comp(Context *context,
508 uint32_t shaderFlags,
509 RefCounted<ShaderModule> **shaderOut)
510 {
511 return GetShader(context, mConvertIndirectLineLoop_comp_shaders,
512 kConvertIndirectLineLoop_comp_shaders,
513 ArraySize(kConvertIndirectLineLoop_comp_shaders), shaderFlags, shaderOut);
514 }
515
getConvertVertex_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)516 angle::Result ShaderLibrary::getConvertVertex_comp(Context *context,
517 uint32_t shaderFlags,
518 RefCounted<ShaderModule> **shaderOut)
519 {
520 return GetShader(context, mConvertVertex_comp_shaders, kConvertVertex_comp_shaders,
521 ArraySize(kConvertVertex_comp_shaders), shaderFlags, shaderOut);
522 }
523
getCopyImageToBuffer_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)524 angle::Result ShaderLibrary::getCopyImageToBuffer_comp(Context *context,
525 uint32_t shaderFlags,
526 RefCounted<ShaderModule> **shaderOut)
527 {
528 return GetShader(context, mCopyImageToBuffer_comp_shaders, kCopyImageToBuffer_comp_shaders,
529 ArraySize(kCopyImageToBuffer_comp_shaders), shaderFlags, shaderOut);
530 }
531
getEtcToBc_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)532 angle::Result ShaderLibrary::getEtcToBc_comp(Context *context,
533 uint32_t shaderFlags,
534 RefCounted<ShaderModule> **shaderOut)
535 {
536 return GetShader(context, mEtcToBc_comp_shaders, kEtcToBc_comp_shaders,
537 ArraySize(kEtcToBc_comp_shaders), shaderFlags, shaderOut);
538 }
539
getExportStencil_frag(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)540 angle::Result ShaderLibrary::getExportStencil_frag(Context *context,
541 uint32_t shaderFlags,
542 RefCounted<ShaderModule> **shaderOut)
543 {
544 return GetShader(context, mExportStencil_frag_shaders, kExportStencil_frag_shaders,
545 ArraySize(kExportStencil_frag_shaders), shaderFlags, shaderOut);
546 }
547
getFullScreenTri_vert(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)548 angle::Result ShaderLibrary::getFullScreenTri_vert(Context *context,
549 uint32_t shaderFlags,
550 RefCounted<ShaderModule> **shaderOut)
551 {
552 return GetShader(context, mFullScreenTri_vert_shaders, kFullScreenTri_vert_shaders,
553 ArraySize(kFullScreenTri_vert_shaders), shaderFlags, shaderOut);
554 }
555
getGenerateMipmap_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)556 angle::Result ShaderLibrary::getGenerateMipmap_comp(Context *context,
557 uint32_t shaderFlags,
558 RefCounted<ShaderModule> **shaderOut)
559 {
560 return GetShader(context, mGenerateMipmap_comp_shaders, kGenerateMipmap_comp_shaders,
561 ArraySize(kGenerateMipmap_comp_shaders), shaderFlags, shaderOut);
562 }
563
getImageClear_frag(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)564 angle::Result ShaderLibrary::getImageClear_frag(Context *context,
565 uint32_t shaderFlags,
566 RefCounted<ShaderModule> **shaderOut)
567 {
568 return GetShader(context, mImageClear_frag_shaders, kImageClear_frag_shaders,
569 ArraySize(kImageClear_frag_shaders), shaderFlags, shaderOut);
570 }
571
getImageCopy_frag(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)572 angle::Result ShaderLibrary::getImageCopy_frag(Context *context,
573 uint32_t shaderFlags,
574 RefCounted<ShaderModule> **shaderOut)
575 {
576 return GetShader(context, mImageCopy_frag_shaders, kImageCopy_frag_shaders,
577 ArraySize(kImageCopy_frag_shaders), shaderFlags, shaderOut);
578 }
579
getOverlayDraw_frag(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)580 angle::Result ShaderLibrary::getOverlayDraw_frag(Context *context,
581 uint32_t shaderFlags,
582 RefCounted<ShaderModule> **shaderOut)
583 {
584 return GetShader(context, mOverlayDraw_frag_shaders, kOverlayDraw_frag_shaders,
585 ArraySize(kOverlayDraw_frag_shaders), shaderFlags, shaderOut);
586 }
587
getOverlayDraw_vert(Context * context,uint32_t shaderFlags,RefCounted<ShaderModule> ** shaderOut)588 angle::Result ShaderLibrary::getOverlayDraw_vert(Context *context,
589 uint32_t shaderFlags,
590 RefCounted<ShaderModule> **shaderOut)
591 {
592 return GetShader(context, mOverlayDraw_vert_shaders, kOverlayDraw_vert_shaders,
593 ArraySize(kOverlayDraw_vert_shaders), shaderFlags, shaderOut);
594 }
595
596 } // namespace vk
597 } // namespace rx
598