Create device
This commit is contained in:
parent
69f7fcb0c6
commit
39c28af575
7 changed files with 172 additions and 1278 deletions
42
src/device_handles.rs
Normal file
42
src/device_handles.rs
Normal file
|
@ -0,0 +1,42 @@
|
|||
use crate::instance_handles::instance_fns;
|
||||
use vulkan_sys::prelude::*;
|
||||
|
||||
static mut DEVICE_FN_HANDLES: Option<VkDeviceHandles> = None;
|
||||
|
||||
pub fn device_fns() -> &'static VkDeviceHandles {
|
||||
unsafe { DEVICE_FN_HANDLES.as_ref().unwrap() }
|
||||
}
|
||||
|
||||
pub fn set_device_fns(handles: VkDeviceHandles) {
|
||||
unsafe { DEVICE_FN_HANDLES = Some(handles) };
|
||||
}
|
||||
|
||||
pub struct VkDeviceHandles {
|
||||
pub device: VkDevice,
|
||||
|
||||
pub device_functions: DeviceFunctions,
|
||||
pub device_wsi_functions: DeviceWSIFunctions,
|
||||
pub maintenance3_functions: Maintenance3Functions,
|
||||
|
||||
pub acceleration_structure_functions: AccelerationStructureFunctions,
|
||||
pub ray_tracing_pipeline_functions: RayTracingPipelineFunctions,
|
||||
|
||||
pub deferred_operation_functions: DeferredOperationsFunctions,
|
||||
}
|
||||
|
||||
impl VkDeviceHandles {
|
||||
pub fn new(device: VkDevice) -> Self {
|
||||
let instance = &instance_fns().instance_functions;
|
||||
|
||||
Self {
|
||||
device,
|
||||
|
||||
device_functions: DeviceFunctions::new(instance, device),
|
||||
device_wsi_functions: DeviceWSIFunctions::new(instance, device),
|
||||
maintenance3_functions: Maintenance3Functions::new(instance, device),
|
||||
acceleration_structure_functions: AccelerationStructureFunctions::new(instance, device),
|
||||
ray_tracing_pipeline_functions: RayTracingPipelineFunctions::new(instance, device),
|
||||
deferred_operation_functions: DeferredOperationsFunctions::new(instance, device),
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,354 +0,0 @@
|
|||
#![allow(non_camel_case_types)]
|
||||
|
||||
use vulkan_sys::prelude::*;
|
||||
|
||||
// instance
|
||||
pub type PFN_GetPhysicalDeviceProcAddr = PFN_vkVoidFunction;
|
||||
pub type PFN_vkEnumerateDeviceLayerProperties = PFN_vkVoidFunction;
|
||||
pub type PFN_vkEnumerateInstanceVersion = PFN_vkVoidFunction;
|
||||
pub type PFN_vkEnumeratePhysicalDeviceGroups = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceFeatures2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceProperties2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceFormatProperties2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceImageFormatProperties2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceExternalBufferProperties = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceExternalFenceProperties = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceToolProperties = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDevicePresentRectanglesKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkEnumeratePhysicalDeviceGroupsKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceDisplayProperties2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDisplayModeProperties2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDisplayPlaneCapabilities2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDebugReportMessageEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkSubmitDebugUtilsMessageEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceToolPropertiesEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateHeadlessSurfaceEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkAcquireDrmDisplayEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDrmDisplayEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = PFN_vkVoidFunction;
|
||||
|
||||
// device
|
||||
pub type PFN_vkGetDeviceMemoryCommitment = PFN_vkVoidFunction;
|
||||
pub type PFN_vkQueueBindSparse = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetFenceStatus = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetRenderAreaGranularity = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceGroupPeerMemoryFeatures = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDeviceMask = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDispatchBase = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetImageSparseMemoryRequirements2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceQueue2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateSamplerYcbcrConversion = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroySamplerYcbcrConversion = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateDescriptorUpdateTemplate = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroyDescriptorUpdateTemplate = PFN_vkVoidFunction;
|
||||
pub type PFN_vkUpdateDescriptorSetWithTemplate = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawIndirectCount = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateRenderPass2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawIndexedIndirectCount = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBeginRenderPass2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdNextSubpass2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdEndRenderPass2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkResetQueryPool = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetSemaphoreCounterValue = PFN_vkVoidFunction;
|
||||
pub type PFN_vkWaitSemaphores = PFN_vkVoidFunction;
|
||||
pub type PFN_vkSignalSemaphore = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetBufferOpaqueCaptureAddress = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceMemoryOpaqueCaptureAddress = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreatePrivateDataSlot = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroyPrivateDataSlot = PFN_vkVoidFunction;
|
||||
pub type PFN_vkSetPrivateData = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPrivateData = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetEvent2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdResetEvent2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdWaitEvents2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdPipelineBarrier2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdWriteTimestamp2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkQueueSubmit2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCopyBuffer2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCopyImage2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCopyBufferToImage2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCopyImageToBuffer2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBlitImage2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdResolveImage2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBeginRendering = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdEndRendering = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetCullMode = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetFrontFace = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetPrimitiveTopology = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetViewportWithCount = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetScissorWithCount = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBindVertexBuffers2 = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthTestEnable = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthWriteEnable = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthCompareOp = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthBoundsTestEnable = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetStencilTestEnable = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetStencilOp = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetRasterizerDiscardEnable = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthBiasEnable = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetPrimitiveRestartEnable = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceBufferMemoryRequirements = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceImageMemoryRequirements = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceImageSparseMemoryRequirements = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceGroupPresentCapabilitiesKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceGroupSurfacePresentModesKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkAcquireNextImage2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateSharedSwapchainsKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBeginRenderingKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdEndRenderingKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDeviceMaskKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDispatchBaseKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkTrimCommandPoolKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetMemoryFdKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetMemoryFdPropertiesKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkImportSemaphoreFdKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetSemaphoreFdKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdPushDescriptorSetKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdPushDescriptorSetWithTemplateKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateDescriptorUpdateTemplateKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroyDescriptorUpdateTemplateKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkUpdateDescriptorSetWithTemplateKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateRenderPass2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBeginRenderPass2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdNextSubpass2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdEndRenderPass2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetSwapchainStatusKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkImportFenceFdKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetFenceFdKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkAcquireProfilingLockKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkReleaseProfilingLockKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetImageMemoryRequirements2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetBufferMemoryRequirements2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetImageSparseMemoryRequirements2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroySamplerYcbcrConversionKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateSamplerYcbcrConversionKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkBindBufferMemory2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkBindImageMemory2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDescriptorSetLayoutSupportKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawIndirectCountKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawIndexedIndirectCountKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetSemaphoreCounterValueKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkWaitSemaphoresKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkSignalSemaphoreKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetFragmentShadingRateKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkWaitForPresentKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetBufferDeviceAddressKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetBufferOpaqueCaptureAddressKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPipelineExecutablePropertiesKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPipelineExecutableStatisticsKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPipelineExecutableInternalRepresentationsKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetEvent2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdResetEvent2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdWaitEvents2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdPipelineBarrier2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdWriteTimestamp2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkQueueSubmit2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdWriteBufferMarker2AMD = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetQueueCheckpointData2NV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCopyBuffer2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCopyImage2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCopyBufferToImage2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCopyImageToBuffer2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdResolveImage2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdTraceRaysIndirect2KHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceBufferMemoryRequirementsKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceImageMemoryRequirementsKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceImageSparseMemoryRequirementsKHR = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDebugMarkerSetObjectTagEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDebugMarkerSetObjectNameEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDebugMarkerBeginEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDebugMarkerEndEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDebugMarkerInsertEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBindTransformFeedbackBuffersEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBeginTransformFeedbackEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdEndTransformFeedbackEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBeginQueryIndexedEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdEndQueryIndexedEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawIndirectByteCountEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateCuModuleNVX = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateCuFunctionNVX = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroyCuModuleNVX = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroyCuFunctionNVX = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCuLaunchKernelNVX = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetImageViewHandleNVX = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetImageViewAddressNVX = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawIndirectCountAMD = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawIndexedIndirectCountAMD = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetShaderInfoAMD = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBeginConditionalRenderingEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdEndConditionalRenderingEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetViewportWScalingNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDisplayPowerControlEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkRegisterDeviceEventEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkRegisterDisplayEventEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetSwapchainCounterEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetRefreshCycleDurationGOOGLE = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPastPresentationTimingGOOGLE = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDiscardRectangleEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkSetHdrMetadataEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkSetDebugUtilsObjectNameEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkSetDebugUtilsObjectTagEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkQueueBeginDebugUtilsLabelEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkQueueEndDebugUtilsLabelEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkQueueInsertDebugUtilsLabelEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBeginDebugUtilsLabelEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdEndDebugUtilsLabelEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdInsertDebugUtilsLabelEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetSampleLocationsEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetImageDrmFormatModifierPropertiesEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateValidationCacheEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroyValidationCacheEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkMergeValidationCachesEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetValidationCacheDataEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBindShadingRateImageNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetViewportShadingRatePaletteNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetCoarseSampleOrderNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateAccelerationStructureNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroyAccelerationStructureNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetAccelerationStructureMemoryRequirementsNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkBindAccelerationStructureMemoryNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBuildAccelerationStructureNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCopyAccelerationStructureNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdTraceRaysNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateRayTracingPipelinesNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetRayTracingShaderGroupHandlesNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetAccelerationStructureHandleNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdWriteAccelerationStructuresPropertiesNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCompileDeferredNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetMemoryHostPointerPropertiesEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdWriteBufferMarkerAMD = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetCalibratedTimestampsEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawMeshTasksNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawMeshTasksIndirectNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawMeshTasksIndirectCountNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetExclusiveScissorNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetCheckpointNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetQueueCheckpointDataNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkInitializePerformanceApiINTEL = PFN_vkVoidFunction;
|
||||
pub type PFN_vkUninitializePerformanceApiINTEL = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetPerformanceMarkerINTEL = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetPerformanceStreamMarkerINTEL = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetPerformanceOverrideINTEL = PFN_vkVoidFunction;
|
||||
pub type PFN_vkAcquirePerformanceConfigurationINTEL = PFN_vkVoidFunction;
|
||||
pub type PFN_vkQueueSetPerformanceConfigurationINTEL = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPerformanceParameterINTEL = PFN_vkVoidFunction;
|
||||
pub type PFN_vkSetLocalDimmingAMD = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetBufferDeviceAddressEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetLineStippleEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkResetQueryPoolEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetCullModeEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetPrimitiveTopologyEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetViewportWithCountEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetScissorWithCountEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBindVertexBuffers2EXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthTestEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthWriteEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthCompareOpEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthBoundsTestEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetStencilTestEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetStencilOpEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetGeneratedCommandsMemoryRequirementsNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdPreprocessGeneratedCommandsNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdExecuteGeneratedCommandsNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBindPipelineShaderGroupNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateIndirectCommandsLayoutNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroyIndirectCommandsLayoutNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreatePrivateDataSlotEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroyPrivateDataSlotEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkSetPrivateDataEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPrivateDataEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetFragmentShadingRateEnumNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetImageSubresourceLayout2EXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceFaultInfoEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetVertexInputEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSubpassShadingHUAWEI = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBindInvocationMaskHUAWEI = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetMemoryRemoteAddressNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetPipelinePropertiesEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetPatchControlPointsEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetRasterizerDiscardEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthBiasEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetLogicOpEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetPrimitiveRestartEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetColorWriteEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawMultiEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawMultiIndexedEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateMicromapEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroyMicromapEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBuildMicromapsEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkBuildMicromapsEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCopyMicromapEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCopyMicromapToMemoryEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCopyMemoryToMicromapEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkWriteMicromapsPropertiesEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCopyMicromapEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCopyMicromapToMemoryEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdCopyMemoryToMicromapEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdWriteMicromapsPropertiesEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDeviceMicromapCompatibilityEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetMicromapBuildSizesEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkSetDeviceMemoryPriorityEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDescriptorSetHostMappingVALVE = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetTessellationDomainOriginEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthClampEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetPolygonModeEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetRasterizationSamplesEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetSampleMaskEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetAlphaToCoverageEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetAlphaToOneEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetLogicOpEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetColorBlendEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetColorBlendEquationEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetColorWriteMaskEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetRasterizationStreamEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetConservativeRasterizationModeEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthClipEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetSampleLocationsEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetColorBlendAdvancedEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetProvokingVertexModeEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetLineRasterizationModeEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetLineStippleEnableEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetDepthClipNegativeOneToOneEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetViewportWScalingEnableNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetCoverageModulationModeNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetCoverageModulationTableEnableNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetCoverageModulationTableNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetShadingRateImageEnableNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetRepresentativeFragmentTestEnableNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetCoverageReductionModeNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetShaderModuleIdentifierEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetShaderModuleCreateInfoIdentifierEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCreateOpticalFlowSessionNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkDestroyOpticalFlowSessionNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkBindOpticalFlowSessionImageNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdOpticalFlowExecuteNV = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetFramebufferTilePropertiesQCOM = PFN_vkVoidFunction;
|
||||
pub type PFN_vkGetDynamicRenderingTilePropertiesQCOM = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawMeshTasksEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawMeshTasksIndirectEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdDrawMeshTasksIndirectCountEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdSetFrontFaceEXT = PFN_vkVoidFunction;
|
||||
pub type PFN_vkCmdBlitImage2KHR = PFN_vkVoidFunction;
|
72
src/instance_handles.rs
Normal file
72
src/instance_handles.rs
Normal file
|
@ -0,0 +1,72 @@
|
|||
use vulkan_sys::prelude::*;
|
||||
|
||||
static mut INSTANCE_FN_HANDLES: Option<VkInstanceHandles> = None;
|
||||
|
||||
pub fn instance_fns() -> &'static VkInstanceHandles {
|
||||
unsafe { INSTANCE_FN_HANDLES.as_ref().unwrap() }
|
||||
}
|
||||
|
||||
pub fn set_instance_fns(handles: VkInstanceHandles) {
|
||||
unsafe { INSTANCE_FN_HANDLES = Some(handles) };
|
||||
}
|
||||
|
||||
pub struct VkInstanceHandles {
|
||||
pub instance: VkInstance,
|
||||
|
||||
pub static_functions: StaticFunctions,
|
||||
pub entry_functions: EntryFunctions,
|
||||
|
||||
pub instance_functions: InstanceFunctions,
|
||||
pub instance_wsi_functions: InstanceWSIFunctions,
|
||||
pub physical_device_properties2_functions: PhysicalDeviceProperties2Functions,
|
||||
pub debug_report_callback_functions: DebugReportCallbackFunctions,
|
||||
pub debug_utils_messenger_functions: DebugUtilsMessengerFunctions,
|
||||
}
|
||||
|
||||
impl VkInstanceHandles {
|
||||
pub fn load_instance(
|
||||
static_functions: StaticFunctions,
|
||||
entry_functions: EntryFunctions,
|
||||
instance: VkInstance,
|
||||
) -> Self {
|
||||
Self {
|
||||
instance_functions: InstanceFunctions::new(&static_functions, instance),
|
||||
instance_wsi_functions: InstanceWSIFunctions::new(&static_functions, instance),
|
||||
physical_device_properties2_functions: PhysicalDeviceProperties2Functions::new(
|
||||
&static_functions,
|
||||
instance,
|
||||
),
|
||||
debug_report_callback_functions: DebugReportCallbackFunctions::new(
|
||||
&static_functions,
|
||||
instance,
|
||||
),
|
||||
debug_utils_messenger_functions: DebugUtilsMessengerFunctions::new(
|
||||
&static_functions,
|
||||
instance,
|
||||
),
|
||||
|
||||
instance,
|
||||
static_functions,
|
||||
entry_functions,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! cmp_vk_fn {
|
||||
($name:ident, {$([$fns:ident, $fn_name:ident],)*}) => {
|
||||
match $name {
|
||||
$(
|
||||
stringify!($fn_name) => return unsafe {
|
||||
mem::transmute(
|
||||
instance_fns()
|
||||
.$fns
|
||||
.$fn_name,
|
||||
)
|
||||
},
|
||||
)*
|
||||
|
||||
_ => ()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,667 +0,0 @@
|
|||
#![allow(non_snake_case)]
|
||||
|
||||
use vulkan_sys::prelude::*;
|
||||
|
||||
use crate::dummy_functions::*;
|
||||
|
||||
#[derive(Clone, Default)]
|
||||
// Device function pointer dispatch table
|
||||
pub struct VkLayerDispatchTable {
|
||||
// ---- Core 1_0 commands
|
||||
pub GetDeviceProcAddr: Option<PFN_vkGetDeviceProcAddr>,
|
||||
pub DestroyDevice: Option<PFN_vkDestroyDevice>,
|
||||
pub GetDeviceQueue: Option<PFN_vkGetDeviceQueue>,
|
||||
pub QueueSubmit: Option<PFN_vkQueueSubmit>,
|
||||
pub QueueWaitIdle: Option<PFN_vkQueueWaitIdle>,
|
||||
pub DeviceWaitIdle: Option<PFN_vkDeviceWaitIdle>,
|
||||
pub AllocateMemory: Option<PFN_vkAllocateMemory>,
|
||||
pub FreeMemory: Option<PFN_vkFreeMemory>,
|
||||
pub MapMemory: Option<PFN_vkMapMemory>,
|
||||
pub UnmapMemory: Option<PFN_vkUnmapMemory>,
|
||||
pub FlushMappedMemoryRanges: Option<PFN_vkFlushMappedMemoryRanges>,
|
||||
pub InvalidateMappedMemoryRanges: Option<PFN_vkInvalidateMappedMemoryRanges>,
|
||||
pub GetDeviceMemoryCommitment: Option<PFN_vkGetDeviceMemoryCommitment>,
|
||||
pub BindBufferMemory: Option<PFN_vkBindBufferMemory>,
|
||||
pub BindImageMemory: Option<PFN_vkBindImageMemory>,
|
||||
pub GetBufferMemoryRequirements: Option<PFN_vkGetBufferMemoryRequirements>,
|
||||
pub GetImageMemoryRequirements: Option<PFN_vkGetImageMemoryRequirements>,
|
||||
pub GetImageSparseMemoryRequirements: Option<PFN_vkGetImageSparseMemoryRequirements>,
|
||||
pub QueueBindSparse: Option<PFN_vkQueueBindSparse>,
|
||||
pub CreateFence: Option<PFN_vkCreateFence>,
|
||||
pub DestroyFence: Option<PFN_vkDestroyFence>,
|
||||
pub ResetFences: Option<PFN_vkResetFences>,
|
||||
pub GetFenceStatus: Option<PFN_vkGetFenceStatus>,
|
||||
pub WaitForFences: Option<PFN_vkWaitForFences>,
|
||||
pub CreateSemaphore: Option<PFN_vkCreateSemaphore>,
|
||||
pub DestroySemaphore: Option<PFN_vkDestroySemaphore>,
|
||||
pub CreateEvent: Option<PFN_vkCreateEvent>,
|
||||
pub DestroyEvent: Option<PFN_vkDestroyEvent>,
|
||||
pub GetEventStatus: Option<PFN_vkGetEventStatus>,
|
||||
pub SetEvent: Option<PFN_vkSetEvent>,
|
||||
pub ResetEvent: Option<PFN_vkResetEvent>,
|
||||
pub CreateQueryPool: Option<PFN_vkCreateQueryPool>,
|
||||
pub DestroyQueryPool: Option<PFN_vkDestroyQueryPool>,
|
||||
pub GetQueryPoolResults: Option<PFN_vkGetQueryPoolResults>,
|
||||
pub CreateBuffer: Option<PFN_vkCreateBuffer>,
|
||||
pub DestroyBuffer: Option<PFN_vkDestroyBuffer>,
|
||||
pub CreateBufferView: Option<PFN_vkCreateBufferView>,
|
||||
pub DestroyBufferView: Option<PFN_vkDestroyBufferView>,
|
||||
pub CreateImage: Option<PFN_vkCreateImage>,
|
||||
pub DestroyImage: Option<PFN_vkDestroyImage>,
|
||||
pub GetImageSubresourceLayout: Option<PFN_vkGetImageSubresourceLayout>,
|
||||
pub CreateImageView: Option<PFN_vkCreateImageView>,
|
||||
pub DestroyImageView: Option<PFN_vkDestroyImageView>,
|
||||
pub CreateShaderModule: Option<PFN_vkCreateShaderModule>,
|
||||
pub DestroyShaderModule: Option<PFN_vkDestroyShaderModule>,
|
||||
pub CreatePipelineCache: Option<PFN_vkCreatePipelineCache>,
|
||||
pub DestroyPipelineCache: Option<PFN_vkDestroyPipelineCache>,
|
||||
pub GetPipelineCacheData: Option<PFN_vkGetPipelineCacheData>,
|
||||
pub MergePipelineCaches: Option<PFN_vkMergePipelineCaches>,
|
||||
pub CreateGraphicsPipelines: Option<PFN_vkCreateGraphicsPipelines>,
|
||||
pub CreateComputePipelines: Option<PFN_vkCreateComputePipelines>,
|
||||
pub DestroyPipeline: Option<PFN_vkDestroyPipeline>,
|
||||
pub CreatePipelineLayout: Option<PFN_vkCreatePipelineLayout>,
|
||||
pub DestroyPipelineLayout: Option<PFN_vkDestroyPipelineLayout>,
|
||||
pub CreateSampler: Option<PFN_vkCreateSampler>,
|
||||
pub DestroySampler: Option<PFN_vkDestroySampler>,
|
||||
pub CreateDescriptorSetLayout: Option<PFN_vkCreateDescriptorSetLayout>,
|
||||
pub DestroyDescriptorSetLayout: Option<PFN_vkDestroyDescriptorSetLayout>,
|
||||
pub CreateDescriptorPool: Option<PFN_vkCreateDescriptorPool>,
|
||||
pub DestroyDescriptorPool: Option<PFN_vkDestroyDescriptorPool>,
|
||||
pub ResetDescriptorPool: Option<PFN_vkResetDescriptorPool>,
|
||||
pub AllocateDescriptorSets: Option<PFN_vkAllocateDescriptorSets>,
|
||||
pub FreeDescriptorSets: Option<PFN_vkFreeDescriptorSets>,
|
||||
pub UpdateDescriptorSets: Option<PFN_vkUpdateDescriptorSets>,
|
||||
pub CreateFramebuffer: Option<PFN_vkCreateFramebuffer>,
|
||||
pub DestroyFramebuffer: Option<PFN_vkDestroyFramebuffer>,
|
||||
pub CreateRenderPass: Option<PFN_vkCreateRenderPass>,
|
||||
pub DestroyRenderPass: Option<PFN_vkDestroyRenderPass>,
|
||||
pub GetRenderAreaGranularity: Option<PFN_vkGetRenderAreaGranularity>,
|
||||
pub CreateCommandPool: Option<PFN_vkCreateCommandPool>,
|
||||
pub DestroyCommandPool: Option<PFN_vkDestroyCommandPool>,
|
||||
pub ResetCommandPool: Option<PFN_vkResetCommandPool>,
|
||||
pub AllocateCommandBuffers: Option<PFN_vkAllocateCommandBuffers>,
|
||||
pub FreeCommandBuffers: Option<PFN_vkFreeCommandBuffers>,
|
||||
pub BeginCommandBuffer: Option<PFN_vkBeginCommandBuffer>,
|
||||
pub EndCommandBuffer: Option<PFN_vkEndCommandBuffer>,
|
||||
pub ResetCommandBuffer: Option<PFN_vkResetCommandBuffer>,
|
||||
pub CmdBindPipeline: Option<PFN_vkCmdBindPipeline>,
|
||||
pub CmdSetViewport: Option<PFN_vkCmdSetViewport>,
|
||||
pub CmdSetScissor: Option<PFN_vkCmdSetScissor>,
|
||||
pub CmdSetLineWidth: Option<PFN_vkCmdSetLineWidth>,
|
||||
pub CmdSetDepthBias: Option<PFN_vkCmdSetDepthBias>,
|
||||
pub CmdSetBlendConstants: Option<PFN_vkCmdSetBlendConstants>,
|
||||
pub CmdSetDepthBounds: Option<PFN_vkCmdSetDepthBounds>,
|
||||
pub CmdSetStencilCompareMask: Option<PFN_vkCmdSetStencilCompareMask>,
|
||||
pub CmdSetStencilWriteMask: Option<PFN_vkCmdSetStencilWriteMask>,
|
||||
pub CmdSetStencilReference: Option<PFN_vkCmdSetStencilReference>,
|
||||
pub CmdBindDescriptorSets: Option<PFN_vkCmdBindDescriptorSets>,
|
||||
pub CmdBindIndexBuffer: Option<PFN_vkCmdBindIndexBuffer>,
|
||||
pub CmdBindVertexBuffers: Option<PFN_vkCmdBindVertexBuffers>,
|
||||
pub CmdDraw: Option<PFN_vkCmdDraw>,
|
||||
pub CmdDrawIndexed: Option<PFN_vkCmdDrawIndexed>,
|
||||
pub CmdDrawIndirect: Option<PFN_vkCmdDrawIndirect>,
|
||||
pub CmdDrawIndexedIndirect: Option<PFN_vkCmdDrawIndexedIndirect>,
|
||||
pub CmdDispatch: Option<PFN_vkCmdDispatch>,
|
||||
pub CmdDispatchIndirect: Option<PFN_vkCmdDispatchIndirect>,
|
||||
pub CmdCopyBuffer: Option<PFN_vkCmdCopyBuffer>,
|
||||
pub CmdCopyImage: Option<PFN_vkCmdCopyImage>,
|
||||
pub CmdBlitImage: Option<PFN_vkCmdBlitImage>,
|
||||
pub CmdCopyBufferToImage: Option<PFN_vkCmdCopyBufferToImage>,
|
||||
pub CmdCopyImageToBuffer: Option<PFN_vkCmdCopyImageToBuffer>,
|
||||
pub CmdUpdateBuffer: Option<PFN_vkCmdUpdateBuffer>,
|
||||
pub CmdFillBuffer: Option<PFN_vkCmdFillBuffer>,
|
||||
pub CmdClearColorImage: Option<PFN_vkCmdClearColorImage>,
|
||||
pub CmdClearDepthStencilImage: Option<PFN_vkCmdClearDepthStencilImage>,
|
||||
pub CmdClearAttachments: Option<PFN_vkCmdClearAttachments>,
|
||||
pub CmdResolveImage: Option<PFN_vkCmdResolveImage>,
|
||||
pub CmdSetEvent: Option<PFN_vkCmdSetEvent>,
|
||||
pub CmdResetEvent: Option<PFN_vkCmdResetEvent>,
|
||||
pub CmdWaitEvents: Option<PFN_vkCmdWaitEvents>,
|
||||
pub CmdPipelineBarrier: Option<PFN_vkCmdPipelineBarrier>,
|
||||
pub CmdBeginQuery: Option<PFN_vkCmdBeginQuery>,
|
||||
pub CmdEndQuery: Option<PFN_vkCmdEndQuery>,
|
||||
pub CmdResetQueryPool: Option<PFN_vkCmdResetQueryPool>,
|
||||
pub CmdWriteTimestamp: Option<PFN_vkCmdWriteTimestamp>,
|
||||
pub CmdCopyQueryPoolResults: Option<PFN_vkCmdCopyQueryPoolResults>,
|
||||
pub CmdPushConstants: Option<PFN_vkCmdPushConstants>,
|
||||
pub CmdBeginRenderPass: Option<PFN_vkCmdBeginRenderPass>,
|
||||
pub CmdNextSubpass: Option<PFN_vkCmdNextSubpass>,
|
||||
pub CmdEndRenderPass: Option<PFN_vkCmdEndRenderPass>,
|
||||
pub CmdExecuteCommands: Option<PFN_vkCmdExecuteCommands>,
|
||||
|
||||
// ---- Core 1_1 commands
|
||||
pub BindBufferMemory2: Option<PFN_vkBindBufferMemory2>,
|
||||
pub BindImageMemory2: Option<PFN_vkBindImageMemory2>,
|
||||
pub GetDeviceGroupPeerMemoryFeatures: Option<PFN_vkGetDeviceGroupPeerMemoryFeatures>,
|
||||
pub CmdSetDeviceMask: Option<PFN_vkCmdSetDeviceMask>,
|
||||
pub CmdDispatchBase: Option<PFN_vkCmdDispatchBase>,
|
||||
pub GetImageMemoryRequirements2: Option<PFN_vkGetImageMemoryRequirements2>,
|
||||
pub GetBufferMemoryRequirements2: Option<PFN_vkGetBufferMemoryRequirements2>,
|
||||
pub GetImageSparseMemoryRequirements2: Option<PFN_vkGetImageSparseMemoryRequirements2>,
|
||||
pub TrimCommandPool: Option<PFN_vkTrimCommandPool>,
|
||||
pub GetDeviceQueue2: Option<PFN_vkGetDeviceQueue2>,
|
||||
pub CreateSamplerYcbcrConversion: Option<PFN_vkCreateSamplerYcbcrConversion>,
|
||||
pub DestroySamplerYcbcrConversion: Option<PFN_vkDestroySamplerYcbcrConversion>,
|
||||
pub CreateDescriptorUpdateTemplate: Option<PFN_vkCreateDescriptorUpdateTemplate>,
|
||||
pub DestroyDescriptorUpdateTemplate: Option<PFN_vkDestroyDescriptorUpdateTemplate>,
|
||||
pub UpdateDescriptorSetWithTemplate: Option<PFN_vkUpdateDescriptorSetWithTemplate>,
|
||||
pub GetDescriptorSetLayoutSupport: Option<PFN_vkGetDescriptorSetLayoutSupport>,
|
||||
|
||||
// ---- Core 1_2 commands
|
||||
pub CmdDrawIndirectCount: Option<PFN_vkCmdDrawIndirectCount>,
|
||||
pub CmdDrawIndexedIndirectCount: Option<PFN_vkCmdDrawIndexedIndirectCount>,
|
||||
pub CreateRenderPass2: Option<PFN_vkCreateRenderPass2>,
|
||||
pub CmdBeginRenderPass2: Option<PFN_vkCmdBeginRenderPass2>,
|
||||
pub CmdNextSubpass2: Option<PFN_vkCmdNextSubpass2>,
|
||||
pub CmdEndRenderPass2: Option<PFN_vkCmdEndRenderPass2>,
|
||||
pub ResetQueryPool: Option<PFN_vkResetQueryPool>,
|
||||
pub GetSemaphoreCounterValue: Option<PFN_vkGetSemaphoreCounterValue>,
|
||||
pub WaitSemaphores: Option<PFN_vkWaitSemaphores>,
|
||||
pub SignalSemaphore: Option<PFN_vkSignalSemaphore>,
|
||||
pub GetBufferDeviceAddress: Option<PFN_vkGetBufferDeviceAddress>,
|
||||
pub GetBufferOpaqueCaptureAddress: Option<PFN_vkGetBufferOpaqueCaptureAddress>,
|
||||
pub GetDeviceMemoryOpaqueCaptureAddress: Option<PFN_vkGetDeviceMemoryOpaqueCaptureAddress>,
|
||||
|
||||
// ---- Core 1_3 commands
|
||||
pub CreatePrivateDataSlot: Option<PFN_vkCreatePrivateDataSlot>,
|
||||
pub DestroyPrivateDataSlot: Option<PFN_vkDestroyPrivateDataSlot>,
|
||||
pub SetPrivateData: Option<PFN_vkSetPrivateData>,
|
||||
pub GetPrivateData: Option<PFN_vkGetPrivateData>,
|
||||
pub CmdSetEvent2: Option<PFN_vkCmdSetEvent2>,
|
||||
pub CmdResetEvent2: Option<PFN_vkCmdResetEvent2>,
|
||||
pub CmdWaitEvents2: Option<PFN_vkCmdWaitEvents2>,
|
||||
pub CmdPipelineBarrier2: Option<PFN_vkCmdPipelineBarrier2>,
|
||||
pub CmdWriteTimestamp2: Option<PFN_vkCmdWriteTimestamp2>,
|
||||
pub QueueSubmit2: Option<PFN_vkQueueSubmit2>,
|
||||
pub CmdCopyBuffer2: Option<PFN_vkCmdCopyBuffer2>,
|
||||
pub CmdCopyImage2: Option<PFN_vkCmdCopyImage2>,
|
||||
pub CmdCopyBufferToImage2: Option<PFN_vkCmdCopyBufferToImage2>,
|
||||
pub CmdCopyImageToBuffer2: Option<PFN_vkCmdCopyImageToBuffer2>,
|
||||
pub CmdBlitImage2: Option<PFN_vkCmdBlitImage2>,
|
||||
pub CmdResolveImage2: Option<PFN_vkCmdResolveImage2>,
|
||||
pub CmdBeginRendering: Option<PFN_vkCmdBeginRendering>,
|
||||
pub CmdEndRendering: Option<PFN_vkCmdEndRendering>,
|
||||
pub CmdSetCullMode: Option<PFN_vkCmdSetCullMode>,
|
||||
pub CmdSetFrontFace: Option<PFN_vkCmdSetFrontFace>,
|
||||
pub CmdSetPrimitiveTopology: Option<PFN_vkCmdSetPrimitiveTopology>,
|
||||
pub CmdSetViewportWithCount: Option<PFN_vkCmdSetViewportWithCount>,
|
||||
pub CmdSetScissorWithCount: Option<PFN_vkCmdSetScissorWithCount>,
|
||||
pub CmdBindVertexBuffers2: Option<PFN_vkCmdBindVertexBuffers2>,
|
||||
pub CmdSetDepthTestEnable: Option<PFN_vkCmdSetDepthTestEnable>,
|
||||
pub CmdSetDepthWriteEnable: Option<PFN_vkCmdSetDepthWriteEnable>,
|
||||
pub CmdSetDepthCompareOp: Option<PFN_vkCmdSetDepthCompareOp>,
|
||||
pub CmdSetDepthBoundsTestEnable: Option<PFN_vkCmdSetDepthBoundsTestEnable>,
|
||||
pub CmdSetStencilTestEnable: Option<PFN_vkCmdSetStencilTestEnable>,
|
||||
pub CmdSetStencilOp: Option<PFN_vkCmdSetStencilOp>,
|
||||
pub CmdSetRasterizerDiscardEnable: Option<PFN_vkCmdSetRasterizerDiscardEnable>,
|
||||
pub CmdSetDepthBiasEnable: Option<PFN_vkCmdSetDepthBiasEnable>,
|
||||
pub CmdSetPrimitiveRestartEnable: Option<PFN_vkCmdSetPrimitiveRestartEnable>,
|
||||
pub GetDeviceBufferMemoryRequirements: Option<PFN_vkGetDeviceBufferMemoryRequirements>,
|
||||
pub GetDeviceImageMemoryRequirements: Option<PFN_vkGetDeviceImageMemoryRequirements>,
|
||||
pub GetDeviceImageSparseMemoryRequirements:
|
||||
Option<PFN_vkGetDeviceImageSparseMemoryRequirements>,
|
||||
|
||||
// ---- VK_KHR_swapchain extension commands
|
||||
pub CreateSwapchainKHR: Option<PFN_vkCreateSwapchainKHR>,
|
||||
pub DestroySwapchainKHR: Option<PFN_vkDestroySwapchainKHR>,
|
||||
pub GetSwapchainImagesKHR: Option<PFN_vkGetSwapchainImagesKHR>,
|
||||
pub AcquireNextImageKHR: Option<PFN_vkAcquireNextImageKHR>,
|
||||
pub QueuePresentKHR: Option<PFN_vkQueuePresentKHR>,
|
||||
pub GetDeviceGroupPresentCapabilitiesKHR: Option<PFN_vkGetDeviceGroupPresentCapabilitiesKHR>,
|
||||
pub GetDeviceGroupSurfacePresentModesKHR: Option<PFN_vkGetDeviceGroupSurfacePresentModesKHR>,
|
||||
pub AcquireNextImage2KHR: Option<PFN_vkAcquireNextImage2KHR>,
|
||||
|
||||
// ---- VK_KHR_display_swapchain extension commands
|
||||
pub CreateSharedSwapchainsKHR: Option<PFN_vkCreateSharedSwapchainsKHR>,
|
||||
|
||||
// ---- VK_KHR_dynamic_rendering extension commands
|
||||
pub CmdBeginRenderingKHR: Option<PFN_vkCmdBeginRenderingKHR>,
|
||||
pub CmdEndRenderingKHR: Option<PFN_vkCmdEndRenderingKHR>,
|
||||
|
||||
// ---- VK_KHR_device_group extension commands
|
||||
pub GetDeviceGroupPeerMemoryFeaturesKHR: Option<PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR>,
|
||||
pub CmdSetDeviceMaskKHR: Option<PFN_vkCmdSetDeviceMaskKHR>,
|
||||
pub CmdDispatchBaseKHR: Option<PFN_vkCmdDispatchBaseKHR>,
|
||||
|
||||
// ---- VK_KHR_maintenance1 extension commands
|
||||
pub TrimCommandPoolKHR: Option<PFN_vkTrimCommandPoolKHR>,
|
||||
|
||||
// ---- VK_KHR_external_memory_fd extension commands
|
||||
pub GetMemoryFdKHR: Option<PFN_vkGetMemoryFdKHR>,
|
||||
pub GetMemoryFdPropertiesKHR: Option<PFN_vkGetMemoryFdPropertiesKHR>,
|
||||
|
||||
// ---- VK_KHR_external_semaphore_fd extension commands
|
||||
pub ImportSemaphoreFdKHR: Option<PFN_vkImportSemaphoreFdKHR>,
|
||||
pub GetSemaphoreFdKHR: Option<PFN_vkGetSemaphoreFdKHR>,
|
||||
|
||||
// ---- VK_KHR_push_descriptor extension commands
|
||||
pub CmdPushDescriptorSetKHR: Option<PFN_vkCmdPushDescriptorSetKHR>,
|
||||
pub CmdPushDescriptorSetWithTemplateKHR: Option<PFN_vkCmdPushDescriptorSetWithTemplateKHR>,
|
||||
|
||||
// ---- VK_KHR_descriptor_update_template extension commands
|
||||
pub CreateDescriptorUpdateTemplateKHR: Option<PFN_vkCreateDescriptorUpdateTemplateKHR>,
|
||||
pub DestroyDescriptorUpdateTemplateKHR: Option<PFN_vkDestroyDescriptorUpdateTemplateKHR>,
|
||||
pub UpdateDescriptorSetWithTemplateKHR: Option<PFN_vkUpdateDescriptorSetWithTemplateKHR>,
|
||||
|
||||
// ---- VK_KHR_create_renderpass2 extension commands
|
||||
pub CreateRenderPass2KHR: Option<PFN_vkCreateRenderPass2KHR>,
|
||||
pub CmdBeginRenderPass2KHR: Option<PFN_vkCmdBeginRenderPass2KHR>,
|
||||
pub CmdNextSubpass2KHR: Option<PFN_vkCmdNextSubpass2KHR>,
|
||||
pub CmdEndRenderPass2KHR: Option<PFN_vkCmdEndRenderPass2KHR>,
|
||||
|
||||
// ---- VK_KHR_shared_presentable_image extension commands
|
||||
pub GetSwapchainStatusKHR: Option<PFN_vkGetSwapchainStatusKHR>,
|
||||
|
||||
// ---- VK_KHR_external_fence_fd extension commands
|
||||
pub ImportFenceFdKHR: Option<PFN_vkImportFenceFdKHR>,
|
||||
pub GetFenceFdKHR: Option<PFN_vkGetFenceFdKHR>,
|
||||
|
||||
// ---- VK_KHR_performance_query extension commands
|
||||
pub AcquireProfilingLockKHR: Option<PFN_vkAcquireProfilingLockKHR>,
|
||||
pub ReleaseProfilingLockKHR: Option<PFN_vkReleaseProfilingLockKHR>,
|
||||
|
||||
// ---- VK_KHR_get_memory_requirements2 extension commands
|
||||
pub GetImageMemoryRequirements2KHR: Option<PFN_vkGetImageMemoryRequirements2KHR>,
|
||||
pub GetBufferMemoryRequirements2KHR: Option<PFN_vkGetBufferMemoryRequirements2KHR>,
|
||||
pub GetImageSparseMemoryRequirements2KHR: Option<PFN_vkGetImageSparseMemoryRequirements2KHR>,
|
||||
|
||||
// ---- VK_KHR_sampler_ycbcr_conversion extension commands
|
||||
pub CreateSamplerYcbcrConversionKHR: Option<PFN_vkCreateSamplerYcbcrConversionKHR>,
|
||||
pub DestroySamplerYcbcrConversionKHR: Option<PFN_vkDestroySamplerYcbcrConversionKHR>,
|
||||
|
||||
// ---- VK_KHR_bind_memory2 extension commands
|
||||
pub BindBufferMemory2KHR: Option<PFN_vkBindBufferMemory2KHR>,
|
||||
pub BindImageMemory2KHR: Option<PFN_vkBindImageMemory2KHR>,
|
||||
|
||||
// ---- VK_KHR_maintenance3 extension commands
|
||||
pub GetDescriptorSetLayoutSupportKHR: Option<PFN_vkGetDescriptorSetLayoutSupportKHR>,
|
||||
|
||||
// ---- VK_KHR_draw_indirect_count extension commands
|
||||
pub CmdDrawIndirectCountKHR: Option<PFN_vkCmdDrawIndirectCountKHR>,
|
||||
pub CmdDrawIndexedIndirectCountKHR: Option<PFN_vkCmdDrawIndexedIndirectCountKHR>,
|
||||
|
||||
// ---- VK_KHR_timeline_semaphore extension commands
|
||||
pub GetSemaphoreCounterValueKHR: Option<PFN_vkGetSemaphoreCounterValueKHR>,
|
||||
pub WaitSemaphoresKHR: Option<PFN_vkWaitSemaphoresKHR>,
|
||||
pub SignalSemaphoreKHR: Option<PFN_vkSignalSemaphoreKHR>,
|
||||
|
||||
// ---- VK_KHR_fragment_shading_rate extension commands
|
||||
pub CmdSetFragmentShadingRateKHR: Option<PFN_vkCmdSetFragmentShadingRateKHR>,
|
||||
|
||||
// ---- VK_KHR_present_wait extension commands
|
||||
pub WaitForPresentKHR: Option<PFN_vkWaitForPresentKHR>,
|
||||
|
||||
// ---- VK_KHR_buffer_device_address extension commands
|
||||
pub GetBufferDeviceAddressKHR: Option<PFN_vkGetBufferDeviceAddressKHR>,
|
||||
pub GetBufferOpaqueCaptureAddressKHR: Option<PFN_vkGetBufferOpaqueCaptureAddressKHR>,
|
||||
pub GetDeviceMemoryOpaqueCaptureAddressKHR:
|
||||
Option<PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR>,
|
||||
|
||||
// ---- VK_KHR_deferred_host_operations extension commands
|
||||
pub CreateDeferredOperationKHR: Option<PFN_vkCreateDeferredOperationKHR>,
|
||||
pub DestroyDeferredOperationKHR: Option<PFN_vkDestroyDeferredOperationKHR>,
|
||||
pub GetDeferredOperationMaxConcurrencyKHR: Option<PFN_vkGetDeferredOperationMaxConcurrencyKHR>,
|
||||
pub GetDeferredOperationResultKHR: Option<PFN_vkGetDeferredOperationResultKHR>,
|
||||
pub DeferredOperationJoinKHR: Option<PFN_vkDeferredOperationJoinKHR>,
|
||||
|
||||
// ---- VK_KHR_pipeline_executable_properties extension commands
|
||||
pub GetPipelineExecutablePropertiesKHR: Option<PFN_vkGetPipelineExecutablePropertiesKHR>,
|
||||
pub GetPipelineExecutableStatisticsKHR: Option<PFN_vkGetPipelineExecutableStatisticsKHR>,
|
||||
pub GetPipelineExecutableInternalRepresentationsKHR:
|
||||
Option<PFN_vkGetPipelineExecutableInternalRepresentationsKHR>,
|
||||
|
||||
// ---- VK_KHR_synchronization2 extension commands
|
||||
pub CmdSetEvent2KHR: Option<PFN_vkCmdSetEvent2KHR>,
|
||||
pub CmdResetEvent2KHR: Option<PFN_vkCmdResetEvent2KHR>,
|
||||
pub CmdWaitEvents2KHR: Option<PFN_vkCmdWaitEvents2KHR>,
|
||||
pub CmdPipelineBarrier2KHR: Option<PFN_vkCmdPipelineBarrier2KHR>,
|
||||
pub CmdWriteTimestamp2KHR: Option<PFN_vkCmdWriteTimestamp2KHR>,
|
||||
pub QueueSubmit2KHR: Option<PFN_vkQueueSubmit2KHR>,
|
||||
pub CmdWriteBufferMarker2AMD: Option<PFN_vkCmdWriteBufferMarker2AMD>,
|
||||
pub GetQueueCheckpointData2NV: Option<PFN_vkGetQueueCheckpointData2NV>,
|
||||
|
||||
// ---- VK_KHR_copy_commands2 extension commands
|
||||
pub CmdCopyBuffer2KHR: Option<PFN_vkCmdCopyBuffer2KHR>,
|
||||
pub CmdCopyImage2KHR: Option<PFN_vkCmdCopyImage2KHR>,
|
||||
pub CmdCopyBufferToImage2KHR: Option<PFN_vkCmdCopyBufferToImage2KHR>,
|
||||
pub CmdCopyImageToBuffer2KHR: Option<PFN_vkCmdCopyImageToBuffer2KHR>,
|
||||
pub CmdBlitImage2KHR: Option<PFN_vkCmdBlitImage2KHR>,
|
||||
pub CmdResolveImage2KHR: Option<PFN_vkCmdResolveImage2KHR>,
|
||||
|
||||
// ---- VK_KHR_ray_tracing_maintenance1 extension commands
|
||||
pub CmdTraceRaysIndirect2KHR: Option<PFN_vkCmdTraceRaysIndirect2KHR>,
|
||||
|
||||
// ---- VK_KHR_maintenance4 extension commands
|
||||
pub GetDeviceBufferMemoryRequirementsKHR: Option<PFN_vkGetDeviceBufferMemoryRequirementsKHR>,
|
||||
pub GetDeviceImageMemoryRequirementsKHR: Option<PFN_vkGetDeviceImageMemoryRequirementsKHR>,
|
||||
pub GetDeviceImageSparseMemoryRequirementsKHR:
|
||||
Option<PFN_vkGetDeviceImageSparseMemoryRequirementsKHR>,
|
||||
|
||||
// ---- VK_EXT_debug_marker extension commands
|
||||
pub DebugMarkerSetObjectTagEXT: Option<PFN_vkDebugMarkerSetObjectTagEXT>,
|
||||
pub DebugMarkerSetObjectNameEXT: Option<PFN_vkDebugMarkerSetObjectNameEXT>,
|
||||
pub CmdDebugMarkerBeginEXT: Option<PFN_vkCmdDebugMarkerBeginEXT>,
|
||||
pub CmdDebugMarkerEndEXT: Option<PFN_vkCmdDebugMarkerEndEXT>,
|
||||
pub CmdDebugMarkerInsertEXT: Option<PFN_vkCmdDebugMarkerInsertEXT>,
|
||||
|
||||
// ---- VK_EXT_transform_feedback extension commands
|
||||
pub CmdBindTransformFeedbackBuffersEXT: Option<PFN_vkCmdBindTransformFeedbackBuffersEXT>,
|
||||
pub CmdBeginTransformFeedbackEXT: Option<PFN_vkCmdBeginTransformFeedbackEXT>,
|
||||
pub CmdEndTransformFeedbackEXT: Option<PFN_vkCmdEndTransformFeedbackEXT>,
|
||||
pub CmdBeginQueryIndexedEXT: Option<PFN_vkCmdBeginQueryIndexedEXT>,
|
||||
pub CmdEndQueryIndexedEXT: Option<PFN_vkCmdEndQueryIndexedEXT>,
|
||||
pub CmdDrawIndirectByteCountEXT: Option<PFN_vkCmdDrawIndirectByteCountEXT>,
|
||||
|
||||
// ---- VK_NVX_binary_import extension commands
|
||||
pub CreateCuModuleNVX: Option<PFN_vkCreateCuModuleNVX>,
|
||||
pub CreateCuFunctionNVX: Option<PFN_vkCreateCuFunctionNVX>,
|
||||
pub DestroyCuModuleNVX: Option<PFN_vkDestroyCuModuleNVX>,
|
||||
pub DestroyCuFunctionNVX: Option<PFN_vkDestroyCuFunctionNVX>,
|
||||
pub CmdCuLaunchKernelNVX: Option<PFN_vkCmdCuLaunchKernelNVX>,
|
||||
|
||||
// ---- VK_NVX_image_view_handle extension commands
|
||||
pub GetImageViewHandleNVX: Option<PFN_vkGetImageViewHandleNVX>,
|
||||
pub GetImageViewAddressNVX: Option<PFN_vkGetImageViewAddressNVX>,
|
||||
|
||||
// ---- VK_AMD_draw_indirect_count extension commands
|
||||
pub CmdDrawIndirectCountAMD: Option<PFN_vkCmdDrawIndirectCountAMD>,
|
||||
pub CmdDrawIndexedIndirectCountAMD: Option<PFN_vkCmdDrawIndexedIndirectCountAMD>,
|
||||
|
||||
// ---- VK_AMD_shader_info extension commands
|
||||
pub GetShaderInfoAMD: Option<PFN_vkGetShaderInfoAMD>,
|
||||
|
||||
// ---- VK_EXT_conditional_rendering extension commands
|
||||
pub CmdBeginConditionalRenderingEXT: Option<PFN_vkCmdBeginConditionalRenderingEXT>,
|
||||
pub CmdEndConditionalRenderingEXT: Option<PFN_vkCmdEndConditionalRenderingEXT>,
|
||||
|
||||
// ---- VK_NV_clip_space_w_scaling extension commands
|
||||
pub CmdSetViewportWScalingNV: Option<PFN_vkCmdSetViewportWScalingNV>,
|
||||
|
||||
// ---- VK_EXT_display_control extension commands
|
||||
pub DisplayPowerControlEXT: Option<PFN_vkDisplayPowerControlEXT>,
|
||||
pub RegisterDeviceEventEXT: Option<PFN_vkRegisterDeviceEventEXT>,
|
||||
pub RegisterDisplayEventEXT: Option<PFN_vkRegisterDisplayEventEXT>,
|
||||
pub GetSwapchainCounterEXT: Option<PFN_vkGetSwapchainCounterEXT>,
|
||||
|
||||
// ---- VK_GOOGLE_display_timing extension commands
|
||||
pub GetRefreshCycleDurationGOOGLE: Option<PFN_vkGetRefreshCycleDurationGOOGLE>,
|
||||
pub GetPastPresentationTimingGOOGLE: Option<PFN_vkGetPastPresentationTimingGOOGLE>,
|
||||
|
||||
// ---- VK_EXT_discard_rectangles extension commands
|
||||
pub CmdSetDiscardRectangleEXT: Option<PFN_vkCmdSetDiscardRectangleEXT>,
|
||||
|
||||
// ---- VK_EXT_hdr_metadata extension commands
|
||||
pub SetHdrMetadataEXT: Option<PFN_vkSetHdrMetadataEXT>,
|
||||
|
||||
// ---- VK_EXT_debug_utils extension commands
|
||||
pub SetDebugUtilsObjectNameEXT: Option<PFN_vkSetDebugUtilsObjectNameEXT>,
|
||||
pub SetDebugUtilsObjectTagEXT: Option<PFN_vkSetDebugUtilsObjectTagEXT>,
|
||||
pub QueueBeginDebugUtilsLabelEXT: Option<PFN_vkQueueBeginDebugUtilsLabelEXT>,
|
||||
pub QueueEndDebugUtilsLabelEXT: Option<PFN_vkQueueEndDebugUtilsLabelEXT>,
|
||||
pub QueueInsertDebugUtilsLabelEXT: Option<PFN_vkQueueInsertDebugUtilsLabelEXT>,
|
||||
pub CmdBeginDebugUtilsLabelEXT: Option<PFN_vkCmdBeginDebugUtilsLabelEXT>,
|
||||
pub CmdEndDebugUtilsLabelEXT: Option<PFN_vkCmdEndDebugUtilsLabelEXT>,
|
||||
pub CmdInsertDebugUtilsLabelEXT: Option<PFN_vkCmdInsertDebugUtilsLabelEXT>,
|
||||
|
||||
// ---- VK_EXT_sample_locations extension commands
|
||||
pub CmdSetSampleLocationsEXT: Option<PFN_vkCmdSetSampleLocationsEXT>,
|
||||
|
||||
// ---- VK_EXT_image_drm_format_modifier extension commands
|
||||
pub GetImageDrmFormatModifierPropertiesEXT:
|
||||
Option<PFN_vkGetImageDrmFormatModifierPropertiesEXT>,
|
||||
|
||||
// ---- VK_EXT_validation_cache extension commands
|
||||
pub CreateValidationCacheEXT: Option<PFN_vkCreateValidationCacheEXT>,
|
||||
pub DestroyValidationCacheEXT: Option<PFN_vkDestroyValidationCacheEXT>,
|
||||
pub MergeValidationCachesEXT: Option<PFN_vkMergeValidationCachesEXT>,
|
||||
pub GetValidationCacheDataEXT: Option<PFN_vkGetValidationCacheDataEXT>,
|
||||
|
||||
// ---- VK_NV_shading_rate_image extension commands
|
||||
pub CmdBindShadingRateImageNV: Option<PFN_vkCmdBindShadingRateImageNV>,
|
||||
pub CmdSetViewportShadingRatePaletteNV: Option<PFN_vkCmdSetViewportShadingRatePaletteNV>,
|
||||
pub CmdSetCoarseSampleOrderNV: Option<PFN_vkCmdSetCoarseSampleOrderNV>,
|
||||
|
||||
// ---- VK_NV_ray_tracing extension commands
|
||||
pub CreateAccelerationStructureNV: Option<PFN_vkCreateAccelerationStructureNV>,
|
||||
pub DestroyAccelerationStructureNV: Option<PFN_vkDestroyAccelerationStructureNV>,
|
||||
pub GetAccelerationStructureMemoryRequirementsNV:
|
||||
Option<PFN_vkGetAccelerationStructureMemoryRequirementsNV>,
|
||||
pub BindAccelerationStructureMemoryNV: Option<PFN_vkBindAccelerationStructureMemoryNV>,
|
||||
pub CmdBuildAccelerationStructureNV: Option<PFN_vkCmdBuildAccelerationStructureNV>,
|
||||
pub CmdCopyAccelerationStructureNV: Option<PFN_vkCmdCopyAccelerationStructureNV>,
|
||||
pub CmdTraceRaysNV: Option<PFN_vkCmdTraceRaysNV>,
|
||||
pub CreateRayTracingPipelinesNV: Option<PFN_vkCreateRayTracingPipelinesNV>,
|
||||
pub GetRayTracingShaderGroupHandlesKHR: Option<PFN_vkGetRayTracingShaderGroupHandlesKHR>,
|
||||
pub GetRayTracingShaderGroupHandlesNV: Option<PFN_vkGetRayTracingShaderGroupHandlesNV>,
|
||||
pub GetAccelerationStructureHandleNV: Option<PFN_vkGetAccelerationStructureHandleNV>,
|
||||
pub CmdWriteAccelerationStructuresPropertiesNV:
|
||||
Option<PFN_vkCmdWriteAccelerationStructuresPropertiesNV>,
|
||||
pub CompileDeferredNV: Option<PFN_vkCompileDeferredNV>,
|
||||
|
||||
// ---- VK_EXT_external_memory_host extension commands
|
||||
pub GetMemoryHostPointerPropertiesEXT: Option<PFN_vkGetMemoryHostPointerPropertiesEXT>,
|
||||
|
||||
// ---- VK_AMD_buffer_marker extension commands
|
||||
pub CmdWriteBufferMarkerAMD: Option<PFN_vkCmdWriteBufferMarkerAMD>,
|
||||
|
||||
// ---- VK_EXT_calibrated_timestamps extension commands
|
||||
pub GetCalibratedTimestampsEXT: Option<PFN_vkGetCalibratedTimestampsEXT>,
|
||||
|
||||
// ---- VK_NV_mesh_shader extension commands
|
||||
pub CmdDrawMeshTasksNV: Option<PFN_vkCmdDrawMeshTasksNV>,
|
||||
pub CmdDrawMeshTasksIndirectNV: Option<PFN_vkCmdDrawMeshTasksIndirectNV>,
|
||||
pub CmdDrawMeshTasksIndirectCountNV: Option<PFN_vkCmdDrawMeshTasksIndirectCountNV>,
|
||||
|
||||
// ---- VK_NV_scissor_exclusive extension commands
|
||||
pub CmdSetExclusiveScissorNV: Option<PFN_vkCmdSetExclusiveScissorNV>,
|
||||
|
||||
// ---- VK_NV_device_diagnostic_checkpoints extension commands
|
||||
pub CmdSetCheckpointNV: Option<PFN_vkCmdSetCheckpointNV>,
|
||||
pub GetQueueCheckpointDataNV: Option<PFN_vkGetQueueCheckpointDataNV>,
|
||||
|
||||
// ---- VK_INTEL_performance_query extension commands
|
||||
pub InitializePerformanceApiINTEL: Option<PFN_vkInitializePerformanceApiINTEL>,
|
||||
pub UninitializePerformanceApiINTEL: Option<PFN_vkUninitializePerformanceApiINTEL>,
|
||||
pub CmdSetPerformanceMarkerINTEL: Option<PFN_vkCmdSetPerformanceMarkerINTEL>,
|
||||
pub CmdSetPerformanceStreamMarkerINTEL: Option<PFN_vkCmdSetPerformanceStreamMarkerINTEL>,
|
||||
pub CmdSetPerformanceOverrideINTEL: Option<PFN_vkCmdSetPerformanceOverrideINTEL>,
|
||||
pub AcquirePerformanceConfigurationINTEL: Option<PFN_vkAcquirePerformanceConfigurationINTEL>,
|
||||
pub QueueSetPerformanceConfigurationINTEL: Option<PFN_vkQueueSetPerformanceConfigurationINTEL>,
|
||||
pub GetPerformanceParameterINTEL: Option<PFN_vkGetPerformanceParameterINTEL>,
|
||||
|
||||
// ---- VK_AMD_display_native_hdr extension commands
|
||||
pub SetLocalDimmingAMD: Option<PFN_vkSetLocalDimmingAMD>,
|
||||
|
||||
// ---- VK_EXT_buffer_device_address extension commands
|
||||
pub GetBufferDeviceAddressEXT: Option<PFN_vkGetBufferDeviceAddressEXT>,
|
||||
|
||||
// ---- VK_EXT_line_rasterization extension commands
|
||||
pub CmdSetLineStippleEXT: Option<PFN_vkCmdSetLineStippleEXT>,
|
||||
|
||||
// ---- VK_EXT_host_query_reset extension commands
|
||||
pub ResetQueryPoolEXT: Option<PFN_vkResetQueryPoolEXT>,
|
||||
|
||||
// ---- VK_EXT_extended_dynamic_state extension commands
|
||||
pub CmdSetCullModeEXT: Option<PFN_vkCmdSetCullModeEXT>,
|
||||
pub CmdSetFrontFaceEXT: Option<PFN_vkCmdSetFrontFaceEXT>,
|
||||
pub CmdSetPrimitiveTopologyEXT: Option<PFN_vkCmdSetPrimitiveTopologyEXT>,
|
||||
pub CmdSetViewportWithCountEXT: Option<PFN_vkCmdSetViewportWithCountEXT>,
|
||||
pub CmdSetScissorWithCountEXT: Option<PFN_vkCmdSetScissorWithCountEXT>,
|
||||
pub CmdBindVertexBuffers2EXT: Option<PFN_vkCmdBindVertexBuffers2EXT>,
|
||||
pub CmdSetDepthTestEnableEXT: Option<PFN_vkCmdSetDepthTestEnableEXT>,
|
||||
pub CmdSetDepthWriteEnableEXT: Option<PFN_vkCmdSetDepthWriteEnableEXT>,
|
||||
pub CmdSetDepthCompareOpEXT: Option<PFN_vkCmdSetDepthCompareOpEXT>,
|
||||
pub CmdSetDepthBoundsTestEnableEXT: Option<PFN_vkCmdSetDepthBoundsTestEnableEXT>,
|
||||
pub CmdSetStencilTestEnableEXT: Option<PFN_vkCmdSetStencilTestEnableEXT>,
|
||||
pub CmdSetStencilOpEXT: Option<PFN_vkCmdSetStencilOpEXT>,
|
||||
|
||||
// ---- VK_NV_device_generated_commands extension commands
|
||||
pub GetGeneratedCommandsMemoryRequirementsNV:
|
||||
Option<PFN_vkGetGeneratedCommandsMemoryRequirementsNV>,
|
||||
pub CmdPreprocessGeneratedCommandsNV: Option<PFN_vkCmdPreprocessGeneratedCommandsNV>,
|
||||
pub CmdExecuteGeneratedCommandsNV: Option<PFN_vkCmdExecuteGeneratedCommandsNV>,
|
||||
pub CmdBindPipelineShaderGroupNV: Option<PFN_vkCmdBindPipelineShaderGroupNV>,
|
||||
pub CreateIndirectCommandsLayoutNV: Option<PFN_vkCreateIndirectCommandsLayoutNV>,
|
||||
pub DestroyIndirectCommandsLayoutNV: Option<PFN_vkDestroyIndirectCommandsLayoutNV>,
|
||||
|
||||
// ---- VK_EXT_private_data extension commands
|
||||
pub CreatePrivateDataSlotEXT: Option<PFN_vkCreatePrivateDataSlotEXT>,
|
||||
pub DestroyPrivateDataSlotEXT: Option<PFN_vkDestroyPrivateDataSlotEXT>,
|
||||
pub SetPrivateDataEXT: Option<PFN_vkSetPrivateDataEXT>,
|
||||
pub GetPrivateDataEXT: Option<PFN_vkGetPrivateDataEXT>,
|
||||
|
||||
// ---- VK_NV_fragment_shading_rate_enums extension commands
|
||||
pub CmdSetFragmentShadingRateEnumNV: Option<PFN_vkCmdSetFragmentShadingRateEnumNV>,
|
||||
|
||||
// ---- VK_EXT_image_compression_control extension commands
|
||||
pub GetImageSubresourceLayout2EXT: Option<PFN_vkGetImageSubresourceLayout2EXT>,
|
||||
|
||||
// ---- VK_EXT_device_fault extension commands
|
||||
pub GetDeviceFaultInfoEXT: Option<PFN_vkGetDeviceFaultInfoEXT>,
|
||||
|
||||
// ---- VK_EXT_vertex_input_dynamic_state extension commands
|
||||
pub CmdSetVertexInputEXT: Option<PFN_vkCmdSetVertexInputEXT>,
|
||||
|
||||
// ---- VK_HUAWEI_subpass_shading extension commands
|
||||
pub GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI:
|
||||
Option<PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI>,
|
||||
pub CmdSubpassShadingHUAWEI: Option<PFN_vkCmdSubpassShadingHUAWEI>,
|
||||
|
||||
// ---- VK_HUAWEI_invocation_mask extension commands
|
||||
pub CmdBindInvocationMaskHUAWEI: Option<PFN_vkCmdBindInvocationMaskHUAWEI>,
|
||||
|
||||
// ---- VK_NV_external_memory_rdma extension commands
|
||||
pub GetMemoryRemoteAddressNV: Option<PFN_vkGetMemoryRemoteAddressNV>,
|
||||
|
||||
// ---- VK_EXT_pipeline_properties extension commands
|
||||
pub GetPipelinePropertiesEXT: Option<PFN_vkGetPipelinePropertiesEXT>,
|
||||
|
||||
// ---- VK_EXT_extended_dynamic_state2 extension commands
|
||||
pub CmdSetPatchControlPointsEXT: Option<PFN_vkCmdSetPatchControlPointsEXT>,
|
||||
pub CmdSetRasterizerDiscardEnableEXT: Option<PFN_vkCmdSetRasterizerDiscardEnableEXT>,
|
||||
pub CmdSetDepthBiasEnableEXT: Option<PFN_vkCmdSetDepthBiasEnableEXT>,
|
||||
pub CmdSetLogicOpEXT: Option<PFN_vkCmdSetLogicOpEXT>,
|
||||
pub CmdSetPrimitiveRestartEnableEXT: Option<PFN_vkCmdSetPrimitiveRestartEnableEXT>,
|
||||
|
||||
// ---- VK_EXT_color_write_enable extension commands
|
||||
pub CmdSetColorWriteEnableEXT: Option<PFN_vkCmdSetColorWriteEnableEXT>,
|
||||
|
||||
// ---- VK_EXT_multi_draw extension commands
|
||||
pub CmdDrawMultiEXT: Option<PFN_vkCmdDrawMultiEXT>,
|
||||
pub CmdDrawMultiIndexedEXT: Option<PFN_vkCmdDrawMultiIndexedEXT>,
|
||||
|
||||
// ---- VK_EXT_opacity_micromap extension commands
|
||||
pub CreateMicromapEXT: Option<PFN_vkCreateMicromapEXT>,
|
||||
pub DestroyMicromapEXT: Option<PFN_vkDestroyMicromapEXT>,
|
||||
pub CmdBuildMicromapsEXT: Option<PFN_vkCmdBuildMicromapsEXT>,
|
||||
pub BuildMicromapsEXT: Option<PFN_vkBuildMicromapsEXT>,
|
||||
pub CopyMicromapEXT: Option<PFN_vkCopyMicromapEXT>,
|
||||
pub CopyMicromapToMemoryEXT: Option<PFN_vkCopyMicromapToMemoryEXT>,
|
||||
pub CopyMemoryToMicromapEXT: Option<PFN_vkCopyMemoryToMicromapEXT>,
|
||||
pub WriteMicromapsPropertiesEXT: Option<PFN_vkWriteMicromapsPropertiesEXT>,
|
||||
pub CmdCopyMicromapEXT: Option<PFN_vkCmdCopyMicromapEXT>,
|
||||
pub CmdCopyMicromapToMemoryEXT: Option<PFN_vkCmdCopyMicromapToMemoryEXT>,
|
||||
pub CmdCopyMemoryToMicromapEXT: Option<PFN_vkCmdCopyMemoryToMicromapEXT>,
|
||||
pub CmdWriteMicromapsPropertiesEXT: Option<PFN_vkCmdWriteMicromapsPropertiesEXT>,
|
||||
pub GetDeviceMicromapCompatibilityEXT: Option<PFN_vkGetDeviceMicromapCompatibilityEXT>,
|
||||
pub GetMicromapBuildSizesEXT: Option<PFN_vkGetMicromapBuildSizesEXT>,
|
||||
|
||||
// ---- VK_EXT_pageable_device_local_memory extension commands
|
||||
pub SetDeviceMemoryPriorityEXT: Option<PFN_vkSetDeviceMemoryPriorityEXT>,
|
||||
|
||||
// ---- VK_VALVE_descriptor_set_host_mapping extension commands
|
||||
pub GetDescriptorSetLayoutHostMappingInfoVALVE:
|
||||
Option<PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE>,
|
||||
pub GetDescriptorSetHostMappingVALVE: Option<PFN_vkGetDescriptorSetHostMappingVALVE>,
|
||||
|
||||
// ---- VK_EXT_extended_dynamic_state3 extension commands
|
||||
pub CmdSetTessellationDomainOriginEXT: Option<PFN_vkCmdSetTessellationDomainOriginEXT>,
|
||||
pub CmdSetDepthClampEnableEXT: Option<PFN_vkCmdSetDepthClampEnableEXT>,
|
||||
pub CmdSetPolygonModeEXT: Option<PFN_vkCmdSetPolygonModeEXT>,
|
||||
pub CmdSetRasterizationSamplesEXT: Option<PFN_vkCmdSetRasterizationSamplesEXT>,
|
||||
pub CmdSetSampleMaskEXT: Option<PFN_vkCmdSetSampleMaskEXT>,
|
||||
pub CmdSetAlphaToCoverageEnableEXT: Option<PFN_vkCmdSetAlphaToCoverageEnableEXT>,
|
||||
pub CmdSetAlphaToOneEnableEXT: Option<PFN_vkCmdSetAlphaToOneEnableEXT>,
|
||||
pub CmdSetLogicOpEnableEXT: Option<PFN_vkCmdSetLogicOpEnableEXT>,
|
||||
pub CmdSetColorBlendEnableEXT: Option<PFN_vkCmdSetColorBlendEnableEXT>,
|
||||
pub CmdSetColorBlendEquationEXT: Option<PFN_vkCmdSetColorBlendEquationEXT>,
|
||||
pub CmdSetColorWriteMaskEXT: Option<PFN_vkCmdSetColorWriteMaskEXT>,
|
||||
pub CmdSetRasterizationStreamEXT: Option<PFN_vkCmdSetRasterizationStreamEXT>,
|
||||
pub CmdSetConservativeRasterizationModeEXT:
|
||||
Option<PFN_vkCmdSetConservativeRasterizationModeEXT>,
|
||||
pub CmdSetExtraPrimitiveOverestimationSizeEXT:
|
||||
Option<PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT>,
|
||||
pub CmdSetDepthClipEnableEXT: Option<PFN_vkCmdSetDepthClipEnableEXT>,
|
||||
pub CmdSetSampleLocationsEnableEXT: Option<PFN_vkCmdSetSampleLocationsEnableEXT>,
|
||||
pub CmdSetColorBlendAdvancedEXT: Option<PFN_vkCmdSetColorBlendAdvancedEXT>,
|
||||
pub CmdSetProvokingVertexModeEXT: Option<PFN_vkCmdSetProvokingVertexModeEXT>,
|
||||
pub CmdSetLineRasterizationModeEXT: Option<PFN_vkCmdSetLineRasterizationModeEXT>,
|
||||
pub CmdSetLineStippleEnableEXT: Option<PFN_vkCmdSetLineStippleEnableEXT>,
|
||||
pub CmdSetDepthClipNegativeOneToOneEXT: Option<PFN_vkCmdSetDepthClipNegativeOneToOneEXT>,
|
||||
pub CmdSetViewportWScalingEnableNV: Option<PFN_vkCmdSetViewportWScalingEnableNV>,
|
||||
pub CmdSetViewportSwizzleNV: Option<PFN_vkCmdSetViewportWScalingEnableNV>,
|
||||
pub CmdSetCoverageToColorEnableNV: Option<PFN_vkCmdSetViewportWScalingEnableNV>,
|
||||
pub CmdSetCoverageToColorLocationNV: Option<PFN_vkCmdSetViewportWScalingEnableNV>,
|
||||
pub CmdSetCoverageModulationModeNV: Option<PFN_vkCmdSetCoverageModulationModeNV>,
|
||||
pub CmdSetCoverageModulationTableEnableNV: Option<PFN_vkCmdSetCoverageModulationTableEnableNV>,
|
||||
pub CmdSetCoverageModulationTableNV: Option<PFN_vkCmdSetCoverageModulationTableNV>,
|
||||
pub CmdSetShadingRateImageEnableNV: Option<PFN_vkCmdSetShadingRateImageEnableNV>,
|
||||
pub CmdSetRepresentativeFragmentTestEnableNV:
|
||||
Option<PFN_vkCmdSetRepresentativeFragmentTestEnableNV>,
|
||||
pub CmdSetCoverageReductionModeNV: Option<PFN_vkCmdSetCoverageReductionModeNV>,
|
||||
|
||||
// ---- VK_EXT_shader_module_identifier extension commands
|
||||
pub GetShaderModuleIdentifierEXT: Option<PFN_vkGetShaderModuleIdentifierEXT>,
|
||||
pub GetShaderModuleCreateInfoIdentifierEXT:
|
||||
Option<PFN_vkGetShaderModuleCreateInfoIdentifierEXT>,
|
||||
|
||||
// ---- VK_NV_optical_flow extension commands
|
||||
pub CreateOpticalFlowSessionNV: Option<PFN_vkCreateOpticalFlowSessionNV>,
|
||||
pub DestroyOpticalFlowSessionNV: Option<PFN_vkDestroyOpticalFlowSessionNV>,
|
||||
pub BindOpticalFlowSessionImageNV: Option<PFN_vkBindOpticalFlowSessionImageNV>,
|
||||
pub CmdOpticalFlowExecuteNV: Option<PFN_vkCmdOpticalFlowExecuteNV>,
|
||||
|
||||
// ---- VK_QCOM_tile_properties extension commands
|
||||
pub GetFramebufferTilePropertiesQCOM: Option<PFN_vkGetFramebufferTilePropertiesQCOM>,
|
||||
pub GetDynamicRenderingTilePropertiesQCOM: Option<PFN_vkGetDynamicRenderingTilePropertiesQCOM>,
|
||||
|
||||
// ---- VK_KHR_acceleration_structure extension commands
|
||||
pub CreateAccelerationStructureKHR: Option<PFN_vkCreateAccelerationStructureKHR>,
|
||||
pub DestroyAccelerationStructureKHR: Option<PFN_vkDestroyAccelerationStructureKHR>,
|
||||
pub CmdBuildAccelerationStructuresKHR: Option<PFN_vkCmdBuildAccelerationStructuresKHR>,
|
||||
pub CmdBuildAccelerationStructuresIndirectKHR:
|
||||
Option<PFN_vkCmdBuildAccelerationStructuresIndirectKHR>,
|
||||
pub BuildAccelerationStructuresKHR: Option<PFN_vkBuildAccelerationStructuresKHR>,
|
||||
pub CopyAccelerationStructureKHR: Option<PFN_vkCopyAccelerationStructureKHR>,
|
||||
pub CopyAccelerationStructureToMemoryKHR: Option<PFN_vkCopyAccelerationStructureToMemoryKHR>,
|
||||
pub CopyMemoryToAccelerationStructureKHR: Option<PFN_vkCopyMemoryToAccelerationStructureKHR>,
|
||||
pub WriteAccelerationStructuresPropertiesKHR:
|
||||
Option<PFN_vkWriteAccelerationStructuresPropertiesKHR>,
|
||||
pub CmdCopyAccelerationStructureKHR: Option<PFN_vkCmdCopyAccelerationStructureKHR>,
|
||||
pub CmdCopyAccelerationStructureToMemoryKHR:
|
||||
Option<PFN_vkCmdCopyAccelerationStructureToMemoryKHR>,
|
||||
pub CmdCopyMemoryToAccelerationStructureKHR:
|
||||
Option<PFN_vkCmdCopyMemoryToAccelerationStructureKHR>,
|
||||
pub GetAccelerationStructureDeviceAddressKHR:
|
||||
Option<PFN_vkGetAccelerationStructureDeviceAddressKHR>,
|
||||
pub CmdWriteAccelerationStructuresPropertiesKHR:
|
||||
Option<PFN_vkCmdWriteAccelerationStructuresPropertiesKHR>,
|
||||
pub GetDeviceAccelerationStructureCompatibilityKHR:
|
||||
Option<PFN_vkGetDeviceAccelerationStructureCompatibilityKHR>,
|
||||
pub GetAccelerationStructureBuildSizesKHR: Option<PFN_vkGetAccelerationStructureBuildSizesKHR>,
|
||||
|
||||
// ---- VK_KHR_ray_tracing_pipeline extension commands
|
||||
pub CmdTraceRaysKHR: Option<PFN_vkCmdTraceRaysKHR>,
|
||||
pub CreateRayTracingPipelinesKHR: Option<PFN_vkCreateRayTracingPipelinesKHR>,
|
||||
pub GetRayTracingCaptureReplayShaderGroupHandlesKHR:
|
||||
Option<PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR>,
|
||||
pub CmdTraceRaysIndirectKHR: Option<PFN_vkCmdTraceRaysIndirectKHR>,
|
||||
pub GetRayTracingShaderGroupStackSizeKHR: Option<PFN_vkGetRayTracingShaderGroupStackSizeKHR>,
|
||||
pub CmdSetRayTracingPipelineStackSizeKHR: Option<PFN_vkCmdSetRayTracingPipelineStackSizeKHR>,
|
||||
|
||||
// ---- VK_EXT_mesh_shader extension commands
|
||||
pub CmdDrawMeshTasksEXT: Option<PFN_vkCmdDrawMeshTasksEXT>,
|
||||
pub CmdDrawMeshTasksIndirectEXT: Option<PFN_vkCmdDrawMeshTasksIndirectEXT>,
|
||||
pub CmdDrawMeshTasksIndirectCountEXT: Option<PFN_vkCmdDrawMeshTasksIndirectCountEXT>,
|
||||
}
|
|
@ -1,175 +0,0 @@
|
|||
#![allow(non_snake_case)]
|
||||
|
||||
use vulkan_sys::prelude::*;
|
||||
|
||||
use crate::dummy_functions::*;
|
||||
|
||||
#[derive(Clone, Default)]
|
||||
pub struct VkLayerInstanceDispatchTable {
|
||||
// Manually add in GetPhysicalDeviceProcAddr entry
|
||||
pub GetPhysicalDeviceProcAddr: Option<PFN_GetPhysicalDeviceProcAddr>,
|
||||
|
||||
// ---- Core 1_0 commands
|
||||
pub CreateInstance: Option<PFN_vkCreateInstance>,
|
||||
pub DestroyInstance: Option<PFN_vkDestroyInstance>,
|
||||
pub EnumeratePhysicalDevices: Option<PFN_vkEnumeratePhysicalDevices>,
|
||||
pub GetPhysicalDeviceFeatures: Option<PFN_vkGetPhysicalDeviceFeatures>,
|
||||
pub GetPhysicalDeviceFormatProperties: Option<PFN_vkGetPhysicalDeviceFormatProperties>,
|
||||
pub GetPhysicalDeviceImageFormatProperties:
|
||||
Option<PFN_vkGetPhysicalDeviceImageFormatProperties>,
|
||||
pub GetPhysicalDeviceProperties: Option<PFN_vkGetPhysicalDeviceProperties>,
|
||||
pub GetPhysicalDeviceQueueFamilyProperties:
|
||||
Option<PFN_vkGetPhysicalDeviceQueueFamilyProperties>,
|
||||
pub GetPhysicalDeviceMemoryProperties: Option<PFN_vkGetPhysicalDeviceMemoryProperties>,
|
||||
pub GetInstanceProcAddr: Option<PFN_vkGetInstanceProcAddr>,
|
||||
pub CreateDevice: Option<PFN_vkCreateDevice>,
|
||||
pub EnumerateInstanceExtensionProperties: Option<PFN_vkEnumerateInstanceExtensionProperties>,
|
||||
pub EnumerateDeviceExtensionProperties: Option<PFN_vkEnumerateDeviceExtensionProperties>,
|
||||
pub EnumerateInstanceLayerProperties: Option<PFN_vkEnumerateInstanceLayerProperties>,
|
||||
pub EnumerateDeviceLayerProperties: Option<PFN_vkEnumerateDeviceLayerProperties>,
|
||||
pub GetPhysicalDeviceSparseImageFormatProperties:
|
||||
Option<PFN_vkGetPhysicalDeviceSparseImageFormatProperties>,
|
||||
|
||||
// ---- Core 1_1 commands
|
||||
pub EnumerateInstanceVersion: Option<PFN_vkEnumerateInstanceVersion>,
|
||||
pub EnumeratePhysicalDeviceGroups: Option<PFN_vkEnumeratePhysicalDeviceGroups>,
|
||||
pub GetPhysicalDeviceFeatures2: Option<PFN_vkGetPhysicalDeviceFeatures2>,
|
||||
pub GetPhysicalDeviceProperties2: Option<PFN_vkGetPhysicalDeviceProperties2>,
|
||||
pub GetPhysicalDeviceFormatProperties2: Option<PFN_vkGetPhysicalDeviceFormatProperties2>,
|
||||
pub GetPhysicalDeviceImageFormatProperties2:
|
||||
Option<PFN_vkGetPhysicalDeviceImageFormatProperties2>,
|
||||
pub GetPhysicalDeviceQueueFamilyProperties2:
|
||||
Option<PFN_vkGetPhysicalDeviceQueueFamilyProperties2>,
|
||||
pub GetPhysicalDeviceMemoryProperties2: Option<PFN_vkGetPhysicalDeviceMemoryProperties2>,
|
||||
pub GetPhysicalDeviceSparseImageFormatProperties2:
|
||||
Option<PFN_vkGetPhysicalDeviceSparseImageFormatProperties2>,
|
||||
pub GetPhysicalDeviceExternalBufferProperties:
|
||||
Option<PFN_vkGetPhysicalDeviceExternalBufferProperties>,
|
||||
pub GetPhysicalDeviceExternalFenceProperties:
|
||||
Option<PFN_vkGetPhysicalDeviceExternalFenceProperties>,
|
||||
pub GetPhysicalDeviceExternalSemaphoreProperties:
|
||||
Option<PFN_vkGetPhysicalDeviceExternalSemaphoreProperties>,
|
||||
|
||||
// ---- Core 1_3 commands
|
||||
pub GetPhysicalDeviceToolProperties: Option<PFN_vkGetPhysicalDeviceToolProperties>,
|
||||
|
||||
// ---- VK_KHR_surface extension commands
|
||||
pub DestroySurfaceKHR: Option<PFN_vkDestroySurfaceKHR>,
|
||||
pub GetPhysicalDeviceSurfaceSupportKHR: Option<PFN_vkGetPhysicalDeviceSurfaceSupportKHR>,
|
||||
pub GetPhysicalDeviceSurfaceCapabilitiesKHR:
|
||||
Option<PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR>,
|
||||
pub GetPhysicalDeviceSurfaceFormatsKHR: Option<PFN_vkGetPhysicalDeviceSurfaceFormatsKHR>,
|
||||
pub GetPhysicalDeviceSurfacePresentModesKHR:
|
||||
Option<PFN_vkGetPhysicalDeviceSurfacePresentModesKHR>,
|
||||
|
||||
// ---- VK_KHR_swapchain extension commands
|
||||
pub GetPhysicalDevicePresentRectanglesKHR: Option<PFN_vkGetPhysicalDevicePresentRectanglesKHR>,
|
||||
|
||||
// ---- VK_KHR_display extension commands
|
||||
pub GetPhysicalDeviceDisplayPropertiesKHR: Option<PFN_vkGetPhysicalDeviceDisplayPropertiesKHR>,
|
||||
pub GetPhysicalDeviceDisplayPlanePropertiesKHR:
|
||||
Option<PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR>,
|
||||
pub GetDisplayPlaneSupportedDisplaysKHR: Option<PFN_vkGetDisplayPlaneSupportedDisplaysKHR>,
|
||||
pub GetDisplayModePropertiesKHR: Option<PFN_vkGetDisplayModePropertiesKHR>,
|
||||
pub CreateDisplayModeKHR: Option<PFN_vkCreateDisplayModeKHR>,
|
||||
pub GetDisplayPlaneCapabilitiesKHR: Option<PFN_vkGetDisplayPlaneCapabilitiesKHR>,
|
||||
pub CreateDisplayPlaneSurfaceKHR: Option<PFN_vkCreateDisplayPlaneSurfaceKHR>,
|
||||
|
||||
// ---- VK_KHR_get_physical_device_properties2 extension commands
|
||||
pub GetPhysicalDeviceFeatures2KHR: Option<PFN_vkGetPhysicalDeviceFeatures2KHR>,
|
||||
pub GetPhysicalDeviceProperties2KHR: Option<PFN_vkGetPhysicalDeviceProperties2KHR>,
|
||||
pub GetPhysicalDeviceFormatProperties2KHR: Option<PFN_vkGetPhysicalDeviceFormatProperties2KHR>,
|
||||
pub GetPhysicalDeviceImageFormatProperties2KHR:
|
||||
Option<PFN_vkGetPhysicalDeviceImageFormatProperties2KHR>,
|
||||
pub GetPhysicalDeviceQueueFamilyProperties2KHR:
|
||||
Option<PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR>,
|
||||
pub GetPhysicalDeviceMemoryProperties2KHR: Option<PFN_vkGetPhysicalDeviceMemoryProperties2KHR>,
|
||||
pub GetPhysicalDeviceSparseImageFormatProperties2KHR:
|
||||
Option<PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR>,
|
||||
|
||||
// ---- VK_KHR_device_group_creation extension commands
|
||||
pub EnumeratePhysicalDeviceGroupsKHR: Option<PFN_vkEnumeratePhysicalDeviceGroupsKHR>,
|
||||
|
||||
// ---- VK_KHR_external_memory_capabilities extension commands
|
||||
pub GetPhysicalDeviceExternalBufferPropertiesKHR:
|
||||
Option<PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR>,
|
||||
|
||||
// ---- VK_KHR_external_semaphore_capabilities extension commands
|
||||
pub GetPhysicalDeviceExternalSemaphorePropertiesKHR:
|
||||
Option<PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR>,
|
||||
|
||||
// ---- VK_KHR_external_fence_capabilities extension commands
|
||||
pub GetPhysicalDeviceExternalFencePropertiesKHR:
|
||||
Option<PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR>,
|
||||
|
||||
// ---- VK_KHR_performance_query extension commands
|
||||
pub EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR:
|
||||
Option<PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR>,
|
||||
pub GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR:
|
||||
Option<PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR>,
|
||||
|
||||
// ---- VK_KHR_get_surface_capabilities2 extension commands
|
||||
pub GetPhysicalDeviceSurfaceCapabilities2KHR:
|
||||
Option<PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR>,
|
||||
pub GetPhysicalDeviceSurfaceFormats2KHR: Option<PFN_vkGetPhysicalDeviceSurfaceFormats2KHR>,
|
||||
|
||||
// ---- VK_KHR_get_display_properties2 extension commands
|
||||
pub GetPhysicalDeviceDisplayProperties2KHR:
|
||||
Option<PFN_vkGetPhysicalDeviceDisplayProperties2KHR>,
|
||||
pub GetPhysicalDeviceDisplayPlaneProperties2KHR:
|
||||
Option<PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR>,
|
||||
pub GetDisplayModeProperties2KHR: Option<PFN_vkGetDisplayModeProperties2KHR>,
|
||||
pub GetDisplayPlaneCapabilities2KHR: Option<PFN_vkGetDisplayPlaneCapabilities2KHR>,
|
||||
|
||||
// ---- VK_KHR_fragment_shading_rate extension commands
|
||||
pub GetPhysicalDeviceFragmentShadingRatesKHR:
|
||||
Option<PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR>,
|
||||
|
||||
// ---- VK_EXT_debug_report extension commands
|
||||
pub CreateDebugReportCallbackEXT: Option<PFN_vkCreateDebugReportCallbackEXT>,
|
||||
pub DestroyDebugReportCallbackEXT: Option<PFN_vkDestroyDebugReportCallbackEXT>,
|
||||
pub DebugReportMessageEXT: Option<PFN_vkDebugReportMessageEXT>,
|
||||
|
||||
// ---- VK_NV_external_memory_capabilities extension commands
|
||||
pub GetPhysicalDeviceExternalImageFormatPropertiesNV:
|
||||
Option<PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV>,
|
||||
|
||||
// ---- VK_EXT_display_surface_counter extension commands
|
||||
pub GetPhysicalDeviceSurfaceCapabilities2EXT:
|
||||
Option<PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT>,
|
||||
|
||||
// ---- VK_EXT_debug_utils extension commands
|
||||
pub CreateDebugUtilsMessengerEXT: Option<PFN_vkCreateDebugUtilsMessengerEXT>,
|
||||
pub DestroyDebugUtilsMessengerEXT: Option<PFN_vkDestroyDebugUtilsMessengerEXT>,
|
||||
pub SubmitDebugUtilsMessageEXT: Option<PFN_vkSubmitDebugUtilsMessageEXT>,
|
||||
|
||||
// ---- VK_EXT_sample_locations extension commands
|
||||
pub GetPhysicalDeviceMultisamplePropertiesEXT:
|
||||
Option<PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT>,
|
||||
|
||||
// ---- VK_EXT_calibrated_timestamps extension commands
|
||||
pub GetPhysicalDeviceCalibrateableTimeDomainsEXT:
|
||||
Option<PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT>,
|
||||
|
||||
// ---- VK_EXT_tooling_info extension commands
|
||||
pub GetPhysicalDeviceToolPropertiesEXT: Option<PFN_vkGetPhysicalDeviceToolPropertiesEXT>,
|
||||
|
||||
// ---- VK_NV_cooperative_matrix extension commands
|
||||
pub GetPhysicalDeviceCooperativeMatrixPropertiesNV:
|
||||
Option<PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV>,
|
||||
|
||||
// ---- VK_NV_coverage_reduction_mode extension commands
|
||||
pub GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV:
|
||||
Option<PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV>,
|
||||
|
||||
// ---- VK_EXT_headless_surface extension commands
|
||||
pub CreateHeadlessSurfaceEXT: Option<PFN_vkCreateHeadlessSurfaceEXT>,
|
||||
|
||||
// ---- VK_EXT_acquire_drm_display extension commands
|
||||
pub AcquireDrmDisplayEXT: Option<PFN_vkAcquireDrmDisplayEXT>,
|
||||
pub GetDrmDisplayEXT: Option<PFN_vkGetDrmDisplayEXT>,
|
||||
|
||||
// ---- VK_NV_optical_flow extension commands
|
||||
pub GetPhysicalDeviceOpticalFlowImageFormatsNV:
|
||||
Option<PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV>,
|
||||
}
|
134
src/lib.rs
134
src/lib.rs
|
@ -1,85 +1,18 @@
|
|||
pub mod dummy_functions;
|
||||
pub mod enums;
|
||||
pub mod layer_device_dispatch_table;
|
||||
pub mod layer_instance_dispatch_table;
|
||||
pub mod structs;
|
||||
|
||||
use std::{
|
||||
fs::OpenOptions,
|
||||
io::Write,
|
||||
mem::{self},
|
||||
os::raw::c_char,
|
||||
ptr,
|
||||
};
|
||||
#[macro_use]
|
||||
mod instance_handles;
|
||||
mod device_handles;
|
||||
|
||||
use std::{fs::OpenOptions, io::Write, mem, os::raw::c_char, ptr};
|
||||
|
||||
use device_handles::*;
|
||||
use enums::*;
|
||||
use instance_handles::*;
|
||||
use structs::*;
|
||||
use vulkan_sys::prelude::*;
|
||||
|
||||
static mut INSTANCE_FN_HANDLES: Option<VkFunctionHandles> = None;
|
||||
|
||||
fn instance_fns() -> &'static VkFunctionHandles {
|
||||
unsafe { INSTANCE_FN_HANDLES.as_ref().unwrap() }
|
||||
}
|
||||
|
||||
pub struct VkFunctionHandles {
|
||||
pub static_functions: StaticFunctions,
|
||||
pub entry_functions: EntryFunctions,
|
||||
|
||||
pub instance_functions: InstanceFunctions,
|
||||
pub instance_wsi_functions: InstanceWSIFunctions,
|
||||
pub physical_device_properties2_functions: PhysicalDeviceProperties2Functions,
|
||||
pub debug_report_callback_functions: DebugReportCallbackFunctions,
|
||||
pub debug_utils_messenger_functions: DebugUtilsMessengerFunctions,
|
||||
}
|
||||
|
||||
impl VkFunctionHandles {
|
||||
pub fn load_instance(
|
||||
static_functions: StaticFunctions,
|
||||
entry_functions: EntryFunctions,
|
||||
instance: VkInstance,
|
||||
) -> Self {
|
||||
Self {
|
||||
instance_functions: InstanceFunctions::new(&static_functions, instance),
|
||||
instance_wsi_functions: InstanceWSIFunctions::new(&static_functions, instance),
|
||||
physical_device_properties2_functions: PhysicalDeviceProperties2Functions::new(
|
||||
&static_functions,
|
||||
instance,
|
||||
),
|
||||
debug_report_callback_functions: DebugReportCallbackFunctions::new(
|
||||
&static_functions,
|
||||
instance,
|
||||
),
|
||||
debug_utils_messenger_functions: DebugUtilsMessengerFunctions::new(
|
||||
&static_functions,
|
||||
instance,
|
||||
),
|
||||
|
||||
static_functions,
|
||||
entry_functions,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! cmp_vk_fn {
|
||||
($name:ident, {$([$fns:ident, $fn_name:ident],)*}) => {
|
||||
match $name {
|
||||
$(
|
||||
stringify!($fn_name) => return unsafe {
|
||||
mem::transmute(
|
||||
instance_fns()
|
||||
.$fns
|
||||
.$fn_name,
|
||||
)
|
||||
},
|
||||
)*
|
||||
|
||||
_ => ()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
#[allow(non_snake_case)]
|
||||
pub extern "C" fn vkNegotiateLoaderLayerInterfaceVersion(
|
||||
|
@ -105,7 +38,7 @@ pub extern "C" fn vkNegotiateLoaderLayerInterfaceVersion(
|
|||
|
||||
#[no_mangle]
|
||||
extern "system" fn get_device_proc_addr(
|
||||
device: VkDevice,
|
||||
_device: VkDevice,
|
||||
function_name: *const c_char,
|
||||
) -> PFN_vkVoidFunction {
|
||||
write_log("-> vulkan layer device proc addr");
|
||||
|
@ -115,7 +48,7 @@ extern "system" fn get_device_proc_addr(
|
|||
|
||||
#[no_mangle]
|
||||
extern "system" fn get_instance_proc_addr(
|
||||
instance: VkInstance,
|
||||
_instance: VkInstance,
|
||||
function_name: *const c_char,
|
||||
) -> PFN_vkVoidFunction {
|
||||
write_log("-> vulkan layer instance proc addr");
|
||||
|
@ -204,7 +137,7 @@ extern "system" fn create_instance(
|
|||
) {
|
||||
Some(info) => info,
|
||||
None => {
|
||||
write_log("chain info not found.");
|
||||
write_log("instance chain info not found.");
|
||||
return VK_ERROR_LAYER_NOT_PRESENT;
|
||||
}
|
||||
};
|
||||
|
@ -221,12 +154,13 @@ extern "system" fn create_instance(
|
|||
let result = unsafe { entry_functions.vkCreateInstance(create_info, allocator, instance) };
|
||||
if result != VK_SUCCESS {
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
let function_handles =
|
||||
VkFunctionHandles::load_instance(static_functions, entry_functions, unsafe { *instance });
|
||||
|
||||
unsafe { INSTANCE_FN_HANDLES = Some(function_handles) };
|
||||
set_instance_fns(VkInstanceHandles::load_instance(
|
||||
static_functions,
|
||||
entry_functions,
|
||||
unsafe { *instance },
|
||||
));
|
||||
|
||||
write_log("-> successfully created instance.");
|
||||
|
||||
|
@ -235,6 +169,12 @@ extern "system" fn create_instance(
|
|||
|
||||
extern "system" fn destroy_instance(instance: VkInstance, allocator: *const VkAllocationCallbacks) {
|
||||
write_log(" ================== vulkan layer destroy instance ==================");
|
||||
|
||||
unsafe {
|
||||
instance_fns()
|
||||
.instance_functions
|
||||
.vkDestroyInstance(instance, allocator)
|
||||
};
|
||||
}
|
||||
|
||||
extern "system" fn create_device(
|
||||
|
@ -245,11 +185,41 @@ extern "system" fn create_device(
|
|||
) -> VkResult {
|
||||
write_log(" ================== vulkan layer create device ==================");
|
||||
|
||||
let chain_info =
|
||||
match VkLayerDeviceCreateInfo::get_chain_info(unsafe { &*create_info }, VK_LAYER_LINK_INFO)
|
||||
{
|
||||
Some(info) => info,
|
||||
None => {
|
||||
write_log("device chain info not found.");
|
||||
return VK_ERROR_LAYER_NOT_PRESENT;
|
||||
}
|
||||
};
|
||||
|
||||
chain_info.advance_layer_info();
|
||||
let instance = instance_fns();
|
||||
let result = unsafe {
|
||||
instance
|
||||
.instance_functions
|
||||
.vkCreateDevice(physical_device, create_info, allocator, device)
|
||||
};
|
||||
|
||||
if result != VK_SUCCESS {
|
||||
return result;
|
||||
}
|
||||
|
||||
set_device_fns(VkDeviceHandles::new(unsafe { *device }));
|
||||
|
||||
VK_SUCCESS
|
||||
}
|
||||
|
||||
extern "system" fn destroy_device(device: VkDevice, allocator: *const VkAllocationCallbacks) {
|
||||
write_log(" ================== vulkan layer destroy device ==================");
|
||||
|
||||
unsafe {
|
||||
device_fns()
|
||||
.device_functions
|
||||
.vkDestroyDevice(device, allocator)
|
||||
}
|
||||
}
|
||||
|
||||
fn write_log(msg: impl ToString) {
|
||||
|
|
|
@ -159,6 +159,12 @@ impl VkLayerDeviceCreateInfo {
|
|||
debug_assert!(self.function == VK_LAYER_LINK_INFO);
|
||||
unsafe { &*self.u.layer_info }
|
||||
}
|
||||
|
||||
pub fn advance_layer_info(&mut self) {
|
||||
debug_assert!(self.function == VK_LAYER_LINK_INFO);
|
||||
|
||||
unsafe { self.u.layer_info = (*self.u.layer_info).next }
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for VkLayerDeviceCreateInfo {
|
||||
|
|
Loading…
Reference in a new issue