use crate::prelude::*; use library_loader::load_function_ptrs; use std::os::raw::c_void; load_function_ptrs!(AccelerationStructureFunctions, { vkBuildAccelerationStructuresKHR( device: VkDevice, deferredOperation: VkDeferredOperationKHR, infoCount: u32, pInfos: *const VkAccelerationStructureBuildGeometryInfoKHR, ppBuildRangeInfos: *const *const VkAccelerationStructureBuildRangeInfoKHR ) -> VkResult, vkCmdBuildAccelerationStructuresIndirectKHR( commandBuffer: VkCommandBuffer, infoCount: u32, pInfo: *const VkAccelerationStructureBuildGeometryInfoKHR, pIndirectDeviceAddresses: *const VkDeviceAddress, pIndirectStrides: *const u32, ppMaxPrimitiveCounts: *const *const u32 ) -> (), vkCmdBuildAccelerationStructuresKHR( commandBuffer: VkCommandBuffer, infoCount: u32, pInfos: *const VkAccelerationStructureBuildGeometryInfoKHR, ppBuildRangeInfos: *const *const VkAccelerationStructureBuildRangeInfoKHR ) -> (), vkCmdCopyAccelerationStructureKHR( commandBuffer: VkCommandBuffer, pInfo: *const VkCopyAccelerationStructureInfoKHR ) -> (), vkCmdCopyAccelerationStructureToMemoryKHR( commandBuffer: VkCommandBuffer, pInfo: *const VkCopyAccelerationStructureToMemoryInfoKHR ) -> (), vkCmdCopyMemoryToAccelerationStructureKHR( commandBuffer: VkCommandBuffer, pInfo: *const VkCopyMemoryToAccelerationStructureInfoKHR ) -> (), vkCmdWriteAccelerationStructuresPropertiesKHR( commandBuffer: VkCommandBuffer, accelerationStructureCount: u32, pAccelerationStructures: *const VkAccelerationStructureKHR, queryType: VkQueryType, queryPool: VkQueryPool, firstQuery: u32 ) -> (), vkCopyAccelerationStructureKHR( device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: *const VkCopyAccelerationStructureInfoKHR ) -> VkResult, vkCopyAccelerationStructureToMemoryKHR( device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: *const VkCopyAccelerationStructureToMemoryInfoKHR ) -> VkResult, vkCopyMemoryToAccelerationStructureKHR( device: VkDevice, deferredOperation: VkDeferredOperationKHR, pInfo: *const VkCopyMemoryToAccelerationStructureInfoKHR ) -> VkResult, vkCreateAccelerationStructureKHR( device: VkDevice, pCreateInfo: *const VkAccelerationStructureCreateInfoKHR, pAllocator: *const VkAllocationCallbacks, pAccelerationStructure: *mut VkAccelerationStructureKHR ) -> VkResult, vkDestroyAccelerationStructureKHR( device: VkDevice, accelerationStructure: VkAccelerationStructureKHR, pAllocator: *const VkAllocationCallbacks ) -> (), vkGetAccelerationStructureBuildSizesKHR( device: VkDevice, buildType: VkAccelerationStructureBuildTypeKHR, pBuildInfo: *const VkAccelerationStructureBuildGeometryInfoKHR, pMaxPrimitiveCounts: *const u32, pSizeInfo: *mut VkAccelerationStructureBuildSizesInfoKHR ) -> (), vkGetAccelerationStructureDeviceAddressKHR( device: VkDevice, pInfo: *const VkAccelerationStructureDeviceAddressInfoKHR ) -> VkDeviceAddress, vkGetDeviceAccelerationStructureCompatibilityKHR( device: VkDevice, pVersionInfo: *const VkAccelerationStructureVersionInfoKHR, pCompatibility: *mut VkAccelerationStructureCompatibilityKHR ) -> (), vkWriteAccelerationStructuresPropertiesKHR( device: VkDevice, accelerationStructureCount: u32, pAccelerationStructures: *const VkAccelerationStructureKHR, queryType: VkQueryType, dataSize: isize, pData: *mut c_void, stride: isize ) -> VkResult, }); impl AccelerationStructureFunctions { pub fn new(instance_functions: &InstanceFunctions, device: VkDevice) -> Self { Self::load(|name| unsafe { instance_functions.vkGetDeviceProcAddr(device, name.as_ptr()) as *const std::ffi::c_void }) } } // vkBindAccelerationStructureMemoryKHR( // device: VkDevice, // bindInfoCount: u32, // pBindInfos: *const VkBindAccelerationStructureMemoryInfoKHR // ) -> VkResult, // vkCreateRayTracingPipelinesKHR( // device: VkDevice, // pipelineCache: VkPipelineCache, // createInfoCount: u32, // pCreateInfos: *const VkRayTracingPipelineCreateInfoKHR, // pAllocator: *const VkAllocationCallbacks, // pPipelines: *mut VkPipeline // ) -> VkResult, // vkGetAccelerationStructureMemoryRequirementsKHR( // device: VkDevice, // pInfo: *const VkAccelerationStructureMemoryRequirementsInfoKHR, // pMemoryRequirements: *mut VkMemoryRequirements2 // ) -> (), // vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( // device: VkDevice, // pipeline: VkPipeline, // firstGroup: u32, // groupCount: u32, // dataSize: isize, // pData: *mut c_void // ) -> VkResult,