pub trait DeviceWrapper {
Show 236 methods fn get_extensions(&self) -> &DeviceExtensions; fn GetDeviceQueue(
        &self,
        queueFamilyIndex: u32,
        queueIndex: u32,
        pQueue: *mut Queue
    ) { ... } fn QueueSubmit(
        &self,
        queue: Queue,
        submitCount: u32,
        pSubmits: *const SubmitInfo,
        fence: Fence
    ) -> Result { ... } fn QueueWaitIdle(&self, queue: Queue) -> Result { ... } fn DeviceWaitIdle(&self) -> Result { ... } fn AllocateMemory(
        &self,
        pAllocateInfo: *const MemoryAllocateInfo,
        pAllocator: *const AllocationCallbacks,
        pMemory: *mut DeviceMemory
    ) -> Result { ... } fn FreeMemory(
        &self,
        memory: DeviceMemory,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn MapMemory(
        &self,
        memory: DeviceMemory,
        offset: DeviceSize,
        size: DeviceSize,
        flags: MemoryMapFlags,
        ppData: *mut *mut c_void
    ) -> Result { ... } fn UnmapMemory(&self, memory: DeviceMemory) { ... } fn FlushMappedMemoryRanges(
        &self,
        memoryRangeCount: u32,
        pMemoryRanges: *const MappedMemoryRange
    ) -> Result { ... } fn InvalidateMappedMemoryRanges(
        &self,
        memoryRangeCount: u32,
        pMemoryRanges: *const MappedMemoryRange
    ) -> Result { ... } fn GetDeviceMemoryCommitment(
        &self,
        memory: DeviceMemory,
        pCommittedMemoryInBytes: *mut DeviceSize
    ) { ... } fn BindBufferMemory(
        &self,
        buffer: Buffer,
        memory: DeviceMemory,
        memoryOffset: DeviceSize
    ) -> Result { ... } fn BindImageMemory(
        &self,
        image: Image,
        memory: DeviceMemory,
        memoryOffset: DeviceSize
    ) -> Result { ... } fn GetBufferMemoryRequirements(
        &self,
        buffer: Buffer,
        pMemoryRequirements: *mut MemoryRequirements
    ) { ... } fn GetImageMemoryRequirements(
        &self,
        image: Image,
        pMemoryRequirements: *mut MemoryRequirements
    ) { ... } fn GetImageSparseMemoryRequirements(
        &self,
        image: Image,
        pSparseMemoryRequirementCount: *mut u32,
        pSparseMemoryRequirements: *mut SparseImageMemoryRequirements
    ) { ... } fn QueueBindSparse(
        &self,
        queue: Queue,
        bindInfoCount: u32,
        pBindInfo: *const BindSparseInfo,
        fence: Fence
    ) -> Result { ... } fn CreateFence(
        &self,
        pCreateInfo: *const FenceCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pFence: *mut Fence
    ) -> Result { ... } fn DestroyFence(&self, fence: Fence, pAllocator: *const AllocationCallbacks) { ... } fn ResetFences(&self, fenceCount: u32, pFences: *const Fence) -> Result { ... } fn GetFenceStatus(&self, fence: Fence) -> Result { ... } fn WaitForFences(
        &self,
        fenceCount: u32,
        pFences: *const Fence,
        waitAll: Bool32,
        timeout: u64
    ) -> Result { ... } fn CreateSemaphore(
        &self,
        pCreateInfo: *const SemaphoreCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pSemaphore: *mut Semaphore
    ) -> Result { ... } fn DestroySemaphore(
        &self,
        semaphore: Semaphore,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn CreateEvent(
        &self,
        pCreateInfo: *const EventCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pEvent: *mut Event
    ) -> Result { ... } fn DestroyEvent(&self, event: Event, pAllocator: *const AllocationCallbacks) { ... } fn GetEventStatus(&self, event: Event) -> Result { ... } fn SetEvent(&self, event: Event) -> Result { ... } fn ResetEvent(&self, event: Event) -> Result { ... } fn CreateQueryPool(
        &self,
        pCreateInfo: *const QueryPoolCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pQueryPool: *mut QueryPool
    ) -> Result { ... } fn DestroyQueryPool(
        &self,
        queryPool: QueryPool,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn GetQueryPoolResults(
        &self,
        queryPool: QueryPool,
        firstQuery: u32,
        queryCount: u32,
        dataSize: usize,
        pData: *mut c_void,
        stride: DeviceSize,
        flags: QueryResultFlags
    ) -> Result { ... } fn CreateBuffer(
        &self,
        pCreateInfo: *const BufferCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pBuffer: *mut Buffer
    ) -> Result { ... } fn DestroyBuffer(
        &self,
        buffer: Buffer,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn CreateBufferView(
        &self,
        pCreateInfo: *const BufferViewCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pView: *mut BufferView
    ) -> Result { ... } fn DestroyBufferView(
        &self,
        bufferView: BufferView,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn CreateImage(
        &self,
        pCreateInfo: *const ImageCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pImage: *mut Image
    ) -> Result { ... } fn DestroyImage(&self, image: Image, pAllocator: *const AllocationCallbacks) { ... } fn GetImageSubresourceLayout(
        &self,
        image: Image,
        pSubresource: *const ImageSubresource,
        pLayout: *mut SubresourceLayout
    ) { ... } fn CreateImageView(
        &self,
        pCreateInfo: *const ImageViewCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pView: *mut ImageView
    ) -> Result { ... } fn DestroyImageView(
        &self,
        imageView: ImageView,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn CreateShaderModule(
        &self,
        pCreateInfo: *const ShaderModuleCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pShaderModule: *mut ShaderModule
    ) -> Result { ... } fn DestroyShaderModule(
        &self,
        shaderModule: ShaderModule,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn CreatePipelineCache(
        &self,
        pCreateInfo: *const PipelineCacheCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pPipelineCache: *mut PipelineCache
    ) -> Result { ... } fn DestroyPipelineCache(
        &self,
        pipelineCache: PipelineCache,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn GetPipelineCacheData(
        &self,
        pipelineCache: PipelineCache,
        pDataSize: *mut usize,
        pData: *mut c_void
    ) -> Result { ... } fn MergePipelineCaches(
        &self,
        dstCache: PipelineCache,
        srcCacheCount: u32,
        pSrcCaches: *const PipelineCache
    ) -> Result { ... } fn CreateGraphicsPipelines(
        &self,
        pipelineCache: PipelineCache,
        createInfoCount: u32,
        pCreateInfos: *const GraphicsPipelineCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pPipelines: *mut Pipeline
    ) -> Result { ... } fn CreateComputePipelines(
        &self,
        pipelineCache: PipelineCache,
        createInfoCount: u32,
        pCreateInfos: *const ComputePipelineCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pPipelines: *mut Pipeline
    ) -> Result { ... } fn DestroyPipeline(
        &self,
        pipeline: Pipeline,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn CreatePipelineLayout(
        &self,
        pCreateInfo: *const PipelineLayoutCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pPipelineLayout: *mut PipelineLayout
    ) -> Result { ... } fn DestroyPipelineLayout(
        &self,
        pipelineLayout: PipelineLayout,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn CreateSampler(
        &self,
        pCreateInfo: *const SamplerCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pSampler: *mut Sampler
    ) -> Result { ... } fn DestroySampler(
        &self,
        sampler: Sampler,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn CreateDescriptorSetLayout(
        &self,
        pCreateInfo: *const DescriptorSetLayoutCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pSetLayout: *mut DescriptorSetLayout
    ) -> Result { ... } fn DestroyDescriptorSetLayout(
        &self,
        descriptorSetLayout: DescriptorSetLayout,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn CreateDescriptorPool(
        &self,
        pCreateInfo: *const DescriptorPoolCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pDescriptorPool: *mut DescriptorPool
    ) -> Result { ... } fn DestroyDescriptorPool(
        &self,
        descriptorPool: DescriptorPool,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn ResetDescriptorPool(
        &self,
        descriptorPool: DescriptorPool,
        flags: DescriptorPoolResetFlags
    ) -> Result { ... } fn AllocateDescriptorSets(
        &self,
        pAllocateInfo: *const DescriptorSetAllocateInfo,
        pDescriptorSets: *mut DescriptorSet
    ) -> Result { ... } fn FreeDescriptorSets(
        &self,
        descriptorPool: DescriptorPool,
        descriptorSetCount: u32,
        pDescriptorSets: *const DescriptorSet
    ) -> Result { ... } fn UpdateDescriptorSets(
        &self,
        descriptorWriteCount: u32,
        pDescriptorWrites: *const WriteDescriptorSet,
        descriptorCopyCount: u32,
        pDescriptorCopies: *const CopyDescriptorSet
    ) { ... } fn CreateFramebuffer(
        &self,
        pCreateInfo: *const FramebufferCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pFramebuffer: *mut Framebuffer
    ) -> Result { ... } fn DestroyFramebuffer(
        &self,
        framebuffer: Framebuffer,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn CreateRenderPass(
        &self,
        pCreateInfo: *const RenderPassCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pRenderPass: *mut RenderPass
    ) -> Result { ... } fn DestroyRenderPass(
        &self,
        renderPass: RenderPass,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn GetRenderAreaGranularity(
        &self,
        renderPass: RenderPass,
        pGranularity: *mut Extent2D
    ) { ... } fn CreateCommandPool(
        &self,
        pCreateInfo: *const CommandPoolCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pCommandPool: *mut CommandPool
    ) -> Result { ... } fn DestroyCommandPool(
        &self,
        commandPool: CommandPool,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn ResetCommandPool(
        &self,
        commandPool: CommandPool,
        flags: CommandPoolResetFlags
    ) -> Result { ... } fn AllocateCommandBuffers(
        &self,
        pAllocateInfo: *const CommandBufferAllocateInfo,
        pCommandBuffers: *mut CommandBuffer
    ) -> Result { ... } fn FreeCommandBuffers(
        &self,
        commandPool: CommandPool,
        commandBufferCount: u32,
        pCommandBuffers: *const CommandBuffer
    ) { ... } fn BeginCommandBuffer(
        &self,
        commandBuffer: CommandBuffer,
        pBeginInfo: *const CommandBufferBeginInfo
    ) -> Result { ... } fn EndCommandBuffer(&self, commandBuffer: CommandBuffer) -> Result { ... } fn ResetCommandBuffer(
        &self,
        commandBuffer: CommandBuffer,
        flags: CommandBufferResetFlags
    ) -> Result { ... } fn CmdBindPipeline(
        &self,
        commandBuffer: CommandBuffer,
        pipelineBindPoint: PipelineBindPoint,
        pipeline: Pipeline
    ) { ... } fn CmdSetViewport(
        &self,
        commandBuffer: CommandBuffer,
        firstViewport: u32,
        viewportCount: u32,
        pViewports: *const Viewport
    ) { ... } fn CmdSetScissor(
        &self,
        commandBuffer: CommandBuffer,
        firstScissor: u32,
        scissorCount: u32,
        pScissors: *const Rect2D
    ) { ... } fn CmdSetLineWidth(&self, commandBuffer: CommandBuffer, lineWidth: f32) { ... } fn CmdSetDepthBias(
        &self,
        commandBuffer: CommandBuffer,
        depthBiasConstantFactor: f32,
        depthBiasClamp: f32,
        depthBiasSlopeFactor: f32
    ) { ... } fn CmdSetBlendConstants(
        &self,
        commandBuffer: CommandBuffer,
        blendConstants: [f32; 4]
    ) { ... } fn CmdSetDepthBounds(
        &self,
        commandBuffer: CommandBuffer,
        minDepthBounds: f32,
        maxDepthBounds: f32
    ) { ... } fn CmdSetStencilCompareMask(
        &self,
        commandBuffer: CommandBuffer,
        faceMask: StencilFaceFlags,
        compareMask: u32
    ) { ... } fn CmdSetStencilWriteMask(
        &self,
        commandBuffer: CommandBuffer,
        faceMask: StencilFaceFlags,
        writeMask: u32
    ) { ... } fn CmdSetStencilReference(
        &self,
        commandBuffer: CommandBuffer,
        faceMask: StencilFaceFlags,
        reference: u32
    ) { ... } fn CmdBindDescriptorSets(
        &self,
        commandBuffer: CommandBuffer,
        pipelineBindPoint: PipelineBindPoint,
        layout: PipelineLayout,
        firstSet: u32,
        descriptorSetCount: u32,
        pDescriptorSets: *const DescriptorSet,
        dynamicOffsetCount: u32,
        pDynamicOffsets: *const u32
    ) { ... } fn CmdBindIndexBuffer(
        &self,
        commandBuffer: CommandBuffer,
        buffer: Buffer,
        offset: DeviceSize,
        indexType: IndexType
    ) { ... } fn CmdBindVertexBuffers(
        &self,
        commandBuffer: CommandBuffer,
        firstBinding: u32,
        bindingCount: u32,
        pBuffers: *const Buffer,
        pOffsets: *const DeviceSize
    ) { ... } fn CmdDraw(
        &self,
        commandBuffer: CommandBuffer,
        vertexCount: u32,
        instanceCount: u32,
        firstVertex: u32,
        firstInstance: u32
    ) { ... } fn CmdDrawIndexed(
        &self,
        commandBuffer: CommandBuffer,
        indexCount: u32,
        instanceCount: u32,
        firstIndex: u32,
        vertexOffset: i32,
        firstInstance: u32
    ) { ... } fn CmdDrawIndirect(
        &self,
        commandBuffer: CommandBuffer,
        buffer: Buffer,
        offset: DeviceSize,
        drawCount: u32,
        stride: u32
    ) { ... } fn CmdDrawIndexedIndirect(
        &self,
        commandBuffer: CommandBuffer,
        buffer: Buffer,
        offset: DeviceSize,
        drawCount: u32,
        stride: u32
    ) { ... } fn CmdDispatch(
        &self,
        commandBuffer: CommandBuffer,
        groupCountX: u32,
        groupCountY: u32,
        groupCountZ: u32
    ) { ... } fn CmdDispatchIndirect(
        &self,
        commandBuffer: CommandBuffer,
        buffer: Buffer,
        offset: DeviceSize
    ) { ... } fn CmdCopyBuffer(
        &self,
        commandBuffer: CommandBuffer,
        srcBuffer: Buffer,
        dstBuffer: Buffer,
        regionCount: u32,
        pRegions: *const BufferCopy
    ) { ... } fn CmdCopyImage(
        &self,
        commandBuffer: CommandBuffer,
        srcImage: Image,
        srcImageLayout: ImageLayout,
        dstImage: Image,
        dstImageLayout: ImageLayout,
        regionCount: u32,
        pRegions: *const ImageCopy
    ) { ... } fn CmdBlitImage(
        &self,
        commandBuffer: CommandBuffer,
        srcImage: Image,
        srcImageLayout: ImageLayout,
        dstImage: Image,
        dstImageLayout: ImageLayout,
        regionCount: u32,
        pRegions: *const ImageBlit,
        filter: Filter
    ) { ... } fn CmdCopyBufferToImage(
        &self,
        commandBuffer: CommandBuffer,
        srcBuffer: Buffer,
        dstImage: Image,
        dstImageLayout: ImageLayout,
        regionCount: u32,
        pRegions: *const BufferImageCopy
    ) { ... } fn CmdCopyImageToBuffer(
        &self,
        commandBuffer: CommandBuffer,
        srcImage: Image,
        srcImageLayout: ImageLayout,
        dstBuffer: Buffer,
        regionCount: u32,
        pRegions: *const BufferImageCopy
    ) { ... } fn CmdUpdateBuffer(
        &self,
        commandBuffer: CommandBuffer,
        dstBuffer: Buffer,
        dstOffset: DeviceSize,
        dataSize: DeviceSize,
        pData: *const c_void
    ) { ... } fn CmdFillBuffer(
        &self,
        commandBuffer: CommandBuffer,
        dstBuffer: Buffer,
        dstOffset: DeviceSize,
        size: DeviceSize,
        data: u32
    ) { ... } fn CmdClearColorImage(
        &self,
        commandBuffer: CommandBuffer,
        image: Image,
        imageLayout: ImageLayout,
        pColor: *const ClearColorValue,
        rangeCount: u32,
        pRanges: *const ImageSubresourceRange
    ) { ... } fn CmdClearDepthStencilImage(
        &self,
        commandBuffer: CommandBuffer,
        image: Image,
        imageLayout: ImageLayout,
        pDepthStencil: *const ClearDepthStencilValue,
        rangeCount: u32,
        pRanges: *const ImageSubresourceRange
    ) { ... } fn CmdClearAttachments(
        &self,
        commandBuffer: CommandBuffer,
        attachmentCount: u32,
        pAttachments: *const ClearAttachment,
        rectCount: u32,
        pRects: *const ClearRect
    ) { ... } fn CmdResolveImage(
        &self,
        commandBuffer: CommandBuffer,
        srcImage: Image,
        srcImageLayout: ImageLayout,
        dstImage: Image,
        dstImageLayout: ImageLayout,
        regionCount: u32,
        pRegions: *const ImageResolve
    ) { ... } fn CmdSetEvent(
        &self,
        commandBuffer: CommandBuffer,
        event: Event,
        stageMask: PipelineStageFlags
    ) { ... } fn CmdResetEvent(
        &self,
        commandBuffer: CommandBuffer,
        event: Event,
        stageMask: PipelineStageFlags
    ) { ... } fn CmdWaitEvents(
        &self,
        commandBuffer: CommandBuffer,
        eventCount: u32,
        pEvents: *const Event,
        srcStageMask: PipelineStageFlags,
        dstStageMask: PipelineStageFlags,
        memoryBarrierCount: u32,
        pMemoryBarriers: *const MemoryBarrier,
        bufferMemoryBarrierCount: u32,
        pBufferMemoryBarriers: *const BufferMemoryBarrier,
        imageMemoryBarrierCount: u32,
        pImageMemoryBarriers: *const ImageMemoryBarrier
    ) { ... } fn CmdPipelineBarrier(
        &self,
        commandBuffer: CommandBuffer,
        srcStageMask: PipelineStageFlags,
        dstStageMask: PipelineStageFlags,
        dependencyFlags: DependencyFlags,
        memoryBarrierCount: u32,
        pMemoryBarriers: *const MemoryBarrier,
        bufferMemoryBarrierCount: u32,
        pBufferMemoryBarriers: *const BufferMemoryBarrier,
        imageMemoryBarrierCount: u32,
        pImageMemoryBarriers: *const ImageMemoryBarrier
    ) { ... } fn CmdBeginQuery(
        &self,
        commandBuffer: CommandBuffer,
        queryPool: QueryPool,
        query: u32,
        flags: QueryControlFlags
    ) { ... } fn CmdEndQuery(
        &self,
        commandBuffer: CommandBuffer,
        queryPool: QueryPool,
        query: u32
    ) { ... } fn CmdResetQueryPool(
        &self,
        commandBuffer: CommandBuffer,
        queryPool: QueryPool,
        firstQuery: u32,
        queryCount: u32
    ) { ... } fn CmdWriteTimestamp(
        &self,
        commandBuffer: CommandBuffer,
        pipelineStage: PipelineStageFlagBits,
        queryPool: QueryPool,
        query: u32
    ) { ... } fn CmdCopyQueryPoolResults(
        &self,
        commandBuffer: CommandBuffer,
        queryPool: QueryPool,
        firstQuery: u32,
        queryCount: u32,
        dstBuffer: Buffer,
        dstOffset: DeviceSize,
        stride: DeviceSize,
        flags: QueryResultFlags
    ) { ... } fn CmdPushConstants(
        &self,
        commandBuffer: CommandBuffer,
        layout: PipelineLayout,
        stageFlags: ShaderStageFlags,
        offset: u32,
        size: u32,
        pValues: *const c_void
    ) { ... } fn CmdBeginRenderPass(
        &self,
        commandBuffer: CommandBuffer,
        pRenderPassBegin: *const RenderPassBeginInfo,
        contents: SubpassContents
    ) { ... } fn CmdNextSubpass(
        &self,
        commandBuffer: CommandBuffer,
        contents: SubpassContents
    ) { ... } fn CmdEndRenderPass(&self, commandBuffer: CommandBuffer) { ... } fn CmdExecuteCommands(
        &self,
        commandBuffer: CommandBuffer,
        commandBufferCount: u32,
        pCommandBuffers: *const CommandBuffer
    ) { ... } fn BindBufferMemory2(
        &self,
        bindInfoCount: u32,
        pBindInfos: *const BindBufferMemoryInfo
    ) -> Result { ... } fn BindImageMemory2(
        &self,
        bindInfoCount: u32,
        pBindInfos: *const BindImageMemoryInfo
    ) -> Result { ... } fn GetDeviceGroupPeerMemoryFeatures(
        &self,
        heapIndex: u32,
        localDeviceIndex: u32,
        remoteDeviceIndex: u32,
        pPeerMemoryFeatures: *mut PeerMemoryFeatureFlags
    ) { ... } fn CmdSetDeviceMask(&self, commandBuffer: CommandBuffer, deviceMask: u32) { ... } fn CmdDispatchBase(
        &self,
        commandBuffer: CommandBuffer,
        baseGroupX: u32,
        baseGroupY: u32,
        baseGroupZ: u32,
        groupCountX: u32,
        groupCountY: u32,
        groupCountZ: u32
    ) { ... } fn GetImageMemoryRequirements2(
        &self,
        pInfo: *const ImageMemoryRequirementsInfo2,
        pMemoryRequirements: *mut MemoryRequirements2
    ) { ... } fn GetBufferMemoryRequirements2(
        &self,
        pInfo: *const BufferMemoryRequirementsInfo2,
        pMemoryRequirements: *mut MemoryRequirements2
    ) { ... } fn GetImageSparseMemoryRequirements2(
        &self,
        pInfo: *const ImageSparseMemoryRequirementsInfo2,
        pSparseMemoryRequirementCount: *mut u32,
        pSparseMemoryRequirements: *mut SparseImageMemoryRequirements2
    ) { ... } fn TrimCommandPool(
        &self,
        commandPool: CommandPool,
        flags: CommandPoolTrimFlags
    ) { ... } fn GetDeviceQueue2(
        &self,
        pQueueInfo: *const DeviceQueueInfo2,
        pQueue: *mut Queue
    ) { ... } fn CreateSamplerYcbcrConversion(
        &self,
        pCreateInfo: *const SamplerYcbcrConversionCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pYcbcrConversion: *mut SamplerYcbcrConversion
    ) -> Result { ... } fn DestroySamplerYcbcrConversion(
        &self,
        ycbcrConversion: SamplerYcbcrConversion,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn CreateDescriptorUpdateTemplate(
        &self,
        pCreateInfo: *const DescriptorUpdateTemplateCreateInfo,
        pAllocator: *const AllocationCallbacks,
        pDescriptorUpdateTemplate: *mut DescriptorUpdateTemplate
    ) -> Result { ... } fn DestroyDescriptorUpdateTemplate(
        &self,
        descriptorUpdateTemplate: DescriptorUpdateTemplate,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn UpdateDescriptorSetWithTemplate(
        &self,
        descriptorSet: DescriptorSet,
        descriptorUpdateTemplate: DescriptorUpdateTemplate,
        pData: *const c_void
    ) { ... } fn GetDescriptorSetLayoutSupport(
        &self,
        pCreateInfo: *const DescriptorSetLayoutCreateInfo,
        pSupport: *mut DescriptorSetLayoutSupport
    ) { ... } fn CreateSwapchainKHR(
        &self,
        pCreateInfo: *const SwapchainCreateInfoKHR,
        pAllocator: *const AllocationCallbacks,
        pSwapchain: *mut SwapchainKHR
    ) -> Result { ... } fn DestroySwapchainKHR(
        &self,
        swapchain: SwapchainKHR,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn GetSwapchainImagesKHR(
        &self,
        swapchain: SwapchainKHR,
        pSwapchainImageCount: *mut u32,
        pSwapchainImages: *mut Image
    ) -> Result { ... } fn AcquireNextImageKHR(
        &self,
        swapchain: SwapchainKHR,
        timeout: u64,
        semaphore: Semaphore,
        fence: Fence,
        pImageIndex: *mut u32
    ) -> Result { ... } fn QueuePresentKHR(
        &self,
        queue: Queue,
        pPresentInfo: *const PresentInfoKHR
    ) -> Result { ... } fn GetDeviceGroupPresentCapabilitiesKHR(
        &self,
        pDeviceGroupPresentCapabilities: *mut DeviceGroupPresentCapabilitiesKHR
    ) -> Result { ... } fn GetDeviceGroupSurfacePresentModesKHR(
        &self,
        surface: SurfaceKHR,
        pModes: *mut DeviceGroupPresentModeFlagsKHR
    ) -> Result { ... } fn GetPhysicalDevicePresentRectanglesKHR(
        &self,
        physicalDevice: PhysicalDevice,
        surface: SurfaceKHR,
        pRectCount: *mut u32,
        pRects: *mut Rect2D
    ) -> Result { ... } fn AcquireNextImage2KHR(
        &self,
        pAcquireInfo: *const AcquireNextImageInfoKHR,
        pImageIndex: *mut u32
    ) -> Result { ... } fn CreateSharedSwapchainsKHR(
        &self,
        swapchainCount: u32,
        pCreateInfos: *const SwapchainCreateInfoKHR,
        pAllocator: *const AllocationCallbacks,
        pSwapchains: *mut SwapchainKHR
    ) -> Result { ... } fn DebugMarkerSetObjectTagEXT(
        &self,
        pTagInfo: *const DebugMarkerObjectTagInfoEXT
    ) -> Result { ... } fn DebugMarkerSetObjectNameEXT(
        &self,
        pNameInfo: *const DebugMarkerObjectNameInfoEXT
    ) -> Result { ... } fn CmdDebugMarkerBeginEXT(
        &self,
        commandBuffer: CommandBuffer,
        pMarkerInfo: *const DebugMarkerMarkerInfoEXT
    ) { ... } fn CmdDebugMarkerEndEXT(&self, commandBuffer: CommandBuffer) { ... } fn CmdDebugMarkerInsertEXT(
        &self,
        commandBuffer: CommandBuffer,
        pMarkerInfo: *const DebugMarkerMarkerInfoEXT
    ) { ... } fn CmdBindTransformFeedbackBuffersEXT(
        &self,
        commandBuffer: CommandBuffer,
        firstBinding: u32,
        bindingCount: u32,
        pBuffers: *const Buffer,
        pOffsets: *const DeviceSize,
        pSizes: *const DeviceSize
    ) { ... } fn CmdBeginTransformFeedbackEXT(
        &self,
        commandBuffer: CommandBuffer,
        firstCounterBuffer: u32,
        counterBufferCount: u32,
        pCounterBuffers: *const Buffer,
        pCounterBufferOffsets: *const DeviceSize
    ) { ... } fn CmdEndTransformFeedbackEXT(
        &self,
        commandBuffer: CommandBuffer,
        firstCounterBuffer: u32,
        counterBufferCount: u32,
        pCounterBuffers: *const Buffer,
        pCounterBufferOffsets: *const DeviceSize
    ) { ... } fn CmdBeginQueryIndexedEXT(
        &self,
        commandBuffer: CommandBuffer,
        queryPool: QueryPool,
        query: u32,
        flags: QueryControlFlags,
        index: u32
    ) { ... } fn CmdEndQueryIndexedEXT(
        &self,
        commandBuffer: CommandBuffer,
        queryPool: QueryPool,
        query: u32,
        index: u32
    ) { ... } fn CmdDrawIndirectByteCountEXT(
        &self,
        commandBuffer: CommandBuffer,
        instanceCount: u32,
        firstInstance: u32,
        counterBuffer: Buffer,
        counterBufferOffset: DeviceSize,
        counterOffset: u32,
        vertexStride: u32
    ) { ... } fn CmdDrawIndirectCountAMD(
        &self,
        commandBuffer: CommandBuffer,
        buffer: Buffer,
        offset: DeviceSize,
        countBuffer: Buffer,
        countBufferOffset: DeviceSize,
        maxDrawCount: u32,
        stride: u32
    ) { ... } fn CmdDrawIndexedIndirectCountAMD(
        &self,
        commandBuffer: CommandBuffer,
        buffer: Buffer,
        offset: DeviceSize,
        countBuffer: Buffer,
        countBufferOffset: DeviceSize,
        maxDrawCount: u32,
        stride: u32
    ) { ... } fn GetShaderInfoAMD(
        &self,
        pipeline: Pipeline,
        shaderStage: ShaderStageFlagBits,
        infoType: ShaderInfoTypeAMD,
        pInfoSize: *mut usize,
        pInfo: *mut c_void
    ) -> Result { ... } fn GetMemoryWin32HandleNV(
        &self,
        memory: DeviceMemory,
        handleType: ExternalMemoryHandleTypeFlagsNV,
        pHandle: *mut HANDLE
    ) -> Result { ... } fn GetMemoryWin32HandleKHR(
        &self,
        pGetWin32HandleInfo: *const MemoryGetWin32HandleInfoKHR,
        pHandle: *mut HANDLE
    ) -> Result { ... } fn GetMemoryWin32HandlePropertiesKHR(
        &self,
        handleType: ExternalMemoryHandleTypeFlagBits,
        handle: HANDLE,
        pMemoryWin32HandleProperties: *mut MemoryWin32HandlePropertiesKHR
    ) -> Result { ... } fn GetMemoryFdKHR(
        &self,
        pGetFdInfo: *const MemoryGetFdInfoKHR,
        pFd: *mut i32
    ) -> Result { ... } fn GetMemoryFdPropertiesKHR(
        &self,
        handleType: ExternalMemoryHandleTypeFlagBits,
        fd: i32,
        pMemoryFdProperties: *mut MemoryFdPropertiesKHR
    ) -> Result { ... } fn ImportSemaphoreWin32HandleKHR(
        &self,
        pImportSemaphoreWin32HandleInfo: *const ImportSemaphoreWin32HandleInfoKHR
    ) -> Result { ... } fn GetSemaphoreWin32HandleKHR(
        &self,
        pGetWin32HandleInfo: *const SemaphoreGetWin32HandleInfoKHR,
        pHandle: *mut HANDLE
    ) -> Result { ... } fn ImportSemaphoreFdKHR(
        &self,
        pImportSemaphoreFdInfo: *const ImportSemaphoreFdInfoKHR
    ) -> Result { ... } fn GetSemaphoreFdKHR(
        &self,
        pGetFdInfo: *const SemaphoreGetFdInfoKHR,
        pFd: *mut i32
    ) -> Result { ... } fn CmdPushDescriptorSetKHR(
        &self,
        commandBuffer: CommandBuffer,
        pipelineBindPoint: PipelineBindPoint,
        layout: PipelineLayout,
        set: u32,
        descriptorWriteCount: u32,
        pDescriptorWrites: *const WriteDescriptorSet
    ) { ... } fn CmdPushDescriptorSetWithTemplateKHR(
        &self,
        commandBuffer: CommandBuffer,
        descriptorUpdateTemplate: DescriptorUpdateTemplate,
        layout: PipelineLayout,
        set: u32,
        pData: *const c_void
    ) { ... } fn CmdBeginConditionalRenderingEXT(
        &self,
        commandBuffer: CommandBuffer,
        pConditionalRenderingBegin: *const ConditionalRenderingBeginInfoEXT
    ) { ... } fn CmdEndConditionalRenderingEXT(&self, commandBuffer: CommandBuffer) { ... } fn CmdProcessCommandsNVX(
        &self,
        commandBuffer: CommandBuffer,
        pProcessCommandsInfo: *const CmdProcessCommandsInfoNVX
    ) { ... } fn CmdReserveSpaceForCommandsNVX(
        &self,
        commandBuffer: CommandBuffer,
        pReserveSpaceInfo: *const CmdReserveSpaceForCommandsInfoNVX
    ) { ... } fn CreateIndirectCommandsLayoutNVX(
        &self,
        pCreateInfo: *const IndirectCommandsLayoutCreateInfoNVX,
        pAllocator: *const AllocationCallbacks,
        pIndirectCommandsLayout: *mut IndirectCommandsLayoutNVX
    ) -> Result { ... } fn DestroyIndirectCommandsLayoutNVX(
        &self,
        indirectCommandsLayout: IndirectCommandsLayoutNVX,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn CreateObjectTableNVX(
        &self,
        pCreateInfo: *const ObjectTableCreateInfoNVX,
        pAllocator: *const AllocationCallbacks,
        pObjectTable: *mut ObjectTableNVX
    ) -> Result { ... } fn DestroyObjectTableNVX(
        &self,
        objectTable: ObjectTableNVX,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn RegisterObjectsNVX(
        &self,
        objectTable: ObjectTableNVX,
        objectCount: u32,
        ppObjectTableEntries: *const *const ObjectTableEntryNVX,
        pObjectIndices: *const u32
    ) -> Result { ... } fn UnregisterObjectsNVX(
        &self,
        objectTable: ObjectTableNVX,
        objectCount: u32,
        pObjectEntryTypes: *const ObjectEntryTypeNVX,
        pObjectIndices: *const u32
    ) -> Result { ... } fn GetPhysicalDeviceGeneratedCommandsPropertiesNVX(
        &self,
        physicalDevice: PhysicalDevice,
        pFeatures: *mut DeviceGeneratedCommandsFeaturesNVX,
        pLimits: *mut DeviceGeneratedCommandsLimitsNVX
    ) { ... } fn CmdSetViewportWScalingNV(
        &self,
        commandBuffer: CommandBuffer,
        firstViewport: u32,
        viewportCount: u32,
        pViewportWScalings: *const ViewportWScalingNV
    ) { ... } fn DisplayPowerControlEXT(
        &self,
        display: DisplayKHR,
        pDisplayPowerInfo: *const DisplayPowerInfoEXT
    ) -> Result { ... } fn RegisterDeviceEventEXT(
        &self,
        pDeviceEventInfo: *const DeviceEventInfoEXT,
        pAllocator: *const AllocationCallbacks,
        pFence: *mut Fence
    ) -> Result { ... } fn RegisterDisplayEventEXT(
        &self,
        display: DisplayKHR,
        pDisplayEventInfo: *const DisplayEventInfoEXT,
        pAllocator: *const AllocationCallbacks,
        pFence: *mut Fence
    ) -> Result { ... } fn GetSwapchainCounterEXT(
        &self,
        swapchain: SwapchainKHR,
        counter: SurfaceCounterFlagBitsEXT,
        pCounterValue: *mut u64
    ) -> Result { ... } fn GetRefreshCycleDurationGOOGLE(
        &self,
        swapchain: SwapchainKHR,
        pDisplayTimingProperties: *mut RefreshCycleDurationGOOGLE
    ) -> Result { ... } fn GetPastPresentationTimingGOOGLE(
        &self,
        swapchain: SwapchainKHR,
        pPresentationTimingCount: *mut u32,
        pPresentationTimings: *mut PastPresentationTimingGOOGLE
    ) -> Result { ... } fn CmdSetDiscardRectangleEXT(
        &self,
        commandBuffer: CommandBuffer,
        firstDiscardRectangle: u32,
        discardRectangleCount: u32,
        pDiscardRectangles: *const Rect2D
    ) { ... } fn SetHdrMetadataEXT(
        &self,
        swapchainCount: u32,
        pSwapchains: *const SwapchainKHR,
        pMetadata: *const HdrMetadataEXT
    ) { ... } fn CreateRenderPass2KHR(
        &self,
        pCreateInfo: *const RenderPassCreateInfo2KHR,
        pAllocator: *const AllocationCallbacks,
        pRenderPass: *mut RenderPass
    ) -> Result { ... } fn CmdBeginRenderPass2KHR(
        &self,
        commandBuffer: CommandBuffer,
        pRenderPassBegin: *const RenderPassBeginInfo,
        pSubpassBeginInfo: *const SubpassBeginInfoKHR
    ) { ... } fn CmdNextSubpass2KHR(
        &self,
        commandBuffer: CommandBuffer,
        pSubpassBeginInfo: *const SubpassBeginInfoKHR,
        pSubpassEndInfo: *const SubpassEndInfoKHR
    ) { ... } fn CmdEndRenderPass2KHR(
        &self,
        commandBuffer: CommandBuffer,
        pSubpassEndInfo: *const SubpassEndInfoKHR
    ) { ... } fn GetSwapchainStatusKHR(&self, swapchain: SwapchainKHR) -> Result { ... } fn ImportFenceWin32HandleKHR(
        &self,
        pImportFenceWin32HandleInfo: *const ImportFenceWin32HandleInfoKHR
    ) -> Result { ... } fn GetFenceWin32HandleKHR(
        &self,
        pGetWin32HandleInfo: *const FenceGetWin32HandleInfoKHR,
        pHandle: *mut HANDLE
    ) -> Result { ... } fn ImportFenceFdKHR(
        &self,
        pImportFenceFdInfo: *const ImportFenceFdInfoKHR
    ) -> Result { ... } fn GetFenceFdKHR(
        &self,
        pGetFdInfo: *const FenceGetFdInfoKHR,
        pFd: *mut i32
    ) -> Result { ... } fn GetAndroidHardwareBufferPropertiesANDROID(
        &self,
        buffer: *const AHardwareBuffer,
        pProperties: *mut AndroidHardwareBufferPropertiesANDROID
    ) -> Result { ... } fn GetMemoryAndroidHardwareBufferANDROID(
        &self,
        pInfo: *const MemoryGetAndroidHardwareBufferInfoANDROID,
        pBuffer: *mut *mut AHardwareBuffer
    ) -> Result { ... } fn CmdSetSampleLocationsEXT(
        &self,
        commandBuffer: CommandBuffer,
        pSampleLocationsInfo: *const SampleLocationsInfoEXT
    ) { ... } fn GetPhysicalDeviceMultisamplePropertiesEXT(
        &self,
        physicalDevice: PhysicalDevice,
        samples: SampleCountFlagBits,
        pMultisampleProperties: *mut MultisamplePropertiesEXT
    ) { ... } fn GetImageDrmFormatModifierPropertiesEXT(
        &self,
        image: Image,
        pProperties: *mut ImageDrmFormatModifierPropertiesEXT
    ) -> Result { ... } fn CreateValidationCacheEXT(
        &self,
        pCreateInfo: *const ValidationCacheCreateInfoEXT,
        pAllocator: *const AllocationCallbacks,
        pValidationCache: *mut ValidationCacheEXT
    ) -> Result { ... } fn DestroyValidationCacheEXT(
        &self,
        validationCache: ValidationCacheEXT,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn MergeValidationCachesEXT(
        &self,
        dstCache: ValidationCacheEXT,
        srcCacheCount: u32,
        pSrcCaches: *const ValidationCacheEXT
    ) -> Result { ... } fn GetValidationCacheDataEXT(
        &self,
        validationCache: ValidationCacheEXT,
        pDataSize: *mut usize,
        pData: *mut c_void
    ) -> Result { ... } fn CmdBindShadingRateImageNV(
        &self,
        commandBuffer: CommandBuffer,
        imageView: ImageView,
        imageLayout: ImageLayout
    ) { ... } fn CmdSetViewportShadingRatePaletteNV(
        &self,
        commandBuffer: CommandBuffer,
        firstViewport: u32,
        viewportCount: u32,
        pShadingRatePalettes: *const ShadingRatePaletteNV
    ) { ... } fn CmdSetCoarseSampleOrderNV(
        &self,
        commandBuffer: CommandBuffer,
        sampleOrderType: CoarseSampleOrderTypeNV,
        customSampleOrderCount: u32,
        pCustomSampleOrders: *const CoarseSampleOrderCustomNV
    ) { ... } fn CreateAccelerationStructureNV(
        &self,
        pCreateInfo: *const AccelerationStructureCreateInfoNV,
        pAllocator: *const AllocationCallbacks,
        pAccelerationStructure: *mut AccelerationStructureNV
    ) -> Result { ... } fn DestroyAccelerationStructureNV(
        &self,
        accelerationStructure: AccelerationStructureNV,
        pAllocator: *const AllocationCallbacks
    ) { ... } fn GetAccelerationStructureMemoryRequirementsNV(
        &self,
        pInfo: *const AccelerationStructureMemoryRequirementsInfoNV,
        pMemoryRequirements: *mut MemoryRequirements2
    ) { ... } fn BindAccelerationStructureMemoryNV(
        &self,
        bindInfoCount: u32,
        pBindInfos: *const BindAccelerationStructureMemoryInfoNV
    ) -> Result { ... } fn CmdBuildAccelerationStructureNV(
        &self,
        commandBuffer: CommandBuffer,
        pInfo: *const AccelerationStructureInfoNV,
        instanceData: Buffer,
        instanceOffset: DeviceSize,
        update: Bool32,
        dst: AccelerationStructureNV,
        src: AccelerationStructureNV,
        scratch: Buffer,
        scratchOffset: DeviceSize
    ) { ... } fn CmdCopyAccelerationStructureNV(
        &self,
        commandBuffer: CommandBuffer,
        dst: AccelerationStructureNV,
        src: AccelerationStructureNV,
        mode: CopyAccelerationStructureModeNV
    ) { ... } fn CmdTraceRaysNV(
        &self,
        commandBuffer: CommandBuffer,
        raygenShaderBindingTableBuffer: Buffer,
        raygenShaderBindingOffset: DeviceSize,
        missShaderBindingTableBuffer: Buffer,
        missShaderBindingOffset: DeviceSize,
        missShaderBindingStride: DeviceSize,
        hitShaderBindingTableBuffer: Buffer,
        hitShaderBindingOffset: DeviceSize,
        hitShaderBindingStride: DeviceSize,
        callableShaderBindingTableBuffer: Buffer,
        callableShaderBindingOffset: DeviceSize,
        callableShaderBindingStride: DeviceSize,
        width: u32,
        height: u32,
        depth: u32
    ) { ... } fn CreateRayTracingPipelinesNV(
        &self,
        pipelineCache: PipelineCache,
        createInfoCount: u32,
        pCreateInfos: *const RayTracingPipelineCreateInfoNV,
        pAllocator: *const AllocationCallbacks,
        pPipelines: *mut Pipeline
    ) -> Result { ... } fn GetRayTracingShaderGroupHandlesNV(
        &self,
        pipeline: Pipeline,
        firstGroup: u32,
        groupCount: u32,
        dataSize: usize,
        pData: *mut c_void
    ) -> Result { ... } fn GetAccelerationStructureHandleNV(
        &self,
        accelerationStructure: AccelerationStructureNV,
        dataSize: usize,
        pData: *mut c_void
    ) -> Result { ... } fn CmdWriteAccelerationStructuresPropertiesNV(
        &self,
        commandBuffer: CommandBuffer,
        accelerationStructureCount: u32,
        pAccelerationStructures: *const AccelerationStructureNV,
        queryType: QueryType,
        queryPool: QueryPool,
        firstQuery: u32
    ) { ... } fn CompileDeferredNV(&self, pipeline: Pipeline, shader: u32) -> Result { ... } fn CmdDrawIndirectCountKHR(
        &self,
        commandBuffer: CommandBuffer,
        buffer: Buffer,
        offset: DeviceSize,
        countBuffer: Buffer,
        countBufferOffset: DeviceSize,
        maxDrawCount: u32,
        stride: u32
    ) { ... } fn CmdDrawIndexedIndirectCountKHR(
        &self,
        commandBuffer: CommandBuffer,
        buffer: Buffer,
        offset: DeviceSize,
        countBuffer: Buffer,
        countBufferOffset: DeviceSize,
        maxDrawCount: u32,
        stride: u32
    ) { ... } fn GetMemoryHostPointerPropertiesEXT(
        &self,
        handleType: ExternalMemoryHandleTypeFlagBits,
        pHostPointer: *const c_void,
        pMemoryHostPointerProperties: *mut MemoryHostPointerPropertiesEXT
    ) -> Result { ... } fn CmdWriteBufferMarkerAMD(
        &self,
        commandBuffer: CommandBuffer,
        pipelineStage: PipelineStageFlagBits,
        dstBuffer: Buffer,
        dstOffset: DeviceSize,
        marker: u32
    ) { ... } fn GetPhysicalDeviceCalibrateableTimeDomainsEXT(
        &self,
        physicalDevice: PhysicalDevice,
        pTimeDomainCount: *mut u32,
        pTimeDomains: *mut TimeDomainEXT
    ) -> Result { ... } fn GetCalibratedTimestampsEXT(
        &self,
        timestampCount: u32,
        pTimestampInfos: *const CalibratedTimestampInfoEXT,
        pTimestamps: *mut u64,
        pMaxDeviation: *mut u64
    ) -> Result { ... } fn CmdDrawMeshTasksNV(
        &self,
        commandBuffer: CommandBuffer,
        taskCount: u32,
        firstTask: u32
    ) { ... } fn CmdDrawMeshTasksIndirectNV(
        &self,
        commandBuffer: CommandBuffer,
        buffer: Buffer,
        offset: DeviceSize,
        drawCount: u32,
        stride: u32
    ) { ... } fn CmdDrawMeshTasksIndirectCountNV(
        &self,
        commandBuffer: CommandBuffer,
        buffer: Buffer,
        offset: DeviceSize,
        countBuffer: Buffer,
        countBufferOffset: DeviceSize,
        maxDrawCount: u32,
        stride: u32
    ) { ... } fn CmdSetExclusiveScissorNV(
        &self,
        commandBuffer: CommandBuffer,
        firstExclusiveScissor: u32,
        exclusiveScissorCount: u32,
        pExclusiveScissors: *const Rect2D
    ) { ... } fn CmdSetCheckpointNV(
        &self,
        commandBuffer: CommandBuffer,
        pCheckpointMarker: *const c_void
    ) { ... } fn GetQueueCheckpointDataNV(
        &self,
        queue: Queue,
        pCheckpointDataCount: *mut u32,
        pCheckpointData: *mut CheckpointDataNV
    ) { ... }
}
Expand description

Trait with default pass-through implementations for vulkan commands associated with a device

Details

This trait only requires the implementation of get_extensions. Device level vulkan commands are then passed through to their respective core or device extension function pointer. If the vulkan command required a Device parameter, the wrapper will drop this parameter, since the device handle can be provided by the DeviceExtensions.

Example The DeviceWrapper uses the same pattern as the InstanceWrapper, look here for an example.

Required Methods§

Provided Methods§

Implementors§