Mandrill 2025.6.0
Loading...
Searching...
No Matches
Extension.h
1#pragma once
2
3#include "Common.h"
4
13
14extern "C" {
15extern MANDRILL_API PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR_;
16extern MANDRILL_API PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR_;
17extern MANDRILL_API PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR_;
18extern MANDRILL_API PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR_;
19extern MANDRILL_API PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR_;
20extern MANDRILL_API PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR_;
21extern MANDRILL_API PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR_;
22extern MANDRILL_API PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR_;
23extern MANDRILL_API PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR_;
24extern MANDRILL_API PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT_;
25
26// Add more extensions here, don't forget the macro below.
27}
28
29// Define macros so we can use the same name as the API
30#define vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR_
31#define vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR_
32#define vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR_
33#define vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR_
34#define vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR_
35#define vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR_
36#define vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR_
37#define vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR_
38#define vkCmdTraceRaysKHR vkCmdTraceRaysKHR_
39#define vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT_
40
41// Macro for loading a device function pointers as Xvk...()
42#define VK_LOAD(device, func_name) \
43 PFN_##func_name X##func_name = (PFN_##func_name)vkGetDeviceProcAddr(device, #func_name)
44
45// Macro for calling a function via its vkGetDeviceProcAddr name
46#define VK_CALL(device, func_name, ...) \
47 do { \
48 PFN_##func_name pfn_##func_name = (PFN_##func_name)vkGetDeviceProcAddr(device, #func_name); \
49 pfn_##func_name(__VA_ARGS__); \
50 } while (0);