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/FullScreenTri.vert.00000000.inc"
67 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000000.inc"
68 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000001.inc"
69 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000002.inc"
70 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000003.inc"
71 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000004.inc"
72 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000005.inc"
73 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000006.inc"
74 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000007.inc"
75 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000008.inc"
76 #include "libANGLE/renderer/vulkan/shaders/gen/GenerateMipmap.comp.00000009.inc"
77 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000000.inc"
78 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000001.inc"
79 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000002.inc"
80 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000003.inc"
81 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000004.inc"
82 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000005.inc"
83 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000006.inc"
84 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000007.inc"
85 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000008.inc"
86 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000009.inc"
87 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000A.inc"
88 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000B.inc"
89 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000C.inc"
90 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000D.inc"
91 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000E.inc"
92 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000F.inc"
93 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000010.inc"
94 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000011.inc"
95 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000012.inc"
96 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000013.inc"
97 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000014.inc"
98 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000015.inc"
99 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000016.inc"
100 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000017.inc"
101 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000018.inc"
102 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000019.inc"
103 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000001A.inc"
104 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000001B.inc"
105 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000001C.inc"
106 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000001D.inc"
107 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000001E.inc"
108 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000001F.inc"
109 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000020.inc"
110 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000021.inc"
111 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000022.inc"
112 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000023.inc"
113 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000024.inc"
114 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000025.inc"
115 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000026.inc"
116 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000027.inc"
117 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000028.inc"
118 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000029.inc"
119 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000002A.inc"
120 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000002B.inc"
121 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000002C.inc"
122 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000002D.inc"
123 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000002E.inc"
124 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000002F.inc"
125 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000000.inc"
126 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc"
127 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc"
128 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc"
129 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc"
130 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000006.inc"
131 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc"
132 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc"
133 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc"
134 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc"
135 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc"
136 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc"
137 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc"
138 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc"
139 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000016.inc"
140 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000018.inc"
141 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000019.inc"
142 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000001A.inc"
143 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000020.inc"
144 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000021.inc"
145 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000022.inc"
146 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000024.inc"
147 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000025.inc"
148 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000026.inc"
149 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000028.inc"
150 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000029.inc"
151 #include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000002A.inc"
152 #include "libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.frag.00000000.inc"
153 #include "libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.vert.00000000.inc"
154
155 // This is compressed SPIR-V binary blob and size
156 struct CompressedShaderBlob
157 {
158 const uint8_t *code;
159 uint32_t size;
160 };
161
162 constexpr CompressedShaderBlob kBlitResolve_frag_shaders[] = {
163 {kBlitResolve_frag_00000000, sizeof(kBlitResolve_frag_00000000)},
164 {kBlitResolve_frag_00000001, sizeof(kBlitResolve_frag_00000001)},
165 {kBlitResolve_frag_00000002, sizeof(kBlitResolve_frag_00000002)},
166 {kBlitResolve_frag_00000003, sizeof(kBlitResolve_frag_00000003)},
167 {kBlitResolve_frag_00000004, sizeof(kBlitResolve_frag_00000004)},
168 {kBlitResolve_frag_00000005, sizeof(kBlitResolve_frag_00000005)},
169 {kBlitResolve_frag_00000006, sizeof(kBlitResolve_frag_00000006)},
170 {kBlitResolve_frag_00000007, sizeof(kBlitResolve_frag_00000007)},
171 {kBlitResolve_frag_00000008, sizeof(kBlitResolve_frag_00000008)},
172 {kBlitResolve_frag_00000009, sizeof(kBlitResolve_frag_00000009)},
173 {kBlitResolve_frag_0000000A, sizeof(kBlitResolve_frag_0000000A)},
174 {kBlitResolve_frag_0000000B, sizeof(kBlitResolve_frag_0000000B)},
175 {kBlitResolve_frag_0000000C, sizeof(kBlitResolve_frag_0000000C)},
176 {kBlitResolve_frag_0000000D, sizeof(kBlitResolve_frag_0000000D)},
177 {kBlitResolve_frag_0000000E, sizeof(kBlitResolve_frag_0000000E)},
178 {kBlitResolve_frag_0000000F, sizeof(kBlitResolve_frag_0000000F)},
179 {kBlitResolve_frag_00000010, sizeof(kBlitResolve_frag_00000010)},
180 {kBlitResolve_frag_00000011, sizeof(kBlitResolve_frag_00000011)},
181 {kBlitResolve_frag_00000012, sizeof(kBlitResolve_frag_00000012)},
182 {kBlitResolve_frag_00000013, sizeof(kBlitResolve_frag_00000013)},
183 {kBlitResolve_frag_00000014, sizeof(kBlitResolve_frag_00000014)},
184 {kBlitResolve_frag_00000015, sizeof(kBlitResolve_frag_00000015)},
185 {kBlitResolve_frag_00000016, sizeof(kBlitResolve_frag_00000016)},
186 {kBlitResolve_frag_00000017, sizeof(kBlitResolve_frag_00000017)},
187 };
188 constexpr CompressedShaderBlob kBlitResolveStencilNoExport_comp_shaders[] = {
189 {kBlitResolveStencilNoExport_comp_00000000, sizeof(kBlitResolveStencilNoExport_comp_00000000)},
190 {kBlitResolveStencilNoExport_comp_00000001, sizeof(kBlitResolveStencilNoExport_comp_00000001)},
191 {kBlitResolveStencilNoExport_comp_00000002, sizeof(kBlitResolveStencilNoExport_comp_00000002)},
192 {kBlitResolveStencilNoExport_comp_00000003, sizeof(kBlitResolveStencilNoExport_comp_00000003)},
193 };
194 constexpr CompressedShaderBlob kConvertIndex_comp_shaders[] = {
195 {kConvertIndex_comp_00000000, sizeof(kConvertIndex_comp_00000000)},
196 {kConvertIndex_comp_00000001, sizeof(kConvertIndex_comp_00000001)},
197 {kConvertIndex_comp_00000002, sizeof(kConvertIndex_comp_00000002)},
198 {kConvertIndex_comp_00000003, sizeof(kConvertIndex_comp_00000003)},
199 };
200 constexpr CompressedShaderBlob kConvertIndexIndirectLineLoop_comp_shaders[] = {
201 {kConvertIndexIndirectLineLoop_comp_00000000,
202 sizeof(kConvertIndexIndirectLineLoop_comp_00000000)},
203 {kConvertIndexIndirectLineLoop_comp_00000001,
204 sizeof(kConvertIndexIndirectLineLoop_comp_00000001)},
205 {kConvertIndexIndirectLineLoop_comp_00000002,
206 sizeof(kConvertIndexIndirectLineLoop_comp_00000002)},
207 };
208 constexpr CompressedShaderBlob kConvertIndirectLineLoop_comp_shaders[] = {
209 {kConvertIndirectLineLoop_comp_00000000, sizeof(kConvertIndirectLineLoop_comp_00000000)},
210 };
211 constexpr CompressedShaderBlob kConvertVertex_comp_shaders[] = {
212 {kConvertVertex_comp_00000000, sizeof(kConvertVertex_comp_00000000)},
213 {kConvertVertex_comp_00000001, sizeof(kConvertVertex_comp_00000001)},
214 {kConvertVertex_comp_00000002, sizeof(kConvertVertex_comp_00000002)},
215 {kConvertVertex_comp_00000003, sizeof(kConvertVertex_comp_00000003)},
216 {kConvertVertex_comp_00000004, sizeof(kConvertVertex_comp_00000004)},
217 {kConvertVertex_comp_00000005, sizeof(kConvertVertex_comp_00000005)},
218 {kConvertVertex_comp_00000006, sizeof(kConvertVertex_comp_00000006)},
219 {kConvertVertex_comp_00000007, sizeof(kConvertVertex_comp_00000007)},
220 };
221 constexpr CompressedShaderBlob kFullScreenTri_vert_shaders[] = {
222 {kFullScreenTri_vert_00000000, sizeof(kFullScreenTri_vert_00000000)},
223 };
224 constexpr CompressedShaderBlob kGenerateMipmap_comp_shaders[] = {
225 {kGenerateMipmap_comp_00000000, sizeof(kGenerateMipmap_comp_00000000)},
226 {kGenerateMipmap_comp_00000001, sizeof(kGenerateMipmap_comp_00000001)},
227 {kGenerateMipmap_comp_00000002, sizeof(kGenerateMipmap_comp_00000002)},
228 {kGenerateMipmap_comp_00000003, sizeof(kGenerateMipmap_comp_00000003)},
229 {kGenerateMipmap_comp_00000004, sizeof(kGenerateMipmap_comp_00000004)},
230 {kGenerateMipmap_comp_00000005, sizeof(kGenerateMipmap_comp_00000005)},
231 {kGenerateMipmap_comp_00000006, sizeof(kGenerateMipmap_comp_00000006)},
232 {kGenerateMipmap_comp_00000007, sizeof(kGenerateMipmap_comp_00000007)},
233 {kGenerateMipmap_comp_00000008, sizeof(kGenerateMipmap_comp_00000008)},
234 {kGenerateMipmap_comp_00000009, sizeof(kGenerateMipmap_comp_00000009)},
235 };
236 constexpr CompressedShaderBlob kImageClear_frag_shaders[] = {
237 {kImageClear_frag_00000000, sizeof(kImageClear_frag_00000000)},
238 {kImageClear_frag_00000001, sizeof(kImageClear_frag_00000001)},
239 {kImageClear_frag_00000002, sizeof(kImageClear_frag_00000002)},
240 {kImageClear_frag_00000003, sizeof(kImageClear_frag_00000003)},
241 {kImageClear_frag_00000004, sizeof(kImageClear_frag_00000004)},
242 {kImageClear_frag_00000005, sizeof(kImageClear_frag_00000005)},
243 {kImageClear_frag_00000006, sizeof(kImageClear_frag_00000006)},
244 {kImageClear_frag_00000007, sizeof(kImageClear_frag_00000007)},
245 {kImageClear_frag_00000008, sizeof(kImageClear_frag_00000008)},
246 {kImageClear_frag_00000009, sizeof(kImageClear_frag_00000009)},
247 {kImageClear_frag_0000000A, sizeof(kImageClear_frag_0000000A)},
248 {kImageClear_frag_0000000B, sizeof(kImageClear_frag_0000000B)},
249 {kImageClear_frag_0000000C, sizeof(kImageClear_frag_0000000C)},
250 {kImageClear_frag_0000000D, sizeof(kImageClear_frag_0000000D)},
251 {kImageClear_frag_0000000E, sizeof(kImageClear_frag_0000000E)},
252 {kImageClear_frag_0000000F, sizeof(kImageClear_frag_0000000F)},
253 {kImageClear_frag_00000010, sizeof(kImageClear_frag_00000010)},
254 {kImageClear_frag_00000011, sizeof(kImageClear_frag_00000011)},
255 {kImageClear_frag_00000012, sizeof(kImageClear_frag_00000012)},
256 {kImageClear_frag_00000013, sizeof(kImageClear_frag_00000013)},
257 {kImageClear_frag_00000014, sizeof(kImageClear_frag_00000014)},
258 {kImageClear_frag_00000015, sizeof(kImageClear_frag_00000015)},
259 {kImageClear_frag_00000016, sizeof(kImageClear_frag_00000016)},
260 {kImageClear_frag_00000017, sizeof(kImageClear_frag_00000017)},
261 {kImageClear_frag_00000018, sizeof(kImageClear_frag_00000018)},
262 {kImageClear_frag_00000019, sizeof(kImageClear_frag_00000019)},
263 {kImageClear_frag_0000001A, sizeof(kImageClear_frag_0000001A)},
264 {kImageClear_frag_0000001B, sizeof(kImageClear_frag_0000001B)},
265 {kImageClear_frag_0000001C, sizeof(kImageClear_frag_0000001C)},
266 {kImageClear_frag_0000001D, sizeof(kImageClear_frag_0000001D)},
267 {kImageClear_frag_0000001E, sizeof(kImageClear_frag_0000001E)},
268 {kImageClear_frag_0000001F, sizeof(kImageClear_frag_0000001F)},
269 {kImageClear_frag_00000020, sizeof(kImageClear_frag_00000020)},
270 {kImageClear_frag_00000021, sizeof(kImageClear_frag_00000021)},
271 {kImageClear_frag_00000022, sizeof(kImageClear_frag_00000022)},
272 {kImageClear_frag_00000023, sizeof(kImageClear_frag_00000023)},
273 {kImageClear_frag_00000024, sizeof(kImageClear_frag_00000024)},
274 {kImageClear_frag_00000025, sizeof(kImageClear_frag_00000025)},
275 {kImageClear_frag_00000026, sizeof(kImageClear_frag_00000026)},
276 {kImageClear_frag_00000027, sizeof(kImageClear_frag_00000027)},
277 {kImageClear_frag_00000028, sizeof(kImageClear_frag_00000028)},
278 {kImageClear_frag_00000029, sizeof(kImageClear_frag_00000029)},
279 {kImageClear_frag_0000002A, sizeof(kImageClear_frag_0000002A)},
280 {kImageClear_frag_0000002B, sizeof(kImageClear_frag_0000002B)},
281 {kImageClear_frag_0000002C, sizeof(kImageClear_frag_0000002C)},
282 {kImageClear_frag_0000002D, sizeof(kImageClear_frag_0000002D)},
283 {kImageClear_frag_0000002E, sizeof(kImageClear_frag_0000002E)},
284 {kImageClear_frag_0000002F, sizeof(kImageClear_frag_0000002F)},
285 };
286 constexpr CompressedShaderBlob kImageCopy_frag_shaders[] = {
287 {kImageCopy_frag_00000000, sizeof(kImageCopy_frag_00000000)},
288 {kImageCopy_frag_00000001, sizeof(kImageCopy_frag_00000001)},
289 {kImageCopy_frag_00000002, sizeof(kImageCopy_frag_00000002)},
290 {nullptr, 0}, // 0x00000003
291 {kImageCopy_frag_00000004, sizeof(kImageCopy_frag_00000004)},
292 {kImageCopy_frag_00000005, sizeof(kImageCopy_frag_00000005)},
293 {kImageCopy_frag_00000006, sizeof(kImageCopy_frag_00000006)},
294 {nullptr, 0}, // 0x00000007
295 {kImageCopy_frag_00000008, sizeof(kImageCopy_frag_00000008)},
296 {kImageCopy_frag_00000009, sizeof(kImageCopy_frag_00000009)},
297 {kImageCopy_frag_0000000A, sizeof(kImageCopy_frag_0000000A)},
298 {nullptr, 0}, // 0x0000000B
299 {nullptr, 0}, // 0x0000000C
300 {nullptr, 0}, // 0x0000000D
301 {nullptr, 0}, // 0x0000000E
302 {nullptr, 0}, // 0x0000000F
303 {kImageCopy_frag_00000010, sizeof(kImageCopy_frag_00000010)},
304 {kImageCopy_frag_00000011, sizeof(kImageCopy_frag_00000011)},
305 {kImageCopy_frag_00000012, sizeof(kImageCopy_frag_00000012)},
306 {nullptr, 0}, // 0x00000013
307 {kImageCopy_frag_00000014, sizeof(kImageCopy_frag_00000014)},
308 {kImageCopy_frag_00000015, sizeof(kImageCopy_frag_00000015)},
309 {kImageCopy_frag_00000016, sizeof(kImageCopy_frag_00000016)},
310 {nullptr, 0}, // 0x00000017
311 {kImageCopy_frag_00000018, sizeof(kImageCopy_frag_00000018)},
312 {kImageCopy_frag_00000019, sizeof(kImageCopy_frag_00000019)},
313 {kImageCopy_frag_0000001A, sizeof(kImageCopy_frag_0000001A)},
314 {nullptr, 0}, // 0x0000001B
315 {nullptr, 0}, // 0x0000001C
316 {nullptr, 0}, // 0x0000001D
317 {nullptr, 0}, // 0x0000001E
318 {nullptr, 0}, // 0x0000001F
319 {kImageCopy_frag_00000020, sizeof(kImageCopy_frag_00000020)},
320 {kImageCopy_frag_00000021, sizeof(kImageCopy_frag_00000021)},
321 {kImageCopy_frag_00000022, sizeof(kImageCopy_frag_00000022)},
322 {nullptr, 0}, // 0x00000023
323 {kImageCopy_frag_00000024, sizeof(kImageCopy_frag_00000024)},
324 {kImageCopy_frag_00000025, sizeof(kImageCopy_frag_00000025)},
325 {kImageCopy_frag_00000026, sizeof(kImageCopy_frag_00000026)},
326 {nullptr, 0}, // 0x00000027
327 {kImageCopy_frag_00000028, sizeof(kImageCopy_frag_00000028)},
328 {kImageCopy_frag_00000029, sizeof(kImageCopy_frag_00000029)},
329 {kImageCopy_frag_0000002A, sizeof(kImageCopy_frag_0000002A)},
330 };
331 constexpr CompressedShaderBlob kOverlayDraw_frag_shaders[] = {
332 {kOverlayDraw_frag_00000000, sizeof(kOverlayDraw_frag_00000000)},
333 };
334 constexpr CompressedShaderBlob kOverlayDraw_vert_shaders[] = {
335 {kOverlayDraw_vert_00000000, sizeof(kOverlayDraw_vert_00000000)},
336 };
337
GetShader(Context * context,RefCounted<ShaderAndSerial> * shaders,const CompressedShaderBlob * compressedShaderBlobs,size_t shadersCount,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)338 angle::Result GetShader(Context *context,
339 RefCounted<ShaderAndSerial> *shaders,
340 const CompressedShaderBlob *compressedShaderBlobs,
341 size_t shadersCount,
342 uint32_t shaderFlags,
343 RefCounted<ShaderAndSerial> **shaderOut)
344 {
345 ASSERT(shaderFlags < shadersCount);
346 RefCounted<ShaderAndSerial> &shader = shaders[shaderFlags];
347 *shaderOut = &shader;
348
349 if (shader.get().valid())
350 {
351 return angle::Result::Continue;
352 }
353
354 // Create shader lazily. Access will need to be locked for multi-threading.
355 const CompressedShaderBlob &compressedShaderCode = compressedShaderBlobs[shaderFlags];
356 ASSERT(compressedShaderCode.code != nullptr);
357
358 uLong uncompressedSize = zlib_internal::GetGzipUncompressedSize(compressedShaderCode.code,
359 compressedShaderCode.size);
360 std::vector<uint32_t> shaderCode((uncompressedSize + 3) / 4, 0);
361
362 // Note: we assume a little-endian environment throughout ANGLE.
363 int zResult = zlib_internal::GzipUncompressHelper(
364 reinterpret_cast<uint8_t *>(shaderCode.data()), &uncompressedSize,
365 compressedShaderCode.code, compressedShaderCode.size);
366
367 if (zResult != Z_OK)
368 {
369 ERR() << "Failure to decompressed internal shader: " << zResult << "\n";
370 return angle::Result::Stop;
371 }
372
373 return InitShaderAndSerial(context, &shader.get(), shaderCode.data(), shaderCode.size() * 4);
374 }
375 } // anonymous namespace
376
ShaderLibrary()377 ShaderLibrary::ShaderLibrary() {}
378
~ShaderLibrary()379 ShaderLibrary::~ShaderLibrary() {}
380
destroy(VkDevice device)381 void ShaderLibrary::destroy(VkDevice device)
382 {
383 for (RefCounted<ShaderAndSerial> &shader : mBlitResolve_frag_shaders)
384 {
385 shader.get().destroy(device);
386 }
387 for (RefCounted<ShaderAndSerial> &shader : mBlitResolveStencilNoExport_comp_shaders)
388 {
389 shader.get().destroy(device);
390 }
391 for (RefCounted<ShaderAndSerial> &shader : mConvertIndex_comp_shaders)
392 {
393 shader.get().destroy(device);
394 }
395 for (RefCounted<ShaderAndSerial> &shader : mConvertIndexIndirectLineLoop_comp_shaders)
396 {
397 shader.get().destroy(device);
398 }
399 for (RefCounted<ShaderAndSerial> &shader : mConvertIndirectLineLoop_comp_shaders)
400 {
401 shader.get().destroy(device);
402 }
403 for (RefCounted<ShaderAndSerial> &shader : mConvertVertex_comp_shaders)
404 {
405 shader.get().destroy(device);
406 }
407 for (RefCounted<ShaderAndSerial> &shader : mFullScreenTri_vert_shaders)
408 {
409 shader.get().destroy(device);
410 }
411 for (RefCounted<ShaderAndSerial> &shader : mGenerateMipmap_comp_shaders)
412 {
413 shader.get().destroy(device);
414 }
415 for (RefCounted<ShaderAndSerial> &shader : mImageClear_frag_shaders)
416 {
417 shader.get().destroy(device);
418 }
419 for (RefCounted<ShaderAndSerial> &shader : mImageCopy_frag_shaders)
420 {
421 shader.get().destroy(device);
422 }
423 for (RefCounted<ShaderAndSerial> &shader : mOverlayDraw_frag_shaders)
424 {
425 shader.get().destroy(device);
426 }
427 for (RefCounted<ShaderAndSerial> &shader : mOverlayDraw_vert_shaders)
428 {
429 shader.get().destroy(device);
430 }
431 }
432
getBlitResolve_frag(Context * context,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)433 angle::Result ShaderLibrary::getBlitResolve_frag(Context *context,
434 uint32_t shaderFlags,
435 RefCounted<ShaderAndSerial> **shaderOut)
436 {
437 return GetShader(context, mBlitResolve_frag_shaders, kBlitResolve_frag_shaders,
438 ArraySize(kBlitResolve_frag_shaders), shaderFlags, shaderOut);
439 }
440
getBlitResolveStencilNoExport_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)441 angle::Result ShaderLibrary::getBlitResolveStencilNoExport_comp(
442 Context *context,
443 uint32_t shaderFlags,
444 RefCounted<ShaderAndSerial> **shaderOut)
445 {
446 return GetShader(context, mBlitResolveStencilNoExport_comp_shaders,
447 kBlitResolveStencilNoExport_comp_shaders,
448 ArraySize(kBlitResolveStencilNoExport_comp_shaders), shaderFlags, shaderOut);
449 }
450
getConvertIndex_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)451 angle::Result ShaderLibrary::getConvertIndex_comp(Context *context,
452 uint32_t shaderFlags,
453 RefCounted<ShaderAndSerial> **shaderOut)
454 {
455 return GetShader(context, mConvertIndex_comp_shaders, kConvertIndex_comp_shaders,
456 ArraySize(kConvertIndex_comp_shaders), shaderFlags, shaderOut);
457 }
458
getConvertIndexIndirectLineLoop_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)459 angle::Result ShaderLibrary::getConvertIndexIndirectLineLoop_comp(
460 Context *context,
461 uint32_t shaderFlags,
462 RefCounted<ShaderAndSerial> **shaderOut)
463 {
464 return GetShader(context, mConvertIndexIndirectLineLoop_comp_shaders,
465 kConvertIndexIndirectLineLoop_comp_shaders,
466 ArraySize(kConvertIndexIndirectLineLoop_comp_shaders), shaderFlags, shaderOut);
467 }
468
getConvertIndirectLineLoop_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)469 angle::Result ShaderLibrary::getConvertIndirectLineLoop_comp(
470 Context *context,
471 uint32_t shaderFlags,
472 RefCounted<ShaderAndSerial> **shaderOut)
473 {
474 return GetShader(context, mConvertIndirectLineLoop_comp_shaders,
475 kConvertIndirectLineLoop_comp_shaders,
476 ArraySize(kConvertIndirectLineLoop_comp_shaders), shaderFlags, shaderOut);
477 }
478
getConvertVertex_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)479 angle::Result ShaderLibrary::getConvertVertex_comp(Context *context,
480 uint32_t shaderFlags,
481 RefCounted<ShaderAndSerial> **shaderOut)
482 {
483 return GetShader(context, mConvertVertex_comp_shaders, kConvertVertex_comp_shaders,
484 ArraySize(kConvertVertex_comp_shaders), shaderFlags, shaderOut);
485 }
486
getFullScreenTri_vert(Context * context,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)487 angle::Result ShaderLibrary::getFullScreenTri_vert(Context *context,
488 uint32_t shaderFlags,
489 RefCounted<ShaderAndSerial> **shaderOut)
490 {
491 return GetShader(context, mFullScreenTri_vert_shaders, kFullScreenTri_vert_shaders,
492 ArraySize(kFullScreenTri_vert_shaders), shaderFlags, shaderOut);
493 }
494
getGenerateMipmap_comp(Context * context,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)495 angle::Result ShaderLibrary::getGenerateMipmap_comp(Context *context,
496 uint32_t shaderFlags,
497 RefCounted<ShaderAndSerial> **shaderOut)
498 {
499 return GetShader(context, mGenerateMipmap_comp_shaders, kGenerateMipmap_comp_shaders,
500 ArraySize(kGenerateMipmap_comp_shaders), shaderFlags, shaderOut);
501 }
502
getImageClear_frag(Context * context,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)503 angle::Result ShaderLibrary::getImageClear_frag(Context *context,
504 uint32_t shaderFlags,
505 RefCounted<ShaderAndSerial> **shaderOut)
506 {
507 return GetShader(context, mImageClear_frag_shaders, kImageClear_frag_shaders,
508 ArraySize(kImageClear_frag_shaders), shaderFlags, shaderOut);
509 }
510
getImageCopy_frag(Context * context,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)511 angle::Result ShaderLibrary::getImageCopy_frag(Context *context,
512 uint32_t shaderFlags,
513 RefCounted<ShaderAndSerial> **shaderOut)
514 {
515 return GetShader(context, mImageCopy_frag_shaders, kImageCopy_frag_shaders,
516 ArraySize(kImageCopy_frag_shaders), shaderFlags, shaderOut);
517 }
518
getOverlayDraw_frag(Context * context,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)519 angle::Result ShaderLibrary::getOverlayDraw_frag(Context *context,
520 uint32_t shaderFlags,
521 RefCounted<ShaderAndSerial> **shaderOut)
522 {
523 return GetShader(context, mOverlayDraw_frag_shaders, kOverlayDraw_frag_shaders,
524 ArraySize(kOverlayDraw_frag_shaders), shaderFlags, shaderOut);
525 }
526
getOverlayDraw_vert(Context * context,uint32_t shaderFlags,RefCounted<ShaderAndSerial> ** shaderOut)527 angle::Result ShaderLibrary::getOverlayDraw_vert(Context *context,
528 uint32_t shaderFlags,
529 RefCounted<ShaderAndSerial> **shaderOut)
530 {
531 return GetShader(context, mOverlayDraw_vert_shaders, kOverlayDraw_vert_shaders,
532 ArraySize(kOverlayDraw_vert_shaders), shaderFlags, shaderOut);
533 }
534
535 } // namespace vk
536 } // namespace rx
537