/* * Copyright (c) 2015-2016 The Khronos Group Inc. * Copyright (c) 2015-2016 Valve Corporation * Copyright (c) 2015-2016 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Author: Jon Ashburn */ #include "vk_loader_platform.h" #include "loader.h" #if defined(__GNUC__) && !defined(__clang__) #pragma GCC optimize(3) // force gcc to use tail-calls #endif // Trampoline function macro for unknown physical device extension command. #define DevExtTramp(num) \ VKAPI_ATTR void VKAPI_CALL vkdev_ext##num(VkDevice device) { \ const struct loader_dev_dispatch_table *disp; \ disp = loader_get_dev_dispatch(device); \ disp->ext_dispatch.dev_ext[num](device); \ } DevExtTramp(0) DevExtTramp(1) DevExtTramp(2) DevExtTramp(3) DevExtTramp(4) DevExtTramp(5) DevExtTramp(6) DevExtTramp(7) DevExtTramp(8) DevExtTramp(9) DevExtTramp(10) DevExtTramp(11) DevExtTramp(12) DevExtTramp(13) DevExtTramp(14) DevExtTramp(15) DevExtTramp(16) DevExtTramp(17) DevExtTramp(18) DevExtTramp(19) DevExtTramp(20) DevExtTramp(21) DevExtTramp(22) DevExtTramp(23) DevExtTramp(24) DevExtTramp(25) DevExtTramp(26) DevExtTramp(27) DevExtTramp(28) DevExtTramp(29) DevExtTramp(30) DevExtTramp(31) DevExtTramp(32) DevExtTramp(33) DevExtTramp(34) DevExtTramp(35) DevExtTramp(36) DevExtTramp(37) DevExtTramp(38) DevExtTramp(39) DevExtTramp(40) DevExtTramp(41) DevExtTramp(42) DevExtTramp(43) DevExtTramp(44) DevExtTramp(45) DevExtTramp(46) DevExtTramp(47) DevExtTramp(48) DevExtTramp(49) DevExtTramp(50) DevExtTramp(51) DevExtTramp(52) DevExtTramp(53) DevExtTramp(54) DevExtTramp(55) DevExtTramp(56) DevExtTramp(57) DevExtTramp(58) DevExtTramp(59) DevExtTramp(60) DevExtTramp(61) DevExtTramp(62) DevExtTramp(63) DevExtTramp(64) DevExtTramp(65) DevExtTramp(66) DevExtTramp(67) DevExtTramp(68) DevExtTramp(69) DevExtTramp(70) DevExtTramp(71) DevExtTramp(72) DevExtTramp(73) DevExtTramp(74) DevExtTramp(75) DevExtTramp(76) DevExtTramp(77) DevExtTramp(78) DevExtTramp(79) DevExtTramp(80) DevExtTramp(81) DevExtTramp(82) DevExtTramp(83) DevExtTramp(84) DevExtTramp(85) DevExtTramp(86) DevExtTramp(87) DevExtTramp(88) DevExtTramp(89) DevExtTramp(90) DevExtTramp(91) DevExtTramp(92) DevExtTramp(93) DevExtTramp(94) DevExtTramp(95) DevExtTramp(96) DevExtTramp(97) DevExtTramp(98) DevExtTramp(99) DevExtTramp(100) DevExtTramp(101) DevExtTramp(102) DevExtTramp(103) DevExtTramp(104) DevExtTramp(105) DevExtTramp(106) DevExtTramp(107) DevExtTramp(108) DevExtTramp(109) DevExtTramp(110) DevExtTramp(111) DevExtTramp(112) DevExtTramp(113) DevExtTramp(114) DevExtTramp(115) DevExtTramp(116) DevExtTramp(117) DevExtTramp(118) DevExtTramp(119) DevExtTramp(120) DevExtTramp(121) DevExtTramp(122) DevExtTramp(123) DevExtTramp(124) DevExtTramp(125) DevExtTramp(126) DevExtTramp(127) DevExtTramp(128) DevExtTramp(129) DevExtTramp(130) DevExtTramp(131) DevExtTramp(132) DevExtTramp(133) DevExtTramp(134) DevExtTramp(135) DevExtTramp(136) DevExtTramp(137) DevExtTramp(138) DevExtTramp(139) DevExtTramp(140) DevExtTramp(141) DevExtTramp(142) DevExtTramp(143) DevExtTramp(144) DevExtTramp(145) DevExtTramp(146) DevExtTramp(147) DevExtTramp(148) DevExtTramp(149) DevExtTramp(150) DevExtTramp(151) DevExtTramp(152) DevExtTramp(153) DevExtTramp(154) DevExtTramp(155) DevExtTramp(156) DevExtTramp(157) DevExtTramp(158) DevExtTramp(159) DevExtTramp(160) DevExtTramp(161) DevExtTramp(162) DevExtTramp(163) DevExtTramp(164) DevExtTramp(165) DevExtTramp(166) DevExtTramp(167) DevExtTramp(168) DevExtTramp(169) DevExtTramp(170) DevExtTramp(171) DevExtTramp(172) DevExtTramp(173) DevExtTramp(174) DevExtTramp(175) DevExtTramp(176) DevExtTramp(177) DevExtTramp(178) DevExtTramp(179) DevExtTramp(180) DevExtTramp(181) DevExtTramp(182) DevExtTramp(183) DevExtTramp(184) DevExtTramp(185) DevExtTramp(186) DevExtTramp(187) DevExtTramp(188) DevExtTramp(189) DevExtTramp(190) DevExtTramp(191) DevExtTramp(192) DevExtTramp(193) DevExtTramp(194) DevExtTramp(195) DevExtTramp(196) DevExtTramp(197) DevExtTramp(198) DevExtTramp(199) DevExtTramp(200) DevExtTramp(201) DevExtTramp(202) DevExtTramp(203) DevExtTramp(204) DevExtTramp(205) DevExtTramp(206) DevExtTramp(207) DevExtTramp(208) DevExtTramp(209) DevExtTramp(210) DevExtTramp(211) DevExtTramp(212) DevExtTramp(213) DevExtTramp(214) DevExtTramp(215) DevExtTramp(216) DevExtTramp(217) DevExtTramp(218) DevExtTramp(219) DevExtTramp(220) DevExtTramp(221) DevExtTramp(222) DevExtTramp(223) DevExtTramp(224) DevExtTramp(225) DevExtTramp(226) DevExtTramp(227) DevExtTramp(228) DevExtTramp(229) DevExtTramp(230) DevExtTramp(231) DevExtTramp(232) DevExtTramp(233) DevExtTramp(234) DevExtTramp(235) DevExtTramp(236) DevExtTramp(237) DevExtTramp(238) DevExtTramp(239) DevExtTramp(240) DevExtTramp(241) DevExtTramp(242) DevExtTramp(243) DevExtTramp(244) DevExtTramp(245) DevExtTramp(246) DevExtTramp(247) DevExtTramp(248) DevExtTramp(249) void *loader_get_dev_ext_trampoline(uint32_t index) { switch (index) { #define CASE_HANDLE(num) case num: return vkdev_ext##num CASE_HANDLE(0); CASE_HANDLE(1); CASE_HANDLE(2); CASE_HANDLE(3); CASE_HANDLE(4); CASE_HANDLE(5); CASE_HANDLE(6); CASE_HANDLE(7); CASE_HANDLE(8); CASE_HANDLE(9); CASE_HANDLE(10); CASE_HANDLE(11); CASE_HANDLE(12); CASE_HANDLE(13); CASE_HANDLE(14); CASE_HANDLE(15); CASE_HANDLE(16); CASE_HANDLE(17); CASE_HANDLE(18); CASE_HANDLE(19); CASE_HANDLE(20); CASE_HANDLE(21); CASE_HANDLE(22); CASE_HANDLE(23); CASE_HANDLE(24); CASE_HANDLE(25); CASE_HANDLE(26); CASE_HANDLE(27); CASE_HANDLE(28); CASE_HANDLE(29); CASE_HANDLE(30); CASE_HANDLE(31); CASE_HANDLE(32); CASE_HANDLE(33); CASE_HANDLE(34); CASE_HANDLE(35); CASE_HANDLE(36); CASE_HANDLE(37); CASE_HANDLE(38); CASE_HANDLE(39); CASE_HANDLE(40); CASE_HANDLE(41); CASE_HANDLE(42); CASE_HANDLE(43); CASE_HANDLE(44); CASE_HANDLE(45); CASE_HANDLE(46); CASE_HANDLE(47); CASE_HANDLE(48); CASE_HANDLE(49); CASE_HANDLE(50); CASE_HANDLE(51); CASE_HANDLE(52); CASE_HANDLE(53); CASE_HANDLE(54); CASE_HANDLE(55); CASE_HANDLE(56); CASE_HANDLE(57); CASE_HANDLE(58); CASE_HANDLE(59); CASE_HANDLE(60); CASE_HANDLE(61); CASE_HANDLE(62); CASE_HANDLE(63); CASE_HANDLE(64); CASE_HANDLE(65); CASE_HANDLE(66); CASE_HANDLE(67); CASE_HANDLE(68); CASE_HANDLE(69); CASE_HANDLE(70); CASE_HANDLE(71); CASE_HANDLE(72); CASE_HANDLE(73); CASE_HANDLE(74); CASE_HANDLE(75); CASE_HANDLE(76); CASE_HANDLE(77); CASE_HANDLE(78); CASE_HANDLE(79); CASE_HANDLE(80); CASE_HANDLE(81); CASE_HANDLE(82); CASE_HANDLE(83); CASE_HANDLE(84); CASE_HANDLE(85); CASE_HANDLE(86); CASE_HANDLE(87); CASE_HANDLE(88); CASE_HANDLE(89); CASE_HANDLE(90); CASE_HANDLE(91); CASE_HANDLE(92); CASE_HANDLE(93); CASE_HANDLE(94); CASE_HANDLE(95); CASE_HANDLE(96); CASE_HANDLE(97); CASE_HANDLE(98); CASE_HANDLE(99); CASE_HANDLE(100); CASE_HANDLE(101); CASE_HANDLE(102); CASE_HANDLE(103); CASE_HANDLE(104); CASE_HANDLE(105); CASE_HANDLE(106); CASE_HANDLE(107); CASE_HANDLE(108); CASE_HANDLE(109); CASE_HANDLE(110); CASE_HANDLE(111); CASE_HANDLE(112); CASE_HANDLE(113); CASE_HANDLE(114); CASE_HANDLE(115); CASE_HANDLE(116); CASE_HANDLE(117); CASE_HANDLE(118); CASE_HANDLE(119); CASE_HANDLE(120); CASE_HANDLE(121); CASE_HANDLE(122); CASE_HANDLE(123); CASE_HANDLE(124); CASE_HANDLE(125); CASE_HANDLE(126); CASE_HANDLE(127); CASE_HANDLE(128); CASE_HANDLE(129); CASE_HANDLE(130); CASE_HANDLE(131); CASE_HANDLE(132); CASE_HANDLE(133); CASE_HANDLE(134); CASE_HANDLE(135); CASE_HANDLE(136); CASE_HANDLE(137); CASE_HANDLE(138); CASE_HANDLE(139); CASE_HANDLE(140); CASE_HANDLE(141); CASE_HANDLE(142); CASE_HANDLE(143); CASE_HANDLE(144); CASE_HANDLE(145); CASE_HANDLE(146); CASE_HANDLE(147); CASE_HANDLE(148); CASE_HANDLE(149); CASE_HANDLE(150); CASE_HANDLE(151); CASE_HANDLE(152); CASE_HANDLE(153); CASE_HANDLE(154); CASE_HANDLE(155); CASE_HANDLE(156); CASE_HANDLE(157); CASE_HANDLE(158); CASE_HANDLE(159); CASE_HANDLE(160); CASE_HANDLE(161); CASE_HANDLE(162); CASE_HANDLE(163); CASE_HANDLE(164); CASE_HANDLE(165); CASE_HANDLE(166); CASE_HANDLE(167); CASE_HANDLE(168); CASE_HANDLE(169); CASE_HANDLE(170); CASE_HANDLE(171); CASE_HANDLE(172); CASE_HANDLE(173); CASE_HANDLE(174); CASE_HANDLE(175); CASE_HANDLE(176); CASE_HANDLE(177); CASE_HANDLE(178); CASE_HANDLE(179); CASE_HANDLE(180); CASE_HANDLE(181); CASE_HANDLE(182); CASE_HANDLE(183); CASE_HANDLE(184); CASE_HANDLE(185); CASE_HANDLE(186); CASE_HANDLE(187); CASE_HANDLE(188); CASE_HANDLE(189); CASE_HANDLE(190); CASE_HANDLE(191); CASE_HANDLE(192); CASE_HANDLE(193); CASE_HANDLE(194); CASE_HANDLE(195); CASE_HANDLE(196); CASE_HANDLE(197); CASE_HANDLE(198); CASE_HANDLE(199); CASE_HANDLE(200); CASE_HANDLE(201); CASE_HANDLE(202); CASE_HANDLE(203); CASE_HANDLE(204); CASE_HANDLE(205); CASE_HANDLE(206); CASE_HANDLE(207); CASE_HANDLE(208); CASE_HANDLE(209); CASE_HANDLE(210); CASE_HANDLE(211); CASE_HANDLE(212); CASE_HANDLE(213); CASE_HANDLE(214); CASE_HANDLE(215); CASE_HANDLE(216); CASE_HANDLE(217); CASE_HANDLE(218); CASE_HANDLE(219); CASE_HANDLE(220); CASE_HANDLE(221); CASE_HANDLE(222); CASE_HANDLE(223); CASE_HANDLE(224); CASE_HANDLE(225); CASE_HANDLE(226); CASE_HANDLE(227); CASE_HANDLE(228); CASE_HANDLE(229); CASE_HANDLE(230); CASE_HANDLE(231); CASE_HANDLE(232); CASE_HANDLE(233); CASE_HANDLE(234); CASE_HANDLE(235); CASE_HANDLE(236); CASE_HANDLE(237); CASE_HANDLE(238); CASE_HANDLE(239); CASE_HANDLE(240); CASE_HANDLE(241); CASE_HANDLE(242); CASE_HANDLE(243); CASE_HANDLE(244); CASE_HANDLE(245); CASE_HANDLE(246); CASE_HANDLE(247); CASE_HANDLE(248); CASE_HANDLE(249); } return NULL; }