blob: e1ffa37cd411092b2c0afd1ba5312a1ece1b186d [file] [log] [blame]
Jon Ashburn6cb69f42015-11-17 15:31:02 -07001/*
Jon Ashburn1c75aec2016-02-02 17:47:28 -07002 * Copyright (c) 2015-2016 The Khronos Group Inc.
3 * Copyright (c) 2015-2016 Valve Corporation
4 * Copyright (c) 2015-2016 LunarG, Inc.
Jon Ashburn6cb69f42015-11-17 15:31:02 -07005 *
Jon Ashburn4f80d672016-04-19 11:30:31 -06006 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
Jon Ashburn6cb69f42015-11-17 15:31:02 -07009 *
Jon Ashburn4f80d672016-04-19 11:30:31 -060010 * http://www.apache.org/licenses/LICENSE-2.0
Jon Ashburn6cb69f42015-11-17 15:31:02 -070011 *
Jon Ashburn4f80d672016-04-19 11:30:31 -060012 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
Jon Ashburn6cb69f42015-11-17 15:31:02 -070017 *
18 * Author: Jon Ashburn <jon@lunarg.com>
19 */
20
21#include "vk_loader_platform.h"
22#include "loader.h"
Frank Henigman6e725582016-12-21 22:21:41 -050023#if defined(__GNUC__) && !defined(__clang__)
Jon Ashburn1c75aec2016-02-02 17:47:28 -070024#pragma GCC optimize(3) // force gcc to use tail-calls
Jon Ashburn6cb69f42015-11-17 15:31:02 -070025#endif
26
Mark Young274e4bc2017-01-19 21:10:49 -070027 // Trampoline function macro for unknown physical device extension command.
28#define DevExtTramp(num) \
29VKAPI_ATTR void VKAPI_CALL vkdev_ext##num(VkDevice device) { \
30 const struct loader_dev_dispatch_table *disp; \
31 disp = loader_get_dev_dispatch(device); \
32 disp->ext_dispatch.dev_ext[num](device); \
33 }
Jon Ashburn6cb69f42015-11-17 15:31:02 -070034
Mark Young274e4bc2017-01-19 21:10:49 -070035DevExtTramp(0)
36DevExtTramp(1)
37DevExtTramp(2)
38DevExtTramp(3)
39DevExtTramp(4)
40DevExtTramp(5)
41DevExtTramp(6)
42DevExtTramp(7)
43DevExtTramp(8)
44DevExtTramp(9)
45DevExtTramp(10)
46DevExtTramp(11)
47DevExtTramp(12)
48DevExtTramp(13)
49DevExtTramp(14)
50DevExtTramp(15)
51DevExtTramp(16)
52DevExtTramp(17)
53DevExtTramp(18)
54DevExtTramp(19)
55DevExtTramp(20)
56DevExtTramp(21)
57DevExtTramp(22)
58DevExtTramp(23)
59DevExtTramp(24)
60DevExtTramp(25)
61DevExtTramp(26)
62DevExtTramp(27)
63DevExtTramp(28)
64DevExtTramp(29)
65DevExtTramp(30)
66DevExtTramp(31)
67DevExtTramp(32)
68DevExtTramp(33)
69DevExtTramp(34)
70DevExtTramp(35)
71DevExtTramp(36)
72DevExtTramp(37)
73DevExtTramp(38)
74DevExtTramp(39)
75DevExtTramp(40)
76DevExtTramp(41)
77DevExtTramp(42)
78DevExtTramp(43)
79DevExtTramp(44)
80DevExtTramp(45)
81DevExtTramp(46)
82DevExtTramp(47)
83DevExtTramp(48)
84DevExtTramp(49)
85DevExtTramp(50)
86DevExtTramp(51)
87DevExtTramp(52)
88DevExtTramp(53)
89DevExtTramp(54)
90DevExtTramp(55)
91DevExtTramp(56)
92DevExtTramp(57)
93DevExtTramp(58)
94DevExtTramp(59)
95DevExtTramp(60)
96DevExtTramp(61)
97DevExtTramp(62)
98DevExtTramp(63)
99DevExtTramp(64)
100DevExtTramp(65)
101DevExtTramp(66)
102DevExtTramp(67)
103DevExtTramp(68)
104DevExtTramp(69)
105DevExtTramp(70)
106DevExtTramp(71)
107DevExtTramp(72)
108DevExtTramp(73)
109DevExtTramp(74)
110DevExtTramp(75)
111DevExtTramp(76)
112DevExtTramp(77)
113DevExtTramp(78)
114DevExtTramp(79)
115DevExtTramp(80)
116DevExtTramp(81)
117DevExtTramp(82)
118DevExtTramp(83)
119DevExtTramp(84)
120DevExtTramp(85)
121DevExtTramp(86)
122DevExtTramp(87)
123DevExtTramp(88)
124DevExtTramp(89)
125DevExtTramp(90)
126DevExtTramp(91)
127DevExtTramp(92)
128DevExtTramp(93)
129DevExtTramp(94)
130DevExtTramp(95)
131DevExtTramp(96)
132DevExtTramp(97)
133DevExtTramp(98)
134DevExtTramp(99)
135DevExtTramp(100)
136DevExtTramp(101)
137DevExtTramp(102)
138DevExtTramp(103)
139DevExtTramp(104)
140DevExtTramp(105)
141DevExtTramp(106)
142DevExtTramp(107)
143DevExtTramp(108)
144DevExtTramp(109)
145DevExtTramp(110)
146DevExtTramp(111)
147DevExtTramp(112)
148DevExtTramp(113)
149DevExtTramp(114)
150DevExtTramp(115)
151DevExtTramp(116)
152DevExtTramp(117)
153DevExtTramp(118)
154DevExtTramp(119)
155DevExtTramp(120)
156DevExtTramp(121)
157DevExtTramp(122)
158DevExtTramp(123)
159DevExtTramp(124)
160DevExtTramp(125)
161DevExtTramp(126)
162DevExtTramp(127)
163DevExtTramp(128)
164DevExtTramp(129)
165DevExtTramp(130)
166DevExtTramp(131)
167DevExtTramp(132)
168DevExtTramp(133)
169DevExtTramp(134)
170DevExtTramp(135)
171DevExtTramp(136)
172DevExtTramp(137)
173DevExtTramp(138)
174DevExtTramp(139)
175DevExtTramp(140)
176DevExtTramp(141)
177DevExtTramp(142)
178DevExtTramp(143)
179DevExtTramp(144)
180DevExtTramp(145)
181DevExtTramp(146)
182DevExtTramp(147)
183DevExtTramp(148)
184DevExtTramp(149)
185DevExtTramp(150)
186DevExtTramp(151)
187DevExtTramp(152)
188DevExtTramp(153)
189DevExtTramp(154)
190DevExtTramp(155)
191DevExtTramp(156)
192DevExtTramp(157)
193DevExtTramp(158)
194DevExtTramp(159)
195DevExtTramp(160)
196DevExtTramp(161)
197DevExtTramp(162)
198DevExtTramp(163)
199DevExtTramp(164)
200DevExtTramp(165)
201DevExtTramp(166)
202DevExtTramp(167)
203DevExtTramp(168)
204DevExtTramp(169)
205DevExtTramp(170)
206DevExtTramp(171)
207DevExtTramp(172)
208DevExtTramp(173)
209DevExtTramp(174)
210DevExtTramp(175)
211DevExtTramp(176)
212DevExtTramp(177)
213DevExtTramp(178)
214DevExtTramp(179)
215DevExtTramp(180)
216DevExtTramp(181)
217DevExtTramp(182)
218DevExtTramp(183)
219DevExtTramp(184)
220DevExtTramp(185)
221DevExtTramp(186)
222DevExtTramp(187)
223DevExtTramp(188)
224DevExtTramp(189)
225DevExtTramp(190)
226DevExtTramp(191)
227DevExtTramp(192)
228DevExtTramp(193)
229DevExtTramp(194)
230DevExtTramp(195)
231DevExtTramp(196)
232DevExtTramp(197)
233DevExtTramp(198)
234DevExtTramp(199)
235DevExtTramp(200)
236DevExtTramp(201)
237DevExtTramp(202)
238DevExtTramp(203)
239DevExtTramp(204)
240DevExtTramp(205)
241DevExtTramp(206)
242DevExtTramp(207)
243DevExtTramp(208)
244DevExtTramp(209)
245DevExtTramp(210)
246DevExtTramp(211)
247DevExtTramp(212)
248DevExtTramp(213)
249DevExtTramp(214)
250DevExtTramp(215)
251DevExtTramp(216)
252DevExtTramp(217)
253DevExtTramp(218)
254DevExtTramp(219)
255DevExtTramp(220)
256DevExtTramp(221)
257DevExtTramp(222)
258DevExtTramp(223)
259DevExtTramp(224)
260DevExtTramp(225)
261DevExtTramp(226)
262DevExtTramp(227)
263DevExtTramp(228)
264DevExtTramp(229)
265DevExtTramp(230)
266DevExtTramp(231)
267DevExtTramp(232)
268DevExtTramp(233)
269DevExtTramp(234)
270DevExtTramp(235)
271DevExtTramp(236)
272DevExtTramp(237)
273DevExtTramp(238)
274DevExtTramp(239)
275DevExtTramp(240)
276DevExtTramp(241)
277DevExtTramp(242)
278DevExtTramp(243)
279DevExtTramp(244)
280DevExtTramp(245)
281DevExtTramp(246)
282DevExtTramp(247)
283DevExtTramp(248)
284DevExtTramp(249)
Jon Ashburn6cb69f42015-11-17 15:31:02 -0700285
Jon Ashburn1c75aec2016-02-02 17:47:28 -0700286void *loader_get_dev_ext_trampoline(uint32_t index) {
Jon Ashburn6cb69f42015-11-17 15:31:02 -0700287 switch (index) {
Mark Young274e4bc2017-01-19 21:10:49 -0700288#define CASE_HANDLE(num) case num: return vkdev_ext##num
289 CASE_HANDLE(0);
290 CASE_HANDLE(1);
291 CASE_HANDLE(2);
292 CASE_HANDLE(3);
293 CASE_HANDLE(4);
294 CASE_HANDLE(5);
295 CASE_HANDLE(6);
296 CASE_HANDLE(7);
297 CASE_HANDLE(8);
298 CASE_HANDLE(9);
299 CASE_HANDLE(10);
300 CASE_HANDLE(11);
301 CASE_HANDLE(12);
302 CASE_HANDLE(13);
303 CASE_HANDLE(14);
304 CASE_HANDLE(15);
305 CASE_HANDLE(16);
306 CASE_HANDLE(17);
307 CASE_HANDLE(18);
308 CASE_HANDLE(19);
309 CASE_HANDLE(20);
310 CASE_HANDLE(21);
311 CASE_HANDLE(22);
312 CASE_HANDLE(23);
313 CASE_HANDLE(24);
314 CASE_HANDLE(25);
315 CASE_HANDLE(26);
316 CASE_HANDLE(27);
317 CASE_HANDLE(28);
318 CASE_HANDLE(29);
319 CASE_HANDLE(30);
320 CASE_HANDLE(31);
321 CASE_HANDLE(32);
322 CASE_HANDLE(33);
323 CASE_HANDLE(34);
324 CASE_HANDLE(35);
325 CASE_HANDLE(36);
326 CASE_HANDLE(37);
327 CASE_HANDLE(38);
328 CASE_HANDLE(39);
329 CASE_HANDLE(40);
330 CASE_HANDLE(41);
331 CASE_HANDLE(42);
332 CASE_HANDLE(43);
333 CASE_HANDLE(44);
334 CASE_HANDLE(45);
335 CASE_HANDLE(46);
336 CASE_HANDLE(47);
337 CASE_HANDLE(48);
338 CASE_HANDLE(49);
339 CASE_HANDLE(50);
340 CASE_HANDLE(51);
341 CASE_HANDLE(52);
342 CASE_HANDLE(53);
343 CASE_HANDLE(54);
344 CASE_HANDLE(55);
345 CASE_HANDLE(56);
346 CASE_HANDLE(57);
347 CASE_HANDLE(58);
348 CASE_HANDLE(59);
349 CASE_HANDLE(60);
350 CASE_HANDLE(61);
351 CASE_HANDLE(62);
352 CASE_HANDLE(63);
353 CASE_HANDLE(64);
354 CASE_HANDLE(65);
355 CASE_HANDLE(66);
356 CASE_HANDLE(67);
357 CASE_HANDLE(68);
358 CASE_HANDLE(69);
359 CASE_HANDLE(70);
360 CASE_HANDLE(71);
361 CASE_HANDLE(72);
362 CASE_HANDLE(73);
363 CASE_HANDLE(74);
364 CASE_HANDLE(75);
365 CASE_HANDLE(76);
366 CASE_HANDLE(77);
367 CASE_HANDLE(78);
368 CASE_HANDLE(79);
369 CASE_HANDLE(80);
370 CASE_HANDLE(81);
371 CASE_HANDLE(82);
372 CASE_HANDLE(83);
373 CASE_HANDLE(84);
374 CASE_HANDLE(85);
375 CASE_HANDLE(86);
376 CASE_HANDLE(87);
377 CASE_HANDLE(88);
378 CASE_HANDLE(89);
379 CASE_HANDLE(90);
380 CASE_HANDLE(91);
381 CASE_HANDLE(92);
382 CASE_HANDLE(93);
383 CASE_HANDLE(94);
384 CASE_HANDLE(95);
385 CASE_HANDLE(96);
386 CASE_HANDLE(97);
387 CASE_HANDLE(98);
388 CASE_HANDLE(99);
389 CASE_HANDLE(100);
390 CASE_HANDLE(101);
391 CASE_HANDLE(102);
392 CASE_HANDLE(103);
393 CASE_HANDLE(104);
394 CASE_HANDLE(105);
395 CASE_HANDLE(106);
396 CASE_HANDLE(107);
397 CASE_HANDLE(108);
398 CASE_HANDLE(109);
399 CASE_HANDLE(110);
400 CASE_HANDLE(111);
401 CASE_HANDLE(112);
402 CASE_HANDLE(113);
403 CASE_HANDLE(114);
404 CASE_HANDLE(115);
405 CASE_HANDLE(116);
406 CASE_HANDLE(117);
407 CASE_HANDLE(118);
408 CASE_HANDLE(119);
409 CASE_HANDLE(120);
410 CASE_HANDLE(121);
411 CASE_HANDLE(122);
412 CASE_HANDLE(123);
413 CASE_HANDLE(124);
414 CASE_HANDLE(125);
415 CASE_HANDLE(126);
416 CASE_HANDLE(127);
417 CASE_HANDLE(128);
418 CASE_HANDLE(129);
419 CASE_HANDLE(130);
420 CASE_HANDLE(131);
421 CASE_HANDLE(132);
422 CASE_HANDLE(133);
423 CASE_HANDLE(134);
424 CASE_HANDLE(135);
425 CASE_HANDLE(136);
426 CASE_HANDLE(137);
427 CASE_HANDLE(138);
428 CASE_HANDLE(139);
429 CASE_HANDLE(140);
430 CASE_HANDLE(141);
431 CASE_HANDLE(142);
432 CASE_HANDLE(143);
433 CASE_HANDLE(144);
434 CASE_HANDLE(145);
435 CASE_HANDLE(146);
436 CASE_HANDLE(147);
437 CASE_HANDLE(148);
438 CASE_HANDLE(149);
439 CASE_HANDLE(150);
440 CASE_HANDLE(151);
441 CASE_HANDLE(152);
442 CASE_HANDLE(153);
443 CASE_HANDLE(154);
444 CASE_HANDLE(155);
445 CASE_HANDLE(156);
446 CASE_HANDLE(157);
447 CASE_HANDLE(158);
448 CASE_HANDLE(159);
449 CASE_HANDLE(160);
450 CASE_HANDLE(161);
451 CASE_HANDLE(162);
452 CASE_HANDLE(163);
453 CASE_HANDLE(164);
454 CASE_HANDLE(165);
455 CASE_HANDLE(166);
456 CASE_HANDLE(167);
457 CASE_HANDLE(168);
458 CASE_HANDLE(169);
459 CASE_HANDLE(170);
460 CASE_HANDLE(171);
461 CASE_HANDLE(172);
462 CASE_HANDLE(173);
463 CASE_HANDLE(174);
464 CASE_HANDLE(175);
465 CASE_HANDLE(176);
466 CASE_HANDLE(177);
467 CASE_HANDLE(178);
468 CASE_HANDLE(179);
469 CASE_HANDLE(180);
470 CASE_HANDLE(181);
471 CASE_HANDLE(182);
472 CASE_HANDLE(183);
473 CASE_HANDLE(184);
474 CASE_HANDLE(185);
475 CASE_HANDLE(186);
476 CASE_HANDLE(187);
477 CASE_HANDLE(188);
478 CASE_HANDLE(189);
479 CASE_HANDLE(190);
480 CASE_HANDLE(191);
481 CASE_HANDLE(192);
482 CASE_HANDLE(193);
483 CASE_HANDLE(194);
484 CASE_HANDLE(195);
485 CASE_HANDLE(196);
486 CASE_HANDLE(197);
487 CASE_HANDLE(198);
488 CASE_HANDLE(199);
489 CASE_HANDLE(200);
490 CASE_HANDLE(201);
491 CASE_HANDLE(202);
492 CASE_HANDLE(203);
493 CASE_HANDLE(204);
494 CASE_HANDLE(205);
495 CASE_HANDLE(206);
496 CASE_HANDLE(207);
497 CASE_HANDLE(208);
498 CASE_HANDLE(209);
499 CASE_HANDLE(210);
500 CASE_HANDLE(211);
501 CASE_HANDLE(212);
502 CASE_HANDLE(213);
503 CASE_HANDLE(214);
504 CASE_HANDLE(215);
505 CASE_HANDLE(216);
506 CASE_HANDLE(217);
507 CASE_HANDLE(218);
508 CASE_HANDLE(219);
509 CASE_HANDLE(220);
510 CASE_HANDLE(221);
511 CASE_HANDLE(222);
512 CASE_HANDLE(223);
513 CASE_HANDLE(224);
514 CASE_HANDLE(225);
515 CASE_HANDLE(226);
516 CASE_HANDLE(227);
517 CASE_HANDLE(228);
518 CASE_HANDLE(229);
519 CASE_HANDLE(230);
520 CASE_HANDLE(231);
521 CASE_HANDLE(232);
522 CASE_HANDLE(233);
523 CASE_HANDLE(234);
524 CASE_HANDLE(235);
525 CASE_HANDLE(236);
526 CASE_HANDLE(237);
527 CASE_HANDLE(238);
528 CASE_HANDLE(239);
529 CASE_HANDLE(240);
530 CASE_HANDLE(241);
531 CASE_HANDLE(242);
532 CASE_HANDLE(243);
533 CASE_HANDLE(244);
534 CASE_HANDLE(245);
535 CASE_HANDLE(246);
536 CASE_HANDLE(247);
537 CASE_HANDLE(248);
538 CASE_HANDLE(249);
Jon Ashburn6cb69f42015-11-17 15:31:02 -0700539 }
Mark Young274e4bc2017-01-19 21:10:49 -0700540
Jon Ashburn6cb69f42015-11-17 15:31:02 -0700541 return NULL;
542}