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