153 lines
5 KiB
Rust
153 lines
5 KiB
Rust
|
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,
|