Test for return values of vkGet*ProcAddr
authorMarcin Rogucki <marcin.rogucki@mobica.com>
Mon, 29 Jan 2018 14:23:42 +0000 (15:23 +0100)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Tue, 3 Apr 2018 07:43:04 +0000 (03:43 -0400)
This change tests vkGet*ProcAddr. It also removes special
case for vkGetDeviceProcAddr which now is considered by a
framework as a device-level function.

Components: Framework, Vulkan

VK-GL-CTS issue: 948

Affects:
dEQP-VK.api.version_check.entry_points
dEQP-VK.*

Change-Id: I629bceaae25534e5eff9550034e7af0ab2668aa9

46 files changed:
external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl
external/vulkancts/framework/vulkan/vkConcreteInstanceInterface.inl
external/vulkancts/framework/vulkan/vkCoreFunctionalities.inl
external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl
external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkInitInstanceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkInstanceDriverImpl.inl
external/vulkancts/framework/vulkan/vkInstanceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkNullDriverImpl.inl
external/vulkancts/framework/vulkan/vkPlatform.cpp
external/vulkancts/framework/vulkan/vkPlatform.hpp
external/vulkancts/framework/vulkan/vkRef.hpp
external/vulkancts/framework/vulkan/vkRefUtil.inl
external/vulkancts/framework/vulkan/vkRefUtilImpl.inl
external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl
external/vulkancts/framework/vulkan/vkVirtualInstanceInterface.inl
external/vulkancts/modules/vulkan/api/vktApiBufferTests.cpp
external/vulkancts/modules/vulkan/api/vktApiDeviceInitializationTests.cpp
external/vulkancts/modules/vulkan/api/vktApiExternalMemoryTests.cpp
external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
external/vulkancts/modules/vulkan/api/vktApiObjectManagementTests.cpp
external/vulkancts/modules/vulkan/api/vktApiVersionCheck.cpp
external/vulkancts/modules/vulkan/compute/vktComputeBasicComputeShaderTests.cpp
external/vulkancts/modules/vulkan/device_group/vktDeviceGroupRendering.cpp
external/vulkancts/modules/vulkan/memory/vktMemoryAllocationTests.cpp
external/vulkancts/modules/vulkan/multiview/vktMultiViewRenderTests.cpp
external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemContext.cpp
external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemUtils.cpp
external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemUtils.hpp
external/vulkancts/modules/vulkan/robustness/vktRobustnessUtil.cpp
external/vulkancts/modules/vulkan/sparse_resources/vktSparseResourcesBase.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationBasicSemaphoreTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationCrossInstanceSharingTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationInternallySynchronizedObjectsTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationOperationMultiQueueTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationSmokeTests.cpp
external/vulkancts/modules/vulkan/synchronization/vktSynchronizationWin32KeyedMutexTests.cpp
external/vulkancts/modules/vulkan/vktTestCase.cpp
external/vulkancts/modules/vulkan/wsi/vktWsiColorSpaceTests.cpp
external/vulkancts/modules/vulkan/wsi/vktWsiDisplayTimingTests.cpp
external/vulkancts/modules/vulkan/wsi/vktWsiIncrementalPresentTests.cpp
external/vulkancts/modules/vulkan/wsi/vktWsiSharedPresentableImageTests.cpp
external/vulkancts/modules/vulkan/wsi/vktWsiSurfaceTests.cpp
external/vulkancts/modules/vulkan/wsi/vktWsiSwapchainTests.cpp
external/vulkancts/scripts/gen_framework.py

index 325746f6ffd8f09e8164f57ccc8f77e71932badb..57a8c48312d4882863fabff61ec069fab1b5d4d4 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-virtual void           destroyDevice                                                                   (VkDevice device, const VkAllocationCallbacks* pAllocator) const;
-virtual void           getDeviceQueue                                                                  (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue) const;
-virtual VkResult       queueSubmit                                                                             (VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence) const;
-virtual VkResult       queueWaitIdle                                                                   (VkQueue queue) const;
-virtual VkResult       deviceWaitIdle                                                                  (VkDevice device) const;
-virtual VkResult       allocateMemory                                                                  (VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) const;
-virtual void           freeMemory                                                                              (VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       mapMemory                                                                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const;
-virtual void           unmapMemory                                                                             (VkDevice device, VkDeviceMemory memory) const;
-virtual VkResult       flushMappedMemoryRanges                                                 (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const;
-virtual VkResult       invalidateMappedMemoryRanges                                    (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const;
-virtual void           getDeviceMemoryCommitment                                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) const;
-virtual VkResult       bindBufferMemory                                                                (VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) const;
-virtual VkResult       bindImageMemory                                                                 (VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) const;
-virtual void           getBufferMemoryRequirements                                             (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) const;
-virtual void           getImageMemoryRequirements                                              (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) const;
-virtual void           getImageSparseMemoryRequirements                                (VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) const;
-virtual VkResult       queueBindSparse                                                                 (VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) const;
-virtual VkResult       createFence                                                                             (VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const;
-virtual void           destroyFence                                                                    (VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       resetFences                                                                             (VkDevice device, deUint32 fenceCount, const VkFence* pFences) const;
-virtual VkResult       getFenceStatus                                                                  (VkDevice device, VkFence fence) const;
-virtual VkResult       waitForFences                                                                   (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout) const;
-virtual VkResult       createSemaphore                                                                 (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) const;
-virtual void           destroySemaphore                                                                (VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       createEvent                                                                             (VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) const;
-virtual void           destroyEvent                                                                    (VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       getEventStatus                                                                  (VkDevice device, VkEvent event) const;
-virtual VkResult       setEvent                                                                                (VkDevice device, VkEvent event) const;
-virtual VkResult       resetEvent                                                                              (VkDevice device, VkEvent event) const;
-virtual VkResult       createQueryPool                                                                 (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) const;
-virtual void           destroyQueryPool                                                                (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       getQueryPoolResults                                                             (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const;
-virtual VkResult       createBuffer                                                                    (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) const;
-virtual void           destroyBuffer                                                                   (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       createBufferView                                                                (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) const;
-virtual void           destroyBufferView                                                               (VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       createImage                                                                             (VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) const;
-virtual void           destroyImage                                                                    (VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) const;
-virtual void           getImageSubresourceLayout                                               (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) const;
-virtual VkResult       createImageView                                                                 (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView) const;
-virtual void           destroyImageView                                                                (VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       createShaderModule                                                              (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) const;
-virtual void           destroyShaderModule                                                             (VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       createPipelineCache                                                             (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) const;
-virtual void           destroyPipelineCache                                                    (VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       getPipelineCacheData                                                    (VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData) const;
-virtual VkResult       mergePipelineCaches                                                             (VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches) const;
-virtual VkResult       createGraphicsPipelines                                                 (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const;
-virtual VkResult       createComputePipelines                                                  (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const;
-virtual void           destroyPipeline                                                                 (VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       createPipelineLayout                                                    (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) const;
-virtual void           destroyPipelineLayout                                                   (VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       createSampler                                                                   (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) const;
-virtual void           destroySampler                                                                  (VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       createDescriptorSetLayout                                               (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) const;
-virtual void           destroyDescriptorSetLayout                                              (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       createDescriptorPool                                                    (VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) const;
-virtual void           destroyDescriptorPool                                                   (VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       resetDescriptorPool                                                             (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) const;
-virtual VkResult       allocateDescriptorSets                                                  (VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) const;
-virtual VkResult       freeDescriptorSets                                                              (VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets) const;
-virtual void           updateDescriptorSets                                                    (VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) const;
-virtual VkResult       createFramebuffer                                                               (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) const;
-virtual void           destroyFramebuffer                                                              (VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       createRenderPass                                                                (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const;
-virtual void           destroyRenderPass                                                               (VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) const;
-virtual void           getRenderAreaGranularity                                                (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) const;
-virtual VkResult       createCommandPool                                                               (VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) const;
-virtual void           destroyCommandPool                                                              (VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       resetCommandPool                                                                (VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) const;
-virtual VkResult       allocateCommandBuffers                                                  (VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) const;
-virtual void           freeCommandBuffers                                                              (VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const;
-virtual VkResult       beginCommandBuffer                                                              (VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) const;
-virtual VkResult       endCommandBuffer                                                                (VkCommandBuffer commandBuffer) const;
-virtual VkResult       resetCommandBuffer                                                              (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) const;
-virtual void           cmdBindPipeline                                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const;
-virtual void           cmdSetViewport                                                                  (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports) const;
-virtual void           cmdSetScissor                                                                   (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors) const;
-virtual void           cmdSetLineWidth                                                                 (VkCommandBuffer commandBuffer, float lineWidth) const;
-virtual void           cmdSetDepthBias                                                                 (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) const;
-virtual void           cmdSetBlendConstants                                                    (VkCommandBuffer commandBuffer, const float blendConstants[4]) const;
-virtual void           cmdSetDepthBounds                                                               (VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) const;
-virtual void           cmdSetStencilCompareMask                                                (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask) const;
-virtual void           cmdSetStencilWriteMask                                                  (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask) const;
-virtual void           cmdSetStencilReference                                                  (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference) const;
-virtual void           cmdBindDescriptorSets                                                   (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const;
-virtual void           cmdBindIndexBuffer                                                              (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const;
-virtual void           cmdBindVertexBuffers                                                    (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const;
-virtual void           cmdDraw                                                                                 (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance) const;
-virtual void           cmdDrawIndexed                                                                  (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance) const;
-virtual void           cmdDrawIndirect                                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const;
-virtual void           cmdDrawIndexedIndirect                                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const;
-virtual void           cmdDispatch                                                                             (VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const;
-virtual void           cmdDispatchIndirect                                                             (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) const;
-virtual void           cmdCopyBuffer                                                                   (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions) const;
-virtual void           cmdCopyImage                                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions) const;
-virtual void           cmdBlitImage                                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter) const;
-virtual void           cmdCopyBufferToImage                                                    (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions) const;
-virtual void           cmdCopyImageToBuffer                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions) const;
-virtual void           cmdUpdateBuffer                                                                 (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData) const;
-virtual void           cmdFillBuffer                                                                   (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data) const;
-virtual void           cmdClearColorImage                                                              (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const;
-virtual void           cmdClearDepthStencilImage                                               (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const;
-virtual void           cmdClearAttachments                                                             (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects) const;
-virtual void           cmdResolveImage                                                                 (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const;
-virtual void           cmdSetEvent                                                                             (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const;
-virtual void           cmdResetEvent                                                                   (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const;
-virtual void           cmdWaitEvents                                                                   (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const;
-virtual void           cmdPipelineBarrier                                                              (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const;
-virtual void           cmdBeginQuery                                                                   (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags) const;
-virtual void           cmdEndQuery                                                                             (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query) const;
-virtual void           cmdResetQueryPool                                                               (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const;
-virtual void           cmdWriteTimestamp                                                               (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query) const;
-virtual void           cmdCopyQueryPoolResults                                                 (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const;
-virtual void           cmdPushConstants                                                                (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues) const;
-virtual void           cmdBeginRenderPass                                                              (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) const;
-virtual void           cmdNextSubpass                                                                  (VkCommandBuffer commandBuffer, VkSubpassContents contents) const;
-virtual void           cmdEndRenderPass                                                                (VkCommandBuffer commandBuffer) const;
-virtual void           cmdExecuteCommands                                                              (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const;
-virtual VkResult       bindBufferMemory2                                                               (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) const;
-virtual VkResult       bindImageMemory2                                                                (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) const;
-virtual void           getDeviceGroupPeerMemoryFeatures                                (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) const;
-virtual void           cmdSetDeviceMask                                                                (VkCommandBuffer commandBuffer, deUint32 deviceMask) const;
-virtual void           cmdDispatchBase                                                                 (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const;
-virtual void           getImageMemoryRequirements2                                             (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const;
-virtual void           getBufferMemoryRequirements2                                    (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const;
-virtual void           getImageSparseMemoryRequirements2                               (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) const;
-virtual void           trimCommandPool                                                                 (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) const;
-virtual void           getDeviceQueue2                                                                 (VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue) const;
-virtual VkResult       createSamplerYcbcrConversion                                    (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) const;
-virtual void           destroySamplerYcbcrConversion                                   (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       createDescriptorUpdateTemplate                                  (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) const;
-virtual void           destroyDescriptorUpdateTemplate                                 (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const;
-virtual void           updateDescriptorSetWithTemplate                                 (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) const;
-virtual void           getDescriptorSetLayoutSupport                                   (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) const;
-virtual VkResult       createSwapchainKHR                                                              (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const;
-virtual void           destroySwapchainKHR                                                             (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       getSwapchainImagesKHR                                                   (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const;
-virtual VkResult       acquireNextImageKHR                                                             (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex) const;
-virtual VkResult       queuePresentKHR                                                                 (VkQueue queue, const VkPresentInfoKHR* pPresentInfo) const;
-virtual VkResult       getDeviceGroupPresentCapabilitiesKHR                    (VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) const;
-virtual VkResult       getDeviceGroupSurfacePresentModesKHR                    (VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) const;
-virtual VkResult       acquireNextImage2KHR                                                    (VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex) const;
-virtual VkResult       createSharedSwapchainsKHR                                               (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const;
-virtual VkResult       getMemoryWin32HandleKHR                                                 (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
-virtual VkResult       getMemoryWin32HandlePropertiesKHR                               (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::Win32Handle handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) const;
-virtual VkResult       getMemoryFdKHR                                                                  (VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) const;
-virtual VkResult       getMemoryFdPropertiesKHR                                                (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties) const;
-virtual VkResult       importSemaphoreWin32HandleKHR                                   (VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) const;
-virtual VkResult       getSemaphoreWin32HandleKHR                                              (VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
-virtual VkResult       importSemaphoreFdKHR                                                    (VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) const;
-virtual VkResult       getSemaphoreFdKHR                                                               (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) const;
-virtual void           cmdPushDescriptorSetKHR                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const;
-virtual void           cmdPushDescriptorSetWithTemplateKHR                             (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const;
-virtual VkResult       getSwapchainStatusKHR                                                   (VkDevice device, VkSwapchainKHR swapchain) const;
-virtual VkResult       importFenceWin32HandleKHR                                               (VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) const;
-virtual VkResult       getFenceWin32HandleKHR                                                  (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
-virtual VkResult       importFenceFdKHR                                                                (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) const;
-virtual VkResult       getFenceFdKHR                                                                   (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) const;
-virtual VkResult       debugMarkerSetObjectTagEXT                                              (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const;
-virtual VkResult       debugMarkerSetObjectNameEXT                                             (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) const;
-virtual void           cmdDebugMarkerBeginEXT                                                  (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const;
-virtual void           cmdDebugMarkerEndEXT                                                    (VkCommandBuffer commandBuffer) const;
-virtual void           cmdDebugMarkerInsertEXT                                                 (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const;
-virtual void           cmdDrawIndirectCountAMD                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
-virtual void           cmdDrawIndexedIndirectCountAMD                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
-virtual VkResult       getMemoryWin32HandleNV                                                  (VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, pt::Win32Handle* pHandle) const;
-virtual void           cmdProcessCommandsNVX                                                   (VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) const;
-virtual void           cmdReserveSpaceForCommandsNVX                                   (VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) const;
-virtual VkResult       createIndirectCommandsLayoutNVX                                 (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) const;
-virtual void           destroyIndirectCommandsLayoutNVX                                (VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       createObjectTableNVX                                                    (VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable) const;
-virtual void           destroyObjectTableNVX                                                   (VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       registerObjectsNVX                                                              (VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const deUint32* pObjectIndices) const;
-virtual VkResult       unregisterObjectsNVX                                                    (VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const deUint32* pObjectIndices) const;
-virtual void           cmdSetViewportWScalingNV                                                (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings) const;
-virtual VkResult       displayPowerControlEXT                                                  (VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) const;
-virtual VkResult       registerDeviceEventEXT                                                  (VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const;
-virtual VkResult       registerDisplayEventEXT                                                 (VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const;
-virtual VkResult       getSwapchainCounterEXT                                                  (VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue) const;
-virtual VkResult       getRefreshCycleDurationGOOGLE                                   (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) const;
-virtual VkResult       getPastPresentationTimingGOOGLE                                 (VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) const;
-virtual void           cmdSetDiscardRectangleEXT                                               (VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles) const;
-virtual void           setHdrMetadataEXT                                                               (VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) const;
-virtual void           cmdSetSampleLocationsEXT                                                (VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) const;
-virtual VkResult       createValidationCacheEXT                                                (VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) const;
-virtual void           destroyValidationCacheEXT                                               (VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       mergeValidationCachesEXT                                                (VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches) const;
-virtual VkResult       getValidationCacheDataEXT                                               (VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData) const;
-virtual VkResult       getMemoryAndroidHardwareBufferPropertiesANDROID (VkDevice device, const pt::AndroidHardwareBufferPtr buffer, VkMemoryAndroidHardwareBufferPropertiesANDROID* pProperties) const;
-virtual VkResult       getMemoryAndroidHardwareBufferANDROID                   (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, pt::AndroidHardwareBufferPtr* pBuffer) const;
+virtual PFN_vkVoidFunction     getDeviceProcAddr                                                               (VkDevice device, const char* pName) const;
+virtual void                           destroyDevice                                                                   (VkDevice device, const VkAllocationCallbacks* pAllocator) const;
+virtual void                           getDeviceQueue                                                                  (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue) const;
+virtual VkResult                       queueSubmit                                                                             (VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence) const;
+virtual VkResult                       queueWaitIdle                                                                   (VkQueue queue) const;
+virtual VkResult                       deviceWaitIdle                                                                  (VkDevice device) const;
+virtual VkResult                       allocateMemory                                                                  (VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) const;
+virtual void                           freeMemory                                                                              (VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       mapMemory                                                                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const;
+virtual void                           unmapMemory                                                                             (VkDevice device, VkDeviceMemory memory) const;
+virtual VkResult                       flushMappedMemoryRanges                                                 (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const;
+virtual VkResult                       invalidateMappedMemoryRanges                                    (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const;
+virtual void                           getDeviceMemoryCommitment                                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) const;
+virtual VkResult                       bindBufferMemory                                                                (VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) const;
+virtual VkResult                       bindImageMemory                                                                 (VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) const;
+virtual void                           getBufferMemoryRequirements                                             (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) const;
+virtual void                           getImageMemoryRequirements                                              (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) const;
+virtual void                           getImageSparseMemoryRequirements                                (VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) const;
+virtual VkResult                       queueBindSparse                                                                 (VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) const;
+virtual VkResult                       createFence                                                                             (VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const;
+virtual void                           destroyFence                                                                    (VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       resetFences                                                                             (VkDevice device, deUint32 fenceCount, const VkFence* pFences) const;
+virtual VkResult                       getFenceStatus                                                                  (VkDevice device, VkFence fence) const;
+virtual VkResult                       waitForFences                                                                   (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout) const;
+virtual VkResult                       createSemaphore                                                                 (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) const;
+virtual void                           destroySemaphore                                                                (VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createEvent                                                                             (VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) const;
+virtual void                           destroyEvent                                                                    (VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       getEventStatus                                                                  (VkDevice device, VkEvent event) const;
+virtual VkResult                       setEvent                                                                                (VkDevice device, VkEvent event) const;
+virtual VkResult                       resetEvent                                                                              (VkDevice device, VkEvent event) const;
+virtual VkResult                       createQueryPool                                                                 (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) const;
+virtual void                           destroyQueryPool                                                                (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       getQueryPoolResults                                                             (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const;
+virtual VkResult                       createBuffer                                                                    (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) const;
+virtual void                           destroyBuffer                                                                   (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createBufferView                                                                (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) const;
+virtual void                           destroyBufferView                                                               (VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createImage                                                                             (VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) const;
+virtual void                           destroyImage                                                                    (VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) const;
+virtual void                           getImageSubresourceLayout                                               (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) const;
+virtual VkResult                       createImageView                                                                 (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView) const;
+virtual void                           destroyImageView                                                                (VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createShaderModule                                                              (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) const;
+virtual void                           destroyShaderModule                                                             (VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createPipelineCache                                                             (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) const;
+virtual void                           destroyPipelineCache                                                    (VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       getPipelineCacheData                                                    (VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData) const;
+virtual VkResult                       mergePipelineCaches                                                             (VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches) const;
+virtual VkResult                       createGraphicsPipelines                                                 (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const;
+virtual VkResult                       createComputePipelines                                                  (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const;
+virtual void                           destroyPipeline                                                                 (VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createPipelineLayout                                                    (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) const;
+virtual void                           destroyPipelineLayout                                                   (VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createSampler                                                                   (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) const;
+virtual void                           destroySampler                                                                  (VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createDescriptorSetLayout                                               (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) const;
+virtual void                           destroyDescriptorSetLayout                                              (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createDescriptorPool                                                    (VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) const;
+virtual void                           destroyDescriptorPool                                                   (VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       resetDescriptorPool                                                             (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) const;
+virtual VkResult                       allocateDescriptorSets                                                  (VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) const;
+virtual VkResult                       freeDescriptorSets                                                              (VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets) const;
+virtual void                           updateDescriptorSets                                                    (VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) const;
+virtual VkResult                       createFramebuffer                                                               (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) const;
+virtual void                           destroyFramebuffer                                                              (VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createRenderPass                                                                (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const;
+virtual void                           destroyRenderPass                                                               (VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) const;
+virtual void                           getRenderAreaGranularity                                                (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) const;
+virtual VkResult                       createCommandPool                                                               (VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) const;
+virtual void                           destroyCommandPool                                                              (VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       resetCommandPool                                                                (VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) const;
+virtual VkResult                       allocateCommandBuffers                                                  (VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) const;
+virtual void                           freeCommandBuffers                                                              (VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const;
+virtual VkResult                       beginCommandBuffer                                                              (VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) const;
+virtual VkResult                       endCommandBuffer                                                                (VkCommandBuffer commandBuffer) const;
+virtual VkResult                       resetCommandBuffer                                                              (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) const;
+virtual void                           cmdBindPipeline                                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const;
+virtual void                           cmdSetViewport                                                                  (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports) const;
+virtual void                           cmdSetScissor                                                                   (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors) const;
+virtual void                           cmdSetLineWidth                                                                 (VkCommandBuffer commandBuffer, float lineWidth) const;
+virtual void                           cmdSetDepthBias                                                                 (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) const;
+virtual void                           cmdSetBlendConstants                                                    (VkCommandBuffer commandBuffer, const float blendConstants[4]) const;
+virtual void                           cmdSetDepthBounds                                                               (VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) const;
+virtual void                           cmdSetStencilCompareMask                                                (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask) const;
+virtual void                           cmdSetStencilWriteMask                                                  (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask) const;
+virtual void                           cmdSetStencilReference                                                  (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference) const;
+virtual void                           cmdBindDescriptorSets                                                   (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const;
+virtual void                           cmdBindIndexBuffer                                                              (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const;
+virtual void                           cmdBindVertexBuffers                                                    (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const;
+virtual void                           cmdDraw                                                                                 (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance) const;
+virtual void                           cmdDrawIndexed                                                                  (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance) const;
+virtual void                           cmdDrawIndirect                                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const;
+virtual void                           cmdDrawIndexedIndirect                                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const;
+virtual void                           cmdDispatch                                                                             (VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const;
+virtual void                           cmdDispatchIndirect                                                             (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) const;
+virtual void                           cmdCopyBuffer                                                                   (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions) const;
+virtual void                           cmdCopyImage                                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions) const;
+virtual void                           cmdBlitImage                                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter) const;
+virtual void                           cmdCopyBufferToImage                                                    (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions) const;
+virtual void                           cmdCopyImageToBuffer                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions) const;
+virtual void                           cmdUpdateBuffer                                                                 (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData) const;
+virtual void                           cmdFillBuffer                                                                   (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data) const;
+virtual void                           cmdClearColorImage                                                              (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const;
+virtual void                           cmdClearDepthStencilImage                                               (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const;
+virtual void                           cmdClearAttachments                                                             (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects) const;
+virtual void                           cmdResolveImage                                                                 (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const;
+virtual void                           cmdSetEvent                                                                             (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const;
+virtual void                           cmdResetEvent                                                                   (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const;
+virtual void                           cmdWaitEvents                                                                   (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const;
+virtual void                           cmdPipelineBarrier                                                              (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const;
+virtual void                           cmdBeginQuery                                                                   (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags) const;
+virtual void                           cmdEndQuery                                                                             (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query) const;
+virtual void                           cmdResetQueryPool                                                               (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const;
+virtual void                           cmdWriteTimestamp                                                               (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query) const;
+virtual void                           cmdCopyQueryPoolResults                                                 (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const;
+virtual void                           cmdPushConstants                                                                (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues) const;
+virtual void                           cmdBeginRenderPass                                                              (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) const;
+virtual void                           cmdNextSubpass                                                                  (VkCommandBuffer commandBuffer, VkSubpassContents contents) const;
+virtual void                           cmdEndRenderPass                                                                (VkCommandBuffer commandBuffer) const;
+virtual void                           cmdExecuteCommands                                                              (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const;
+virtual VkResult                       bindBufferMemory2                                                               (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) const;
+virtual VkResult                       bindImageMemory2                                                                (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) const;
+virtual void                           getDeviceGroupPeerMemoryFeatures                                (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) const;
+virtual void                           cmdSetDeviceMask                                                                (VkCommandBuffer commandBuffer, deUint32 deviceMask) const;
+virtual void                           cmdDispatchBase                                                                 (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const;
+virtual void                           getImageMemoryRequirements2                                             (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const;
+virtual void                           getBufferMemoryRequirements2                                    (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const;
+virtual void                           getImageSparseMemoryRequirements2                               (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) const;
+virtual void                           trimCommandPool                                                                 (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) const;
+virtual void                           getDeviceQueue2                                                                 (VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue) const;
+virtual VkResult                       createSamplerYcbcrConversion                                    (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) const;
+virtual void                           destroySamplerYcbcrConversion                                   (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createDescriptorUpdateTemplate                                  (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) const;
+virtual void                           destroyDescriptorUpdateTemplate                                 (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const;
+virtual void                           updateDescriptorSetWithTemplate                                 (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) const;
+virtual void                           getDescriptorSetLayoutSupport                                   (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) const;
+virtual VkResult                       createSwapchainKHR                                                              (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const;
+virtual void                           destroySwapchainKHR                                                             (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       getSwapchainImagesKHR                                                   (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const;
+virtual VkResult                       acquireNextImageKHR                                                             (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex) const;
+virtual VkResult                       queuePresentKHR                                                                 (VkQueue queue, const VkPresentInfoKHR* pPresentInfo) const;
+virtual VkResult                       getDeviceGroupPresentCapabilitiesKHR                    (VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) const;
+virtual VkResult                       getDeviceGroupSurfacePresentModesKHR                    (VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) const;
+virtual VkResult                       acquireNextImage2KHR                                                    (VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex) const;
+virtual VkResult                       createSharedSwapchainsKHR                                               (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const;
+virtual VkResult                       getMemoryWin32HandleKHR                                                 (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
+virtual VkResult                       getMemoryWin32HandlePropertiesKHR                               (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::Win32Handle handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) const;
+virtual VkResult                       getMemoryFdKHR                                                                  (VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) const;
+virtual VkResult                       getMemoryFdPropertiesKHR                                                (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties) const;
+virtual VkResult                       importSemaphoreWin32HandleKHR                                   (VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) const;
+virtual VkResult                       getSemaphoreWin32HandleKHR                                              (VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
+virtual VkResult                       importSemaphoreFdKHR                                                    (VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) const;
+virtual VkResult                       getSemaphoreFdKHR                                                               (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) const;
+virtual void                           cmdPushDescriptorSetKHR                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const;
+virtual void                           cmdPushDescriptorSetWithTemplateKHR                             (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const;
+virtual VkResult                       getSwapchainStatusKHR                                                   (VkDevice device, VkSwapchainKHR swapchain) const;
+virtual VkResult                       importFenceWin32HandleKHR                                               (VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) const;
+virtual VkResult                       getFenceWin32HandleKHR                                                  (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
+virtual VkResult                       importFenceFdKHR                                                                (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) const;
+virtual VkResult                       getFenceFdKHR                                                                   (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) const;
+virtual VkResult                       debugMarkerSetObjectTagEXT                                              (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const;
+virtual VkResult                       debugMarkerSetObjectNameEXT                                             (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) const;
+virtual void                           cmdDebugMarkerBeginEXT                                                  (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const;
+virtual void                           cmdDebugMarkerEndEXT                                                    (VkCommandBuffer commandBuffer) const;
+virtual void                           cmdDebugMarkerInsertEXT                                                 (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const;
+virtual void                           cmdDrawIndirectCountAMD                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
+virtual void                           cmdDrawIndexedIndirectCountAMD                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const;
+virtual VkResult                       getMemoryWin32HandleNV                                                  (VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, pt::Win32Handle* pHandle) const;
+virtual void                           cmdProcessCommandsNVX                                                   (VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) const;
+virtual void                           cmdReserveSpaceForCommandsNVX                                   (VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) const;
+virtual VkResult                       createIndirectCommandsLayoutNVX                                 (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) const;
+virtual void                           destroyIndirectCommandsLayoutNVX                                (VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       createObjectTableNVX                                                    (VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable) const;
+virtual void                           destroyObjectTableNVX                                                   (VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       registerObjectsNVX                                                              (VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const deUint32* pObjectIndices) const;
+virtual VkResult                       unregisterObjectsNVX                                                    (VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const deUint32* pObjectIndices) const;
+virtual void                           cmdSetViewportWScalingNV                                                (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings) const;
+virtual VkResult                       displayPowerControlEXT                                                  (VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) const;
+virtual VkResult                       registerDeviceEventEXT                                                  (VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const;
+virtual VkResult                       registerDisplayEventEXT                                                 (VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const;
+virtual VkResult                       getSwapchainCounterEXT                                                  (VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue) const;
+virtual VkResult                       getRefreshCycleDurationGOOGLE                                   (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) const;
+virtual VkResult                       getPastPresentationTimingGOOGLE                                 (VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) const;
+virtual void                           cmdSetDiscardRectangleEXT                                               (VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles) const;
+virtual void                           setHdrMetadataEXT                                                               (VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) const;
+virtual void                           cmdSetSampleLocationsEXT                                                (VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) const;
+virtual VkResult                       createValidationCacheEXT                                                (VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) const;
+virtual void                           destroyValidationCacheEXT                                               (VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult                       mergeValidationCachesEXT                                                (VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches) const;
+virtual VkResult                       getValidationCacheDataEXT                                               (VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData) const;
+virtual VkResult                       getMemoryAndroidHardwareBufferPropertiesANDROID (VkDevice device, const pt::AndroidHardwareBufferPtr buffer, VkMemoryAndroidHardwareBufferPropertiesANDROID* pProperties) const;
+virtual VkResult                       getMemoryAndroidHardwareBufferANDROID                   (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, pt::AndroidHardwareBufferPtr* pBuffer) const;
index 7dcdd572d7ebeac3528cf5f6784263cded6316bd..359f64160486cef23ea0150ecd8e7f5e25992fe2 100644 (file)
@@ -1,71 +1,70 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-virtual void                           destroyInstance                                                                         (VkInstance instance, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult                       enumeratePhysicalDevices                                                        (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const;
-virtual void                           getPhysicalDeviceFeatures                                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const;
-virtual void                           getPhysicalDeviceFormatProperties                                       (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const;
-virtual VkResult                       getPhysicalDeviceImageFormatProperties                          (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const;
-virtual void                           getPhysicalDeviceProperties                                                     (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const;
-virtual void                           getPhysicalDeviceQueueFamilyProperties                          (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const;
-virtual void                           getPhysicalDeviceMemoryProperties                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const;
-virtual PFN_vkVoidFunction     getDeviceProcAddr                                                                       (VkDevice device, const char* pName) const;
-virtual VkResult                       createDevice                                                                            (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const;
-virtual VkResult                       enumerateDeviceExtensionProperties                                      (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const;
-virtual VkResult                       enumerateDeviceLayerProperties                                          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const;
-virtual void                           getPhysicalDeviceSparseImageFormatProperties            (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties) const;
-virtual VkResult                       enumeratePhysicalDeviceGroups                                           (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const;
-virtual void                           getPhysicalDeviceFeatures2                                                      (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const;
-virtual void                           getPhysicalDeviceProperties2                                            (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const;
-virtual void                           getPhysicalDeviceFormatProperties2                                      (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const;
-virtual VkResult                       getPhysicalDeviceImageFormatProperties2                         (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const;
-virtual void                           getPhysicalDeviceQueueFamilyProperties2                         (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const;
-virtual void                           getPhysicalDeviceMemoryProperties2                                      (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const;
-virtual void                           getPhysicalDeviceSparseImageFormatProperties2           (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties) const;
-virtual void                           getPhysicalDeviceExternalBufferProperties                       (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const;
-virtual void                           getPhysicalDeviceExternalFenceProperties                        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const;
-virtual void                           getPhysicalDeviceExternalSemaphoreProperties            (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const;
-virtual void                           destroySurfaceKHR                                                                       (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult                       getPhysicalDeviceSurfaceSupportKHR                                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const;
-virtual VkResult                       getPhysicalDeviceSurfaceCapabilitiesKHR                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const;
-virtual VkResult                       getPhysicalDeviceSurfaceFormatsKHR                                      (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const;
-virtual VkResult                       getPhysicalDeviceSurfacePresentModesKHR                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const;
-virtual VkResult                       getPhysicalDevicePresentRectanglesKHR                           (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const;
-virtual VkResult                       getPhysicalDeviceDisplayPropertiesKHR                           (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const;
-virtual VkResult                       getPhysicalDeviceDisplayPlanePropertiesKHR                      (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const;
-virtual VkResult                       getDisplayPlaneSupportedDisplaysKHR                                     (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const;
-virtual VkResult                       getDisplayModePropertiesKHR                                                     (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const;
-virtual VkResult                       createDisplayModeKHR                                                            (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const;
-virtual VkResult                       getDisplayPlaneCapabilitiesKHR                                          (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const;
-virtual VkResult                       createDisplayPlaneSurfaceKHR                                            (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkResult                       createXlibSurfaceKHR                                                            (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkBool32                       getPhysicalDeviceXlibPresentationSupportKHR                     (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID) const;
-virtual VkResult                       createXcbSurfaceKHR                                                                     (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkBool32                       getPhysicalDeviceXcbPresentationSupportKHR                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id) const;
-virtual VkResult                       createWaylandSurfaceKHR                                                         (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkBool32                       getPhysicalDeviceWaylandPresentationSupportKHR          (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display) const;
-virtual VkResult                       createMirSurfaceKHR                                                                     (VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkBool32                       getPhysicalDeviceMirPresentationSupportKHR                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::MirConnectionPtr connection) const;
-virtual VkResult                       createAndroidSurfaceKHR                                                         (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkResult                       createWin32SurfaceKHR                                                           (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkBool32                       getPhysicalDeviceWin32PresentationSupportKHR            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const;
-virtual VkResult                       getPhysicalDeviceSurfaceCapabilities2KHR                        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const;
-virtual VkResult                       getPhysicalDeviceSurfaceFormats2KHR                                     (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const;
-virtual VkResult                       getPhysicalDeviceDisplayProperties2KHR                          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const;
-virtual VkResult                       getPhysicalDeviceDisplayPlaneProperties2KHR                     (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const;
-virtual VkResult                       getDisplayModeProperties2KHR                                            (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const;
-virtual VkResult                       getDisplayPlaneCapabilities2KHR                                         (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const;
-virtual VkResult                       createDebugReportCallbackEXT                                            (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const;
-virtual void                           destroyDebugReportCallbackEXT                                           (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const;
-virtual void                           debugReportMessageEXT                                                           (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const;
-virtual VkResult                       getPhysicalDeviceExternalImageFormatPropertiesNV        (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) const;
-virtual VkResult                       createViSurfaceNN                                                                       (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual void                           getPhysicalDeviceGeneratedCommandsPropertiesNVX         (VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits) const;
-virtual VkResult                       releaseDisplayEXT                                                                       (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const;
-virtual VkResult                       acquireXlibDisplayEXT                                                           (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display) const;
-virtual VkResult                       getRandROutputDisplayEXT                                                        (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay) const;
-virtual VkResult                       getPhysicalDeviceSurfaceCapabilities2EXT                        (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const;
-virtual VkResult                       createIOSSurfaceMVK                                                                     (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkResult                       createMacOSSurfaceMVK                                                           (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual void                           getPhysicalDeviceMultisamplePropertiesEXT                       (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const;
-virtual void                           getPhysicalDeviceAndroidHardwareBufferUsageANDROID      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceAndroidHardwareBufferInfoANDROID* pInfo, VkAndroidHardwareBufferUsageANDROID* pUsage) const;
+virtual void           destroyInstance                                                                         (VkInstance instance, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult       enumeratePhysicalDevices                                                        (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const;
+virtual void           getPhysicalDeviceFeatures                                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const;
+virtual void           getPhysicalDeviceFormatProperties                                       (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const;
+virtual VkResult       getPhysicalDeviceImageFormatProperties                          (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const;
+virtual void           getPhysicalDeviceProperties                                                     (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const;
+virtual void           getPhysicalDeviceQueueFamilyProperties                          (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const;
+virtual void           getPhysicalDeviceMemoryProperties                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const;
+virtual VkResult       createDevice                                                                            (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const;
+virtual VkResult       enumerateDeviceExtensionProperties                                      (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const;
+virtual VkResult       enumerateDeviceLayerProperties                                          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const;
+virtual void           getPhysicalDeviceSparseImageFormatProperties            (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties) const;
+virtual VkResult       enumeratePhysicalDeviceGroups                                           (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const;
+virtual void           getPhysicalDeviceFeatures2                                                      (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const;
+virtual void           getPhysicalDeviceProperties2                                            (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const;
+virtual void           getPhysicalDeviceFormatProperties2                                      (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const;
+virtual VkResult       getPhysicalDeviceImageFormatProperties2                         (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const;
+virtual void           getPhysicalDeviceQueueFamilyProperties2                         (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const;
+virtual void           getPhysicalDeviceMemoryProperties2                                      (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const;
+virtual void           getPhysicalDeviceSparseImageFormatProperties2           (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties) const;
+virtual void           getPhysicalDeviceExternalBufferProperties                       (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const;
+virtual void           getPhysicalDeviceExternalFenceProperties                        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const;
+virtual void           getPhysicalDeviceExternalSemaphoreProperties            (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const;
+virtual void           destroySurfaceKHR                                                                       (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult       getPhysicalDeviceSurfaceSupportKHR                                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const;
+virtual VkResult       getPhysicalDeviceSurfaceCapabilitiesKHR                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const;
+virtual VkResult       getPhysicalDeviceSurfaceFormatsKHR                                      (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const;
+virtual VkResult       getPhysicalDeviceSurfacePresentModesKHR                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const;
+virtual VkResult       getPhysicalDevicePresentRectanglesKHR                           (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const;
+virtual VkResult       getPhysicalDeviceDisplayPropertiesKHR                           (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const;
+virtual VkResult       getPhysicalDeviceDisplayPlanePropertiesKHR                      (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const;
+virtual VkResult       getDisplayPlaneSupportedDisplaysKHR                                     (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const;
+virtual VkResult       getDisplayModePropertiesKHR                                                     (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const;
+virtual VkResult       createDisplayModeKHR                                                            (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const;
+virtual VkResult       getDisplayPlaneCapabilitiesKHR                                          (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const;
+virtual VkResult       createDisplayPlaneSurfaceKHR                                            (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       createXlibSurfaceKHR                                                            (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceXlibPresentationSupportKHR                     (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID) const;
+virtual VkResult       createXcbSurfaceKHR                                                                     (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceXcbPresentationSupportKHR                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id) const;
+virtual VkResult       createWaylandSurfaceKHR                                                         (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceWaylandPresentationSupportKHR          (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display) const;
+virtual VkResult       createMirSurfaceKHR                                                                     (VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceMirPresentationSupportKHR                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::MirConnectionPtr connection) const;
+virtual VkResult       createAndroidSurfaceKHR                                                         (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       createWin32SurfaceKHR                                                           (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceWin32PresentationSupportKHR            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const;
+virtual VkResult       getPhysicalDeviceSurfaceCapabilities2KHR                        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const;
+virtual VkResult       getPhysicalDeviceSurfaceFormats2KHR                                     (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const;
+virtual VkResult       getPhysicalDeviceDisplayProperties2KHR                          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const;
+virtual VkResult       getPhysicalDeviceDisplayPlaneProperties2KHR                     (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const;
+virtual VkResult       getDisplayModeProperties2KHR                                            (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const;
+virtual VkResult       getDisplayPlaneCapabilities2KHR                                         (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const;
+virtual VkResult       createDebugReportCallbackEXT                                            (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const;
+virtual void           destroyDebugReportCallbackEXT                                           (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const;
+virtual void           debugReportMessageEXT                                                           (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const;
+virtual VkResult       getPhysicalDeviceExternalImageFormatPropertiesNV        (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) const;
+virtual VkResult       createViSurfaceNN                                                                       (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual void           getPhysicalDeviceGeneratedCommandsPropertiesNVX         (VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits) const;
+virtual VkResult       releaseDisplayEXT                                                                       (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const;
+virtual VkResult       acquireXlibDisplayEXT                                                           (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display) const;
+virtual VkResult       getRandROutputDisplayEXT                                                        (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay) const;
+virtual VkResult       getPhysicalDeviceSurfaceCapabilities2EXT                        (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const;
+virtual VkResult       createIOSSurfaceMVK                                                                     (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       createMacOSSurfaceMVK                                                           (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual void           getPhysicalDeviceMultisamplePropertiesEXT                       (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const;
+virtual void           getPhysicalDeviceAndroidHardwareBufferUsageANDROID      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceAndroidHardwareBufferInfoANDROID* pInfo, VkAndroidHardwareBufferUsageANDROID* pUsage) const;
index db8d16e9d3b3a0cbc67b82e7c9c7ad9c72234045..45138613c97a5113088a933194ef203a848e3985 100644 (file)
@@ -29,7 +29,7 @@ void initApisMap (ApisMap& apis)
        apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties",                     FUNCTIONORIGIN_INSTANCE));
        apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties",                          FUNCTIONORIGIN_INSTANCE));
        apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetInstanceProcAddr",                                                        FUNCTIONORIGIN_PLATFORM));
-       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceProcAddr",                                                          FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkGetDeviceProcAddr",                                                          FUNCTIONORIGIN_DEVICE));
        apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkCreateDevice",                                                                       FUNCTIONORIGIN_INSTANCE));
        apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkDestroyDevice",                                                                      FUNCTIONORIGIN_DEVICE));
        apis[VK_API_VERSION_1_0].push_back(FunctionInfo("vkEnumerateInstanceExtensionProperties",                       FUNCTIONORIGIN_PLATFORM));
@@ -167,7 +167,7 @@ void initApisMap (ApisMap& apis)
        apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceQueueFamilyProperties",                     FUNCTIONORIGIN_INSTANCE));
        apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetPhysicalDeviceMemoryProperties",                          FUNCTIONORIGIN_INSTANCE));
        apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetInstanceProcAddr",                                                        FUNCTIONORIGIN_PLATFORM));
-       apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetDeviceProcAddr",                                                          FUNCTIONORIGIN_INSTANCE));
+       apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkGetDeviceProcAddr",                                                          FUNCTIONORIGIN_DEVICE));
        apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkCreateDevice",                                                                       FUNCTIONORIGIN_INSTANCE));
        apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkDestroyDevice",                                                                      FUNCTIONORIGIN_DEVICE));
        apis[VK_API_VERSION_1_1].push_back(FunctionInfo("vkEnumerateInstanceExtensionProperties",                       FUNCTIONORIGIN_PLATFORM));
index 38e716e7f374e8204ae2e8263a2fff971a5abef5..cb48f20e9ae5aa71579edbff323a99fcac4bf3ef 100644 (file)
@@ -2,6 +2,11 @@
  * be lost! Modify the generating script instead.
  */
 
+PFN_vkVoidFunction DeviceDriver::getDeviceProcAddr (VkDevice device, const char* pName) const
+{
+       return m_vk.getDeviceProcAddr(device, pName);
+}
+
 void DeviceDriver::destroyDevice (VkDevice device, const VkAllocationCallbacks* pAllocator) const
 {
        m_vk.destroyDevice(device, pAllocator);
index 331aa7b33e69aaaf55654f1f7f35ecb58ba54299..7275971bde9568d84560ffe637a10a8acd7a6d59 100644 (file)
@@ -1,6 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
+GetDeviceProcAddrFunc                                                          getDeviceProcAddr;
 DestroyDeviceFunc                                                                      destroyDevice;
 GetDeviceQueueFunc                                                                     getDeviceQueue;
 QueueSubmitFunc                                                                                queueSubmit;
index 7c83c1c14f89fdbd132f533778f1de69b33e69a7..b52434f5b029acc63c0117bfc83e144d86a8b6d6 100644 (file)
@@ -1,6 +1,7 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
+m_vk.getDeviceProcAddr                                                                 = (GetDeviceProcAddrFunc)                                                               GET_PROC_ADDR("vkGetDeviceProcAddr");
 m_vk.destroyDevice                                                                             = (DestroyDeviceFunc)                                                                   GET_PROC_ADDR("vkDestroyDevice");
 m_vk.getDeviceQueue                                                                            = (GetDeviceQueueFunc)                                                                  GET_PROC_ADDR("vkGetDeviceQueue");
 m_vk.queueSubmit                                                                               = (QueueSubmitFunc)                                                                             GET_PROC_ADDR("vkQueueSubmit");
index 54b1c99beca811edab978e3f8ca9a8cb846fabae..bf1e69091971b5d4f71ec7a987ed8f6e808a19b4 100644 (file)
@@ -9,7 +9,6 @@ m_vk.getPhysicalDeviceImageFormatProperties                                     = (GetPhysicalDeviceImageFormatP
 m_vk.getPhysicalDeviceProperties                                                       = (GetPhysicalDevicePropertiesFunc)                                                     GET_PROC_ADDR("vkGetPhysicalDeviceProperties");
 m_vk.getPhysicalDeviceQueueFamilyProperties                                    = (GetPhysicalDeviceQueueFamilyPropertiesFunc)                          GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties");
 m_vk.getPhysicalDeviceMemoryProperties                                         = (GetPhysicalDeviceMemoryPropertiesFunc)                                       GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties");
-m_vk.getDeviceProcAddr                                                                         = (GetDeviceProcAddrFunc)                                                                       GET_PROC_ADDR("vkGetDeviceProcAddr");
 m_vk.createDevice                                                                                      = (CreateDeviceFunc)                                                                            GET_PROC_ADDR("vkCreateDevice");
 m_vk.enumerateDeviceExtensionProperties                                                = (EnumerateDeviceExtensionPropertiesFunc)                                      GET_PROC_ADDR("vkEnumerateDeviceExtensionProperties");
 m_vk.enumerateDeviceLayerProperties                                                    = (EnumerateDeviceLayerPropertiesFunc)                                          GET_PROC_ADDR("vkEnumerateDeviceLayerProperties");
index 26ee4722dfdf35936633420ba42f92fbe338e388..3fcf61ed313c49d08c20b77603380de0ec664826 100644 (file)
@@ -42,11 +42,6 @@ void InstanceDriver::getPhysicalDeviceMemoryProperties (VkPhysicalDevice physica
        m_vk.getPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties);
 }
 
-PFN_vkVoidFunction InstanceDriver::getDeviceProcAddr (VkDevice device, const char* pName) const
-{
-       return m_vk.getDeviceProcAddr(device, pName);
-}
-
 VkResult InstanceDriver::createDevice (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const
 {
        return m_vk.createDevice(physicalDevice, pCreateInfo, pAllocator, pDevice);
index 24892af1c48f0f71adeb050c7af39ff1d241f380..7647ff81dccab4aeb7d78c579aafc08693f40bef 100644 (file)
@@ -9,7 +9,6 @@ GetPhysicalDeviceImageFormatPropertiesFunc                              getPhysicalDeviceImageFormatProper
 GetPhysicalDevicePropertiesFunc                                                        getPhysicalDeviceProperties;
 GetPhysicalDeviceQueueFamilyPropertiesFunc                             getPhysicalDeviceQueueFamilyProperties;
 GetPhysicalDeviceMemoryPropertiesFunc                                  getPhysicalDeviceMemoryProperties;
-GetDeviceProcAddrFunc                                                                  getDeviceProcAddr;
 CreateDeviceFunc                                                                               createDevice;
 EnumerateDeviceExtensionPropertiesFunc                                 enumerateDeviceExtensionProperties;
 EnumerateDeviceLayerPropertiesFunc                                             enumerateDeviceLayerProperties;
index 8197e9449f287e1a3107e552604bfe10f7366b33..b39a66d8e425c2a60528ee09a043e52d78f4d8aa 100644 (file)
@@ -1831,7 +1831,6 @@ static const tcu::StaticFunctionLibrary::Entry s_instanceFunctions[] =
        VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties,                                                       getPhysicalDeviceProperties),
        VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties,                            getPhysicalDeviceQueueFamilyProperties),
        VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties,                                         getPhysicalDeviceMemoryProperties),
-       VK_NULL_FUNC_ENTRY(vkGetDeviceProcAddr,                                                                         getDeviceProcAddr),
        VK_NULL_FUNC_ENTRY(vkCreateDevice,                                                                                      createDevice),
        VK_NULL_FUNC_ENTRY(vkEnumerateDeviceExtensionProperties,                                        enumerateDeviceExtensionProperties),
        VK_NULL_FUNC_ENTRY(vkEnumerateDeviceLayerProperties,                                            enumerateDeviceLayerProperties),
@@ -1906,6 +1905,7 @@ static const tcu::StaticFunctionLibrary::Entry s_instanceFunctions[] =
 
 static const tcu::StaticFunctionLibrary::Entry s_deviceFunctions[] =
 {
+       VK_NULL_FUNC_ENTRY(vkGetDeviceProcAddr,                                                                 getDeviceProcAddr),
        VK_NULL_FUNC_ENTRY(vkDestroyDevice,                                                                             destroyDevice),
        VK_NULL_FUNC_ENTRY(vkGetDeviceQueue,                                                                    getDeviceQueue),
        VK_NULL_FUNC_ENTRY(vkQueueSubmit,                                                                               queueSubmit),
index 2f8dc2458cc0a07837e413c92fac0f8f0717d2c0..8ceb805acbe0a079b0c2c42f057b6bc8b8fad8a2 100644 (file)
@@ -56,9 +56,11 @@ InstanceDriver::~InstanceDriver (void)
 {
 }
 
-DeviceDriver::DeviceDriver (const InstanceInterface& instanceInterface, VkDevice device)
+DeviceDriver::DeviceDriver(const PlatformInterface& platformInterface, VkInstance instance, VkDevice device)
 {
-#define GET_PROC_ADDR(NAME) instanceInterface.getDeviceProcAddr(device, NAME)
+       m_vk.getDeviceProcAddr = (GetDeviceProcAddrFunc)platformInterface.getInstanceProcAddr(instance, "vkGetDeviceProcAddr");
+
+#define GET_PROC_ADDR(NAME) m_vk.getDeviceProcAddr(device, NAME)
 #include "vkInitDeviceFunctionPointers.inl"
 #undef GET_PROC_ADDR
 }
index 9c4064de69c9e384ebb7a068fa335159de9e9223..40159a7340c6dd46210382552163037507904a8c 100644 (file)
@@ -84,7 +84,7 @@ protected:
 class DeviceDriver : public DeviceInterface
 {
 public:
-                               DeviceDriver    (const InstanceInterface& instanceInterface, VkDevice device);
+                               DeviceDriver    (const PlatformInterface& platformInterface, VkInstance instance, VkDevice device);
                                ~DeviceDriver   (void);
 
 #include "vkConcreteDeviceInterface.inl"
index 9d3d5f1602ce4ea445a7255c303a9e5c37732220..7c71afc5fbf7b1d915c28b3ea8f5116850f2a76f 100644 (file)
@@ -117,10 +117,12 @@ template<>
 class Deleter<VkDevice>
 {
 public:
-                                                                       Deleter         (const InstanceInterface& instanceIface, VkDevice device, const VkAllocationCallbacks* allocator)
-                                                                               : m_destroyDevice       ((DestroyDeviceFunc)instanceIface.getDeviceProcAddr(device, "vkDestroyDevice"))
-                                                                               , m_allocator           (allocator)
-                                                                       {}
+                                                                       Deleter         (const PlatformInterface& platformIface, VkInstance instance, VkDevice device, const VkAllocationCallbacks* allocator)
+                                                                       {
+                                                                               GetDeviceProcAddrFunc getDeviceProcAddr = (GetDeviceProcAddrFunc)platformIface.getInstanceProcAddr(instance, "vkGetDeviceProcAddr");
+                                                                               m_destroyDevice = (DestroyDeviceFunc)getDeviceProcAddr(device, "vkDestroyDevice");
+                                                                               m_allocator = allocator;
+                                                                       }
                                                                        Deleter         (void)
                                                                                : m_destroyDevice       ((DestroyDeviceFunc)DE_NULL)
                                                                                , m_allocator           (DE_NULL)
index 08ab196297a2649ff1b5ea478aa109ea63ae521a..2b13f18b7084364492b9cde1dc3d6c06c6c69e42 100644 (file)
@@ -2,7 +2,7 @@
  * be lost! Modify the generating script instead.
  */
 Move<VkInstance>                                       createInstance                                  (const PlatformInterface& vk, const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
-Move<VkDevice>                                         createDevice                                    (const InstanceInterface& vk, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
+Move<VkDevice>                                         createDevice                                    (const PlatformInterface& vkp, VkInstance instance, const InstanceInterface& vk, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 Move<VkDeviceMemory>                           allocateMemory                                  (const DeviceInterface& vk, VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 Move<VkFence>                                          createFence                                             (const DeviceInterface& vk, VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
 Move<VkSemaphore>                                      createSemaphore                                 (const DeviceInterface& vk, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator = DE_NULL);
index 874659bd2346439f2575dfe88b9eb65bbb9dc5eb..5bbe772d648a44fce81f89b53b810b24463a53a3 100644 (file)
@@ -163,11 +163,11 @@ Move<VkInstance> createInstance (const PlatformInterface& vk, const VkInstanceCr
        return Move<VkInstance>(check<VkInstance>(object), Deleter<VkInstance>(vk, object, pAllocator));
 }
 
-Move<VkDevice> createDevice (const InstanceInterface& vk, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
+Move<VkDevice> createDevice (const PlatformInterface& vkp, VkInstance instance, const InstanceInterface& vk, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator)
 {
        VkDevice object = 0;
        VK_CHECK(vk.createDevice(physicalDevice, pCreateInfo, pAllocator, &object));
-       return Move<VkDevice>(check<VkDevice>(object), Deleter<VkDevice>(vk, object, pAllocator));
+       return Move<VkDevice>(check<VkDevice>(object), Deleter<VkDevice>(vkp, instance, object, pAllocator));
 }
 
 Move<VkDeviceMemory> allocateMemory (const DeviceInterface& vk, VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator)
index 54e0995f710e9d5427fb695b6cc6aa01b278ad37..afa65f45d997b35773b747df638db2cfcadd2bbe 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-virtual void           destroyDevice                                                                   (VkDevice device, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual void           getDeviceQueue                                                                  (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue) const = 0;
-virtual VkResult       queueSubmit                                                                             (VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence) const = 0;
-virtual VkResult       queueWaitIdle                                                                   (VkQueue queue) const = 0;
-virtual VkResult       deviceWaitIdle                                                                  (VkDevice device) const = 0;
-virtual VkResult       allocateMemory                                                                  (VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) const = 0;
-virtual void           freeMemory                                                                              (VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       mapMemory                                                                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const = 0;
-virtual void           unmapMemory                                                                             (VkDevice device, VkDeviceMemory memory) const = 0;
-virtual VkResult       flushMappedMemoryRanges                                                 (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const = 0;
-virtual VkResult       invalidateMappedMemoryRanges                                    (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const = 0;
-virtual void           getDeviceMemoryCommitment                                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) const = 0;
-virtual VkResult       bindBufferMemory                                                                (VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) const = 0;
-virtual VkResult       bindImageMemory                                                                 (VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) const = 0;
-virtual void           getBufferMemoryRequirements                                             (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) const = 0;
-virtual void           getImageMemoryRequirements                                              (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) const = 0;
-virtual void           getImageSparseMemoryRequirements                                (VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) const = 0;
-virtual VkResult       queueBindSparse                                                                 (VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) const = 0;
-virtual VkResult       createFence                                                                             (VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const = 0;
-virtual void           destroyFence                                                                    (VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       resetFences                                                                             (VkDevice device, deUint32 fenceCount, const VkFence* pFences) const = 0;
-virtual VkResult       getFenceStatus                                                                  (VkDevice device, VkFence fence) const = 0;
-virtual VkResult       waitForFences                                                                   (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout) const = 0;
-virtual VkResult       createSemaphore                                                                 (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) const = 0;
-virtual void           destroySemaphore                                                                (VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       createEvent                                                                             (VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) const = 0;
-virtual void           destroyEvent                                                                    (VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       getEventStatus                                                                  (VkDevice device, VkEvent event) const = 0;
-virtual VkResult       setEvent                                                                                (VkDevice device, VkEvent event) const = 0;
-virtual VkResult       resetEvent                                                                              (VkDevice device, VkEvent event) const = 0;
-virtual VkResult       createQueryPool                                                                 (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) const = 0;
-virtual void           destroyQueryPool                                                                (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       getQueryPoolResults                                                             (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const = 0;
-virtual VkResult       createBuffer                                                                    (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) const = 0;
-virtual void           destroyBuffer                                                                   (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       createBufferView                                                                (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) const = 0;
-virtual void           destroyBufferView                                                               (VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       createImage                                                                             (VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) const = 0;
-virtual void           destroyImage                                                                    (VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual void           getImageSubresourceLayout                                               (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) const = 0;
-virtual VkResult       createImageView                                                                 (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView) const = 0;
-virtual void           destroyImageView                                                                (VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       createShaderModule                                                              (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) const = 0;
-virtual void           destroyShaderModule                                                             (VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       createPipelineCache                                                             (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) const = 0;
-virtual void           destroyPipelineCache                                                    (VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       getPipelineCacheData                                                    (VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData) const = 0;
-virtual VkResult       mergePipelineCaches                                                             (VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches) const = 0;
-virtual VkResult       createGraphicsPipelines                                                 (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const = 0;
-virtual VkResult       createComputePipelines                                                  (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const = 0;
-virtual void           destroyPipeline                                                                 (VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       createPipelineLayout                                                    (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) const = 0;
-virtual void           destroyPipelineLayout                                                   (VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       createSampler                                                                   (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) const = 0;
-virtual void           destroySampler                                                                  (VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       createDescriptorSetLayout                                               (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) const = 0;
-virtual void           destroyDescriptorSetLayout                                              (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       createDescriptorPool                                                    (VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) const = 0;
-virtual void           destroyDescriptorPool                                                   (VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       resetDescriptorPool                                                             (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) const = 0;
-virtual VkResult       allocateDescriptorSets                                                  (VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) const = 0;
-virtual VkResult       freeDescriptorSets                                                              (VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets) const = 0;
-virtual void           updateDescriptorSets                                                    (VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) const = 0;
-virtual VkResult       createFramebuffer                                                               (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) const = 0;
-virtual void           destroyFramebuffer                                                              (VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       createRenderPass                                                                (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const = 0;
-virtual void           destroyRenderPass                                                               (VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual void           getRenderAreaGranularity                                                (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) const = 0;
-virtual VkResult       createCommandPool                                                               (VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) const = 0;
-virtual void           destroyCommandPool                                                              (VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       resetCommandPool                                                                (VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) const = 0;
-virtual VkResult       allocateCommandBuffers                                                  (VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) const = 0;
-virtual void           freeCommandBuffers                                                              (VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const = 0;
-virtual VkResult       beginCommandBuffer                                                              (VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) const = 0;
-virtual VkResult       endCommandBuffer                                                                (VkCommandBuffer commandBuffer) const = 0;
-virtual VkResult       resetCommandBuffer                                                              (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) const = 0;
-virtual void           cmdBindPipeline                                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const = 0;
-virtual void           cmdSetViewport                                                                  (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports) const = 0;
-virtual void           cmdSetScissor                                                                   (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors) const = 0;
-virtual void           cmdSetLineWidth                                                                 (VkCommandBuffer commandBuffer, float lineWidth) const = 0;
-virtual void           cmdSetDepthBias                                                                 (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) const = 0;
-virtual void           cmdSetBlendConstants                                                    (VkCommandBuffer commandBuffer, const float blendConstants[4]) const = 0;
-virtual void           cmdSetDepthBounds                                                               (VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) const = 0;
-virtual void           cmdSetStencilCompareMask                                                (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask) const = 0;
-virtual void           cmdSetStencilWriteMask                                                  (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask) const = 0;
-virtual void           cmdSetStencilReference                                                  (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference) const = 0;
-virtual void           cmdBindDescriptorSets                                                   (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const = 0;
-virtual void           cmdBindIndexBuffer                                                              (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const = 0;
-virtual void           cmdBindVertexBuffers                                                    (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const = 0;
-virtual void           cmdDraw                                                                                 (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance) const = 0;
-virtual void           cmdDrawIndexed                                                                  (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance) const = 0;
-virtual void           cmdDrawIndirect                                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const = 0;
-virtual void           cmdDrawIndexedIndirect                                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const = 0;
-virtual void           cmdDispatch                                                                             (VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const = 0;
-virtual void           cmdDispatchIndirect                                                             (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) const = 0;
-virtual void           cmdCopyBuffer                                                                   (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions) const = 0;
-virtual void           cmdCopyImage                                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions) const = 0;
-virtual void           cmdBlitImage                                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter) const = 0;
-virtual void           cmdCopyBufferToImage                                                    (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions) const = 0;
-virtual void           cmdCopyImageToBuffer                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions) const = 0;
-virtual void           cmdUpdateBuffer                                                                 (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData) const = 0;
-virtual void           cmdFillBuffer                                                                   (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data) const = 0;
-virtual void           cmdClearColorImage                                                              (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const = 0;
-virtual void           cmdClearDepthStencilImage                                               (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const = 0;
-virtual void           cmdClearAttachments                                                             (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects) const = 0;
-virtual void           cmdResolveImage                                                                 (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const = 0;
-virtual void           cmdSetEvent                                                                             (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const = 0;
-virtual void           cmdResetEvent                                                                   (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const = 0;
-virtual void           cmdWaitEvents                                                                   (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const = 0;
-virtual void           cmdPipelineBarrier                                                              (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const = 0;
-virtual void           cmdBeginQuery                                                                   (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags) const = 0;
-virtual void           cmdEndQuery                                                                             (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query) const = 0;
-virtual void           cmdResetQueryPool                                                               (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const = 0;
-virtual void           cmdWriteTimestamp                                                               (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query) const = 0;
-virtual void           cmdCopyQueryPoolResults                                                 (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const = 0;
-virtual void           cmdPushConstants                                                                (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues) const = 0;
-virtual void           cmdBeginRenderPass                                                              (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) const = 0;
-virtual void           cmdNextSubpass                                                                  (VkCommandBuffer commandBuffer, VkSubpassContents contents) const = 0;
-virtual void           cmdEndRenderPass                                                                (VkCommandBuffer commandBuffer) const = 0;
-virtual void           cmdExecuteCommands                                                              (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const = 0;
-virtual VkResult       bindBufferMemory2                                                               (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) const = 0;
-virtual VkResult       bindImageMemory2                                                                (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) const = 0;
-virtual void           getDeviceGroupPeerMemoryFeatures                                (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) const = 0;
-virtual void           cmdSetDeviceMask                                                                (VkCommandBuffer commandBuffer, deUint32 deviceMask) const = 0;
-virtual void           cmdDispatchBase                                                                 (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const = 0;
-virtual void           getImageMemoryRequirements2                                             (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const = 0;
-virtual void           getBufferMemoryRequirements2                                    (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const = 0;
-virtual void           getImageSparseMemoryRequirements2                               (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) const = 0;
-virtual void           trimCommandPool                                                                 (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) const = 0;
-virtual void           getDeviceQueue2                                                                 (VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue) const = 0;
-virtual VkResult       createSamplerYcbcrConversion                                    (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) const = 0;
-virtual void           destroySamplerYcbcrConversion                                   (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       createDescriptorUpdateTemplate                                  (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) const = 0;
-virtual void           destroyDescriptorUpdateTemplate                                 (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual void           updateDescriptorSetWithTemplate                                 (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) const = 0;
-virtual void           getDescriptorSetLayoutSupport                                   (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) const = 0;
-virtual VkResult       createSwapchainKHR                                                              (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const = 0;
-virtual void           destroySwapchainKHR                                                             (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       getSwapchainImagesKHR                                                   (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const = 0;
-virtual VkResult       acquireNextImageKHR                                                             (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex) const = 0;
-virtual VkResult       queuePresentKHR                                                                 (VkQueue queue, const VkPresentInfoKHR* pPresentInfo) const = 0;
-virtual VkResult       getDeviceGroupPresentCapabilitiesKHR                    (VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) const = 0;
-virtual VkResult       getDeviceGroupSurfacePresentModesKHR                    (VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) const = 0;
-virtual VkResult       acquireNextImage2KHR                                                    (VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex) const = 0;
-virtual VkResult       createSharedSwapchainsKHR                                               (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const = 0;
-virtual VkResult       getMemoryWin32HandleKHR                                                 (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
-virtual VkResult       getMemoryWin32HandlePropertiesKHR                               (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::Win32Handle handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) const = 0;
-virtual VkResult       getMemoryFdKHR                                                                  (VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) const = 0;
-virtual VkResult       getMemoryFdPropertiesKHR                                                (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties) const = 0;
-virtual VkResult       importSemaphoreWin32HandleKHR                                   (VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) const = 0;
-virtual VkResult       getSemaphoreWin32HandleKHR                                              (VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
-virtual VkResult       importSemaphoreFdKHR                                                    (VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) const = 0;
-virtual VkResult       getSemaphoreFdKHR                                                               (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) const = 0;
-virtual void           cmdPushDescriptorSetKHR                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const = 0;
-virtual void           cmdPushDescriptorSetWithTemplateKHR                             (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const = 0;
-virtual VkResult       getSwapchainStatusKHR                                                   (VkDevice device, VkSwapchainKHR swapchain) const = 0;
-virtual VkResult       importFenceWin32HandleKHR                                               (VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) const = 0;
-virtual VkResult       getFenceWin32HandleKHR                                                  (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
-virtual VkResult       importFenceFdKHR                                                                (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) const = 0;
-virtual VkResult       getFenceFdKHR                                                                   (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) const = 0;
-virtual VkResult       debugMarkerSetObjectTagEXT                                              (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const = 0;
-virtual VkResult       debugMarkerSetObjectNameEXT                                             (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) const = 0;
-virtual void           cmdDebugMarkerBeginEXT                                                  (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const = 0;
-virtual void           cmdDebugMarkerEndEXT                                                    (VkCommandBuffer commandBuffer) const = 0;
-virtual void           cmdDebugMarkerInsertEXT                                                 (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const = 0;
-virtual void           cmdDrawIndirectCountAMD                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
-virtual void           cmdDrawIndexedIndirectCountAMD                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
-virtual VkResult       getMemoryWin32HandleNV                                                  (VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, pt::Win32Handle* pHandle) const = 0;
-virtual void           cmdProcessCommandsNVX                                                   (VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) const = 0;
-virtual void           cmdReserveSpaceForCommandsNVX                                   (VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) const = 0;
-virtual VkResult       createIndirectCommandsLayoutNVX                                 (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) const = 0;
-virtual void           destroyIndirectCommandsLayoutNVX                                (VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       createObjectTableNVX                                                    (VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable) const = 0;
-virtual void           destroyObjectTableNVX                                                   (VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       registerObjectsNVX                                                              (VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const deUint32* pObjectIndices) const = 0;
-virtual VkResult       unregisterObjectsNVX                                                    (VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const deUint32* pObjectIndices) const = 0;
-virtual void           cmdSetViewportWScalingNV                                                (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings) const = 0;
-virtual VkResult       displayPowerControlEXT                                                  (VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) const = 0;
-virtual VkResult       registerDeviceEventEXT                                                  (VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const = 0;
-virtual VkResult       registerDisplayEventEXT                                                 (VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const = 0;
-virtual VkResult       getSwapchainCounterEXT                                                  (VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue) const = 0;
-virtual VkResult       getRefreshCycleDurationGOOGLE                                   (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) const = 0;
-virtual VkResult       getPastPresentationTimingGOOGLE                                 (VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) const = 0;
-virtual void           cmdSetDiscardRectangleEXT                                               (VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles) const = 0;
-virtual void           setHdrMetadataEXT                                                               (VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) const = 0;
-virtual void           cmdSetSampleLocationsEXT                                                (VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) const = 0;
-virtual VkResult       createValidationCacheEXT                                                (VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) const = 0;
-virtual void           destroyValidationCacheEXT                                               (VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       mergeValidationCachesEXT                                                (VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches) const = 0;
-virtual VkResult       getValidationCacheDataEXT                                               (VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData) const = 0;
-virtual VkResult       getMemoryAndroidHardwareBufferPropertiesANDROID (VkDevice device, const pt::AndroidHardwareBufferPtr buffer, VkMemoryAndroidHardwareBufferPropertiesANDROID* pProperties) const = 0;
-virtual VkResult       getMemoryAndroidHardwareBufferANDROID                   (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, pt::AndroidHardwareBufferPtr* pBuffer) const = 0;
+virtual PFN_vkVoidFunction     getDeviceProcAddr                                                               (VkDevice device, const char* pName) const = 0;
+virtual void                           destroyDevice                                                                   (VkDevice device, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void                           getDeviceQueue                                                                  (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue) const = 0;
+virtual VkResult                       queueSubmit                                                                             (VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence) const = 0;
+virtual VkResult                       queueWaitIdle                                                                   (VkQueue queue) const = 0;
+virtual VkResult                       deviceWaitIdle                                                                  (VkDevice device) const = 0;
+virtual VkResult                       allocateMemory                                                                  (VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory) const = 0;
+virtual void                           freeMemory                                                                              (VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       mapMemory                                                                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const = 0;
+virtual void                           unmapMemory                                                                             (VkDevice device, VkDeviceMemory memory) const = 0;
+virtual VkResult                       flushMappedMemoryRanges                                                 (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const = 0;
+virtual VkResult                       invalidateMappedMemoryRanges                                    (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges) const = 0;
+virtual void                           getDeviceMemoryCommitment                                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) const = 0;
+virtual VkResult                       bindBufferMemory                                                                (VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset) const = 0;
+virtual VkResult                       bindImageMemory                                                                 (VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset) const = 0;
+virtual void                           getBufferMemoryRequirements                                             (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) const = 0;
+virtual void                           getImageMemoryRequirements                                              (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) const = 0;
+virtual void                           getImageSparseMemoryRequirements                                (VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) const = 0;
+virtual VkResult                       queueBindSparse                                                                 (VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence) const = 0;
+virtual VkResult                       createFence                                                                             (VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const = 0;
+virtual void                           destroyFence                                                                    (VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       resetFences                                                                             (VkDevice device, deUint32 fenceCount, const VkFence* pFences) const = 0;
+virtual VkResult                       getFenceStatus                                                                  (VkDevice device, VkFence fence) const = 0;
+virtual VkResult                       waitForFences                                                                   (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout) const = 0;
+virtual VkResult                       createSemaphore                                                                 (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore) const = 0;
+virtual void                           destroySemaphore                                                                (VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createEvent                                                                             (VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent) const = 0;
+virtual void                           destroyEvent                                                                    (VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       getEventStatus                                                                  (VkDevice device, VkEvent event) const = 0;
+virtual VkResult                       setEvent                                                                                (VkDevice device, VkEvent event) const = 0;
+virtual VkResult                       resetEvent                                                                              (VkDevice device, VkEvent event) const = 0;
+virtual VkResult                       createQueryPool                                                                 (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool) const = 0;
+virtual void                           destroyQueryPool                                                                (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       getQueryPoolResults                                                             (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags) const = 0;
+virtual VkResult                       createBuffer                                                                    (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer) const = 0;
+virtual void                           destroyBuffer                                                                   (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createBufferView                                                                (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView) const = 0;
+virtual void                           destroyBufferView                                                               (VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createImage                                                                             (VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage) const = 0;
+virtual void                           destroyImage                                                                    (VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void                           getImageSubresourceLayout                                               (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) const = 0;
+virtual VkResult                       createImageView                                                                 (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView) const = 0;
+virtual void                           destroyImageView                                                                (VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createShaderModule                                                              (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule) const = 0;
+virtual void                           destroyShaderModule                                                             (VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createPipelineCache                                                             (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache) const = 0;
+virtual void                           destroyPipelineCache                                                    (VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       getPipelineCacheData                                                    (VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData) const = 0;
+virtual VkResult                       mergePipelineCaches                                                             (VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches) const = 0;
+virtual VkResult                       createGraphicsPipelines                                                 (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const = 0;
+virtual VkResult                       createComputePipelines                                                  (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) const = 0;
+virtual void                           destroyPipeline                                                                 (VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createPipelineLayout                                                    (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout) const = 0;
+virtual void                           destroyPipelineLayout                                                   (VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createSampler                                                                   (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler) const = 0;
+virtual void                           destroySampler                                                                  (VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createDescriptorSetLayout                                               (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout) const = 0;
+virtual void                           destroyDescriptorSetLayout                                              (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createDescriptorPool                                                    (VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool) const = 0;
+virtual void                           destroyDescriptorPool                                                   (VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       resetDescriptorPool                                                             (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags) const = 0;
+virtual VkResult                       allocateDescriptorSets                                                  (VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) const = 0;
+virtual VkResult                       freeDescriptorSets                                                              (VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets) const = 0;
+virtual void                           updateDescriptorSets                                                    (VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies) const = 0;
+virtual VkResult                       createFramebuffer                                                               (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer) const = 0;
+virtual void                           destroyFramebuffer                                                              (VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createRenderPass                                                                (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass) const = 0;
+virtual void                           destroyRenderPass                                                               (VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void                           getRenderAreaGranularity                                                (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) const = 0;
+virtual VkResult                       createCommandPool                                                               (VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool) const = 0;
+virtual void                           destroyCommandPool                                                              (VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       resetCommandPool                                                                (VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags) const = 0;
+virtual VkResult                       allocateCommandBuffers                                                  (VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) const = 0;
+virtual void                           freeCommandBuffers                                                              (VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const = 0;
+virtual VkResult                       beginCommandBuffer                                                              (VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) const = 0;
+virtual VkResult                       endCommandBuffer                                                                (VkCommandBuffer commandBuffer) const = 0;
+virtual VkResult                       resetCommandBuffer                                                              (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) const = 0;
+virtual void                           cmdBindPipeline                                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const = 0;
+virtual void                           cmdSetViewport                                                                  (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports) const = 0;
+virtual void                           cmdSetScissor                                                                   (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors) const = 0;
+virtual void                           cmdSetLineWidth                                                                 (VkCommandBuffer commandBuffer, float lineWidth) const = 0;
+virtual void                           cmdSetDepthBias                                                                 (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor) const = 0;
+virtual void                           cmdSetBlendConstants                                                    (VkCommandBuffer commandBuffer, const float blendConstants[4]) const = 0;
+virtual void                           cmdSetDepthBounds                                                               (VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds) const = 0;
+virtual void                           cmdSetStencilCompareMask                                                (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask) const = 0;
+virtual void                           cmdSetStencilWriteMask                                                  (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask) const = 0;
+virtual void                           cmdSetStencilReference                                                  (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference) const = 0;
+virtual void                           cmdBindDescriptorSets                                                   (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const = 0;
+virtual void                           cmdBindIndexBuffer                                                              (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const = 0;
+virtual void                           cmdBindVertexBuffers                                                    (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const = 0;
+virtual void                           cmdDraw                                                                                 (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance) const = 0;
+virtual void                           cmdDrawIndexed                                                                  (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance) const = 0;
+virtual void                           cmdDrawIndirect                                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const = 0;
+virtual void                           cmdDrawIndexedIndirect                                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride) const = 0;
+virtual void                           cmdDispatch                                                                             (VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const = 0;
+virtual void                           cmdDispatchIndirect                                                             (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset) const = 0;
+virtual void                           cmdCopyBuffer                                                                   (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions) const = 0;
+virtual void                           cmdCopyImage                                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions) const = 0;
+virtual void                           cmdBlitImage                                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter) const = 0;
+virtual void                           cmdCopyBufferToImage                                                    (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions) const = 0;
+virtual void                           cmdCopyImageToBuffer                                                    (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions) const = 0;
+virtual void                           cmdUpdateBuffer                                                                 (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData) const = 0;
+virtual void                           cmdFillBuffer                                                                   (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data) const = 0;
+virtual void                           cmdClearColorImage                                                              (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const = 0;
+virtual void                           cmdClearDepthStencilImage                                               (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const = 0;
+virtual void                           cmdClearAttachments                                                             (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects) const = 0;
+virtual void                           cmdResolveImage                                                                 (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const = 0;
+virtual void                           cmdSetEvent                                                                             (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const = 0;
+virtual void                           cmdResetEvent                                                                   (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) const = 0;
+virtual void                           cmdWaitEvents                                                                   (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const = 0;
+virtual void                           cmdPipelineBarrier                                                              (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) const = 0;
+virtual void                           cmdBeginQuery                                                                   (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags) const = 0;
+virtual void                           cmdEndQuery                                                                             (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query) const = 0;
+virtual void                           cmdResetQueryPool                                                               (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount) const = 0;
+virtual void                           cmdWriteTimestamp                                                               (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query) const = 0;
+virtual void                           cmdCopyQueryPoolResults                                                 (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) const = 0;
+virtual void                           cmdPushConstants                                                                (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues) const = 0;
+virtual void                           cmdBeginRenderPass                                                              (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) const = 0;
+virtual void                           cmdNextSubpass                                                                  (VkCommandBuffer commandBuffer, VkSubpassContents contents) const = 0;
+virtual void                           cmdEndRenderPass                                                                (VkCommandBuffer commandBuffer) const = 0;
+virtual void                           cmdExecuteCommands                                                              (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers) const = 0;
+virtual VkResult                       bindBufferMemory2                                                               (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos) const = 0;
+virtual VkResult                       bindImageMemory2                                                                (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos) const = 0;
+virtual void                           getDeviceGroupPeerMemoryFeatures                                (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) const = 0;
+virtual void                           cmdSetDeviceMask                                                                (VkCommandBuffer commandBuffer, deUint32 deviceMask) const = 0;
+virtual void                           cmdDispatchBase                                                                 (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ) const = 0;
+virtual void                           getImageMemoryRequirements2                                             (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const = 0;
+virtual void                           getBufferMemoryRequirements2                                    (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements) const = 0;
+virtual void                           getImageSparseMemoryRequirements2                               (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) const = 0;
+virtual void                           trimCommandPool                                                                 (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags) const = 0;
+virtual void                           getDeviceQueue2                                                                 (VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue) const = 0;
+virtual VkResult                       createSamplerYcbcrConversion                                    (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion) const = 0;
+virtual void                           destroySamplerYcbcrConversion                                   (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createDescriptorUpdateTemplate                                  (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) const = 0;
+virtual void                           destroyDescriptorUpdateTemplate                                 (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void                           updateDescriptorSetWithTemplate                                 (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData) const = 0;
+virtual void                           getDescriptorSetLayoutSupport                                   (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport) const = 0;
+virtual VkResult                       createSwapchainKHR                                                              (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain) const = 0;
+virtual void                           destroySwapchainKHR                                                             (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       getSwapchainImagesKHR                                                   (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages) const = 0;
+virtual VkResult                       acquireNextImageKHR                                                             (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex) const = 0;
+virtual VkResult                       queuePresentKHR                                                                 (VkQueue queue, const VkPresentInfoKHR* pPresentInfo) const = 0;
+virtual VkResult                       getDeviceGroupPresentCapabilitiesKHR                    (VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) const = 0;
+virtual VkResult                       getDeviceGroupSurfacePresentModesKHR                    (VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes) const = 0;
+virtual VkResult                       acquireNextImage2KHR                                                    (VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex) const = 0;
+virtual VkResult                       createSharedSwapchainsKHR                                               (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const = 0;
+virtual VkResult                       getMemoryWin32HandleKHR                                                 (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
+virtual VkResult                       getMemoryWin32HandlePropertiesKHR                               (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::Win32Handle handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) const = 0;
+virtual VkResult                       getMemoryFdKHR                                                                  (VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) const = 0;
+virtual VkResult                       getMemoryFdPropertiesKHR                                                (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties) const = 0;
+virtual VkResult                       importSemaphoreWin32HandleKHR                                   (VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) const = 0;
+virtual VkResult                       getSemaphoreWin32HandleKHR                                              (VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
+virtual VkResult                       importSemaphoreFdKHR                                                    (VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) const = 0;
+virtual VkResult                       getSemaphoreFdKHR                                                               (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd) const = 0;
+virtual void                           cmdPushDescriptorSetKHR                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const = 0;
+virtual void                           cmdPushDescriptorSetWithTemplateKHR                             (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const = 0;
+virtual VkResult                       getSwapchainStatusKHR                                                   (VkDevice device, VkSwapchainKHR swapchain) const = 0;
+virtual VkResult                       importFenceWin32HandleKHR                                               (VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) const = 0;
+virtual VkResult                       getFenceWin32HandleKHR                                                  (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
+virtual VkResult                       importFenceFdKHR                                                                (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) const = 0;
+virtual VkResult                       getFenceFdKHR                                                                   (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) const = 0;
+virtual VkResult                       debugMarkerSetObjectTagEXT                                              (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const = 0;
+virtual VkResult                       debugMarkerSetObjectNameEXT                                             (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) const = 0;
+virtual void                           cmdDebugMarkerBeginEXT                                                  (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const = 0;
+virtual void                           cmdDebugMarkerEndEXT                                                    (VkCommandBuffer commandBuffer) const = 0;
+virtual void                           cmdDebugMarkerInsertEXT                                                 (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const = 0;
+virtual void                           cmdDrawIndirectCountAMD                                                 (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
+virtual void                           cmdDrawIndexedIndirectCountAMD                                  (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride) const = 0;
+virtual VkResult                       getMemoryWin32HandleNV                                                  (VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, pt::Win32Handle* pHandle) const = 0;
+virtual void                           cmdProcessCommandsNVX                                                   (VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) const = 0;
+virtual void                           cmdReserveSpaceForCommandsNVX                                   (VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) const = 0;
+virtual VkResult                       createIndirectCommandsLayoutNVX                                 (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) const = 0;
+virtual void                           destroyIndirectCommandsLayoutNVX                                (VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       createObjectTableNVX                                                    (VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable) const = 0;
+virtual void                           destroyObjectTableNVX                                                   (VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       registerObjectsNVX                                                              (VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const deUint32* pObjectIndices) const = 0;
+virtual VkResult                       unregisterObjectsNVX                                                    (VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const deUint32* pObjectIndices) const = 0;
+virtual void                           cmdSetViewportWScalingNV                                                (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings) const = 0;
+virtual VkResult                       displayPowerControlEXT                                                  (VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo) const = 0;
+virtual VkResult                       registerDeviceEventEXT                                                  (VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const = 0;
+virtual VkResult                       registerDisplayEventEXT                                                 (VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence) const = 0;
+virtual VkResult                       getSwapchainCounterEXT                                                  (VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue) const = 0;
+virtual VkResult                       getRefreshCycleDurationGOOGLE                                   (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) const = 0;
+virtual VkResult                       getPastPresentationTimingGOOGLE                                 (VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) const = 0;
+virtual void                           cmdSetDiscardRectangleEXT                                               (VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles) const = 0;
+virtual void                           setHdrMetadataEXT                                                               (VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata) const = 0;
+virtual void                           cmdSetSampleLocationsEXT                                                (VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) const = 0;
+virtual VkResult                       createValidationCacheEXT                                                (VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache) const = 0;
+virtual void                           destroyValidationCacheEXT                                               (VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult                       mergeValidationCachesEXT                                                (VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches) const = 0;
+virtual VkResult                       getValidationCacheDataEXT                                               (VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData) const = 0;
+virtual VkResult                       getMemoryAndroidHardwareBufferPropertiesANDROID (VkDevice device, const pt::AndroidHardwareBufferPtr buffer, VkMemoryAndroidHardwareBufferPropertiesANDROID* pProperties) const = 0;
+virtual VkResult                       getMemoryAndroidHardwareBufferANDROID                   (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, pt::AndroidHardwareBufferPtr* pBuffer) const = 0;
index dd8977a70e54e02b1c3289e5ee30fea8ff3ce6b6..b05ca6f2f83d2ec3c88448d32a1fb35c69ade247 100644 (file)
@@ -1,71 +1,70 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-virtual void                           destroyInstance                                                                         (VkInstance instance, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult                       enumeratePhysicalDevices                                                        (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const = 0;
-virtual void                           getPhysicalDeviceFeatures                                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const = 0;
-virtual void                           getPhysicalDeviceFormatProperties                                       (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const = 0;
-virtual VkResult                       getPhysicalDeviceImageFormatProperties                          (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const = 0;
-virtual void                           getPhysicalDeviceProperties                                                     (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const = 0;
-virtual void                           getPhysicalDeviceQueueFamilyProperties                          (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const = 0;
-virtual void                           getPhysicalDeviceMemoryProperties                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const = 0;
-virtual PFN_vkVoidFunction     getDeviceProcAddr                                                                       (VkDevice device, const char* pName) const = 0;
-virtual VkResult                       createDevice                                                                            (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const = 0;
-virtual VkResult                       enumerateDeviceExtensionProperties                                      (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const = 0;
-virtual VkResult                       enumerateDeviceLayerProperties                                          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const = 0;
-virtual void                           getPhysicalDeviceSparseImageFormatProperties            (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties) const = 0;
-virtual VkResult                       enumeratePhysicalDeviceGroups                                           (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const = 0;
-virtual void                           getPhysicalDeviceFeatures2                                                      (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const = 0;
-virtual void                           getPhysicalDeviceProperties2                                            (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const = 0;
-virtual void                           getPhysicalDeviceFormatProperties2                                      (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const = 0;
-virtual VkResult                       getPhysicalDeviceImageFormatProperties2                         (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const = 0;
-virtual void                           getPhysicalDeviceQueueFamilyProperties2                         (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const = 0;
-virtual void                           getPhysicalDeviceMemoryProperties2                                      (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const = 0;
-virtual void                           getPhysicalDeviceSparseImageFormatProperties2           (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties) const = 0;
-virtual void                           getPhysicalDeviceExternalBufferProperties                       (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const = 0;
-virtual void                           getPhysicalDeviceExternalFenceProperties                        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const = 0;
-virtual void                           getPhysicalDeviceExternalSemaphoreProperties            (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const = 0;
-virtual void                           destroySurfaceKHR                                                                       (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult                       getPhysicalDeviceSurfaceSupportKHR                                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const = 0;
-virtual VkResult                       getPhysicalDeviceSurfaceCapabilitiesKHR                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const = 0;
-virtual VkResult                       getPhysicalDeviceSurfaceFormatsKHR                                      (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const = 0;
-virtual VkResult                       getPhysicalDeviceSurfacePresentModesKHR                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const = 0;
-virtual VkResult                       getPhysicalDevicePresentRectanglesKHR                           (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const = 0;
-virtual VkResult                       getPhysicalDeviceDisplayPropertiesKHR                           (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const = 0;
-virtual VkResult                       getPhysicalDeviceDisplayPlanePropertiesKHR                      (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const = 0;
-virtual VkResult                       getDisplayPlaneSupportedDisplaysKHR                                     (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const = 0;
-virtual VkResult                       getDisplayModePropertiesKHR                                                     (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const = 0;
-virtual VkResult                       createDisplayModeKHR                                                            (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const = 0;
-virtual VkResult                       getDisplayPlaneCapabilitiesKHR                                          (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const = 0;
-virtual VkResult                       createDisplayPlaneSurfaceKHR                                            (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkResult                       createXlibSurfaceKHR                                                            (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkBool32                       getPhysicalDeviceXlibPresentationSupportKHR                     (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID) const = 0;
-virtual VkResult                       createXcbSurfaceKHR                                                                     (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkBool32                       getPhysicalDeviceXcbPresentationSupportKHR                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id) const = 0;
-virtual VkResult                       createWaylandSurfaceKHR                                                         (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkBool32                       getPhysicalDeviceWaylandPresentationSupportKHR          (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display) const = 0;
-virtual VkResult                       createMirSurfaceKHR                                                                     (VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkBool32                       getPhysicalDeviceMirPresentationSupportKHR                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::MirConnectionPtr connection) const = 0;
-virtual VkResult                       createAndroidSurfaceKHR                                                         (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkResult                       createWin32SurfaceKHR                                                           (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkBool32                       getPhysicalDeviceWin32PresentationSupportKHR            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const = 0;
-virtual VkResult                       getPhysicalDeviceSurfaceCapabilities2KHR                        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const = 0;
-virtual VkResult                       getPhysicalDeviceSurfaceFormats2KHR                                     (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const = 0;
-virtual VkResult                       getPhysicalDeviceDisplayProperties2KHR                          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const = 0;
-virtual VkResult                       getPhysicalDeviceDisplayPlaneProperties2KHR                     (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const = 0;
-virtual VkResult                       getDisplayModeProperties2KHR                                            (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const = 0;
-virtual VkResult                       getDisplayPlaneCapabilities2KHR                                         (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const = 0;
-virtual VkResult                       createDebugReportCallbackEXT                                            (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const = 0;
-virtual void                           destroyDebugReportCallbackEXT                                           (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual void                           debugReportMessageEXT                                                           (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const = 0;
-virtual VkResult                       getPhysicalDeviceExternalImageFormatPropertiesNV        (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) const = 0;
-virtual VkResult                       createViSurfaceNN                                                                       (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual void                           getPhysicalDeviceGeneratedCommandsPropertiesNVX         (VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits) const = 0;
-virtual VkResult                       releaseDisplayEXT                                                                       (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const = 0;
-virtual VkResult                       acquireXlibDisplayEXT                                                           (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display) const = 0;
-virtual VkResult                       getRandROutputDisplayEXT                                                        (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay) const = 0;
-virtual VkResult                       getPhysicalDeviceSurfaceCapabilities2EXT                        (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const = 0;
-virtual VkResult                       createIOSSurfaceMVK                                                                     (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkResult                       createMacOSSurfaceMVK                                                           (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual void                           getPhysicalDeviceMultisamplePropertiesEXT                       (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const = 0;
-virtual void                           getPhysicalDeviceAndroidHardwareBufferUsageANDROID      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceAndroidHardwareBufferInfoANDROID* pInfo, VkAndroidHardwareBufferUsageANDROID* pUsage) const = 0;
+virtual void           destroyInstance                                                                         (VkInstance instance, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult       enumeratePhysicalDevices                                                        (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const = 0;
+virtual void           getPhysicalDeviceFeatures                                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const = 0;
+virtual void           getPhysicalDeviceFormatProperties                                       (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const = 0;
+virtual VkResult       getPhysicalDeviceImageFormatProperties                          (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const = 0;
+virtual void           getPhysicalDeviceProperties                                                     (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const = 0;
+virtual void           getPhysicalDeviceQueueFamilyProperties                          (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const = 0;
+virtual void           getPhysicalDeviceMemoryProperties                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const = 0;
+virtual VkResult       createDevice                                                                            (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const = 0;
+virtual VkResult       enumerateDeviceExtensionProperties                                      (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const = 0;
+virtual VkResult       enumerateDeviceLayerProperties                                          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const = 0;
+virtual void           getPhysicalDeviceSparseImageFormatProperties            (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties) const = 0;
+virtual VkResult       enumeratePhysicalDeviceGroups                                           (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const = 0;
+virtual void           getPhysicalDeviceFeatures2                                                      (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const = 0;
+virtual void           getPhysicalDeviceProperties2                                            (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const = 0;
+virtual void           getPhysicalDeviceFormatProperties2                                      (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const = 0;
+virtual VkResult       getPhysicalDeviceImageFormatProperties2                         (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const = 0;
+virtual void           getPhysicalDeviceQueueFamilyProperties2                         (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const = 0;
+virtual void           getPhysicalDeviceMemoryProperties2                                      (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const = 0;
+virtual void           getPhysicalDeviceSparseImageFormatProperties2           (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties) const = 0;
+virtual void           getPhysicalDeviceExternalBufferProperties                       (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const = 0;
+virtual void           getPhysicalDeviceExternalFenceProperties                        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const = 0;
+virtual void           getPhysicalDeviceExternalSemaphoreProperties            (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const = 0;
+virtual void           destroySurfaceKHR                                                                       (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult       getPhysicalDeviceSurfaceSupportKHR                                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const = 0;
+virtual VkResult       getPhysicalDeviceSurfaceCapabilitiesKHR                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const = 0;
+virtual VkResult       getPhysicalDeviceSurfaceFormatsKHR                                      (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const = 0;
+virtual VkResult       getPhysicalDeviceSurfacePresentModesKHR                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const = 0;
+virtual VkResult       getPhysicalDevicePresentRectanglesKHR                           (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const = 0;
+virtual VkResult       getPhysicalDeviceDisplayPropertiesKHR                           (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const = 0;
+virtual VkResult       getPhysicalDeviceDisplayPlanePropertiesKHR                      (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const = 0;
+virtual VkResult       getDisplayPlaneSupportedDisplaysKHR                                     (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const = 0;
+virtual VkResult       getDisplayModePropertiesKHR                                                     (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const = 0;
+virtual VkResult       createDisplayModeKHR                                                            (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const = 0;
+virtual VkResult       getDisplayPlaneCapabilitiesKHR                                          (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const = 0;
+virtual VkResult       createDisplayPlaneSurfaceKHR                                            (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       createXlibSurfaceKHR                                                            (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceXlibPresentationSupportKHR                     (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID) const = 0;
+virtual VkResult       createXcbSurfaceKHR                                                                     (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceXcbPresentationSupportKHR                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id) const = 0;
+virtual VkResult       createWaylandSurfaceKHR                                                         (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceWaylandPresentationSupportKHR          (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display) const = 0;
+virtual VkResult       createMirSurfaceKHR                                                                     (VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceMirPresentationSupportKHR                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::MirConnectionPtr connection) const = 0;
+virtual VkResult       createAndroidSurfaceKHR                                                         (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       createWin32SurfaceKHR                                                           (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceWin32PresentationSupportKHR            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const = 0;
+virtual VkResult       getPhysicalDeviceSurfaceCapabilities2KHR                        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const = 0;
+virtual VkResult       getPhysicalDeviceSurfaceFormats2KHR                                     (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const = 0;
+virtual VkResult       getPhysicalDeviceDisplayProperties2KHR                          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const = 0;
+virtual VkResult       getPhysicalDeviceDisplayPlaneProperties2KHR                     (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const = 0;
+virtual VkResult       getDisplayModeProperties2KHR                                            (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const = 0;
+virtual VkResult       getDisplayPlaneCapabilities2KHR                                         (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const = 0;
+virtual VkResult       createDebugReportCallbackEXT                                            (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const = 0;
+virtual void           destroyDebugReportCallbackEXT                                           (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void           debugReportMessageEXT                                                           (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const = 0;
+virtual VkResult       getPhysicalDeviceExternalImageFormatPropertiesNV        (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) const = 0;
+virtual VkResult       createViSurfaceNN                                                                       (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual void           getPhysicalDeviceGeneratedCommandsPropertiesNVX         (VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits) const = 0;
+virtual VkResult       releaseDisplayEXT                                                                       (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const = 0;
+virtual VkResult       acquireXlibDisplayEXT                                                           (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display) const = 0;
+virtual VkResult       getRandROutputDisplayEXT                                                        (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay) const = 0;
+virtual VkResult       getPhysicalDeviceSurfaceCapabilities2EXT                        (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const = 0;
+virtual VkResult       createIOSSurfaceMVK                                                                     (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       createMacOSSurfaceMVK                                                           (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual void           getPhysicalDeviceMultisamplePropertiesEXT                       (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const = 0;
+virtual void           getPhysicalDeviceAndroidHardwareBufferUsageANDROID      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceAndroidHardwareBufferInfoANDROID* pInfo, VkAndroidHardwareBufferUsageANDROID* pUsage) const = 0;
index 49161452b7def45287444d0e913cd4d08e39afd2..c990873510c5284faaace6beb0656188a3db5479 100644 (file)
@@ -149,10 +149,11 @@ private:
        {
                                                                                SparseContext                                   (Move<VkDevice>&                        device,
                                                                                                                                                 const deUint32                         queueFamilyIndex,
-                                                                                                                                                const InstanceInterface&       interface)
+                                                                                                                                                const PlatformInterface&       platformInterface,
+                                                                                                                                                VkInstance                                     instance)
                                                                                : m_device                                              (device)
                                                                                , m_queueFamilyIndex                    (queueFamilyIndex)
-                                                                               , m_deviceInterface                             (interface, *m_device)
+                                                                               , m_deviceInterface                             (platformInterface, instance, *m_device)
                {
                }
 
@@ -217,9 +218,9 @@ private:
                                &deviceFeatures
                        };
 
-                       Move<VkDevice>                          device                                                  = createDevice(vk, physicalDevice, &deviceInfo);
+                       Move<VkDevice>                          device                                                  = createDevice(m_context.getPlatformInterface(), m_context.getInstance(), vk, physicalDevice, &deviceInfo);
 
-                       return new SparseContext(device, queueIndex, vk);
+                       return new SparseContext(device, queueIndex, m_context.getPlatformInterface(), m_context.getInstance());
                }
 
                return DE_NULL;
index 0af841d019cfc45af985913edccce7e180da966b..64ccbe95898bede58ef33d0ec0021621f2c26a08 100644 (file)
@@ -417,8 +417,8 @@ tcu::TestStatus createDeviceTest (Context& context)
                DE_NULL,                                                                //pEnabledFeatures;
        };
 
-       const Unique<VkDevice>                  device                                  (createDevice(instanceDriver, physicalDevice, &deviceCreateInfo));
-       const DeviceDriver                              deviceDriver                    (instanceDriver, device.get());
+       const Unique<VkDevice>                  device                                  (createDevice(platformInterface, *instance, instanceDriver, physicalDevice, &deviceCreateInfo));
+       const DeviceDriver                              deviceDriver                    (platformInterface, instance.get(), device.get());
        const VkQueue                                   queue                                   = getDeviceQueue(deviceDriver, *device,  queueFamilyIndex, queueIndex);
 
        VK_CHECK(deviceDriver.queueWaitIdle(queue));
@@ -476,7 +476,7 @@ tcu::TestStatus createMultipleDevicesTest (Context& context)
                        }
 
                        {
-                               const DeviceDriver      deviceDriver    (instanceDriver, devices[deviceNdx]);
+                               const DeviceDriver      deviceDriver    (platformInterface, instance.get(), devices[deviceNdx]);
                                const VkQueue           queue                   = getDeviceQueue(deviceDriver, devices[deviceNdx], queueFamilyIndex, queueIndex);
 
                                VK_CHECK(deviceDriver.queueWaitIdle(queue));
@@ -493,7 +493,7 @@ tcu::TestStatus createMultipleDevicesTest (Context& context)
                {
                        if (devices[deviceNdx] != (VkDevice)DE_NULL)
                        {
-                               DeviceDriver deviceDriver(instanceDriver, devices[deviceNdx]);
+                               DeviceDriver deviceDriver(platformInterface, instance.get(), devices[deviceNdx]);
                                deviceDriver.destroyDevice(devices[deviceNdx], DE_NULL/*pAllocator*/);
                        }
                }
@@ -505,7 +505,7 @@ tcu::TestStatus createMultipleDevicesTest (Context& context)
        {
                if (devices[deviceNdx] != (VkDevice)DE_NULL)
                {
-                       DeviceDriver deviceDriver(instanceDriver, devices[deviceNdx]);
+                       DeviceDriver deviceDriver(platformInterface, instance.get(), devices[deviceNdx]);
                        deviceDriver.destroyDevice(devices[deviceNdx], DE_NULL/*pAllocator*/);
                }
        }
@@ -557,7 +557,7 @@ tcu::TestStatus createDeviceWithUnsupportedExtensionsTest (Context& context)
 
                if (device)
                {
-                       const DeviceDriver      deviceIface     (instanceDriver, device);
+                       const DeviceDriver      deviceIface     (platformInterface, instance.get(), device);
                        deviceIface.destroyDevice(device, DE_NULL/*pAllocator*/);
                }
 
@@ -631,8 +631,8 @@ tcu::TestStatus createDeviceWithVariousQueueCountsTest (Context& context)
                        DE_NULL,                                                                //ppEnabledExtensionNames;
                        DE_NULL,                                                                //pEnabledFeatures;
                };
-               const Unique<VkDevice>                  device                          (createDevice(instanceDriver, physicalDevice, &deviceCreateInfo));
-               const DeviceDriver                              deviceDriver            (instanceDriver, device.get());
+               const Unique<VkDevice>                  device                          (createDevice(platformInterface, *instance, instanceDriver, physicalDevice, &deviceCreateInfo));
+               const DeviceDriver                              deviceDriver            (platformInterface, instance.get(), device.get());
                const deUint32                                  queueFamilyIndex        = deviceCreateInfo.pQueueCreateInfos->queueFamilyIndex;
                const deUint32                                  queueCount                      = deviceCreateInfo.pQueueCreateInfos->queueCount;
 
@@ -719,8 +719,8 @@ tcu::TestStatus createDeviceFeatures2Test (Context& context)
        vki.getPhysicalDeviceFeatures2(physicalDevice, &enabledFeatures);
 
        {
-               const Unique<VkDevice>  device          (createDevice(vki, physicalDevice, &deviceCreateInfo));
-               const DeviceDriver              vkd                     (vki, device.get());
+               const Unique<VkDevice>  device          (createDevice(vkp, *instance, vki, physicalDevice, &deviceCreateInfo));
+               const DeviceDriver              vkd                     (vkp, instance.get(), device.get());
                const VkQueue                   queue           = getDeviceQueue(vkd, *device, queueFamilyIndex, queueIndex);
 
                VK_CHECK(vkd.queueWaitIdle(queue));
@@ -927,8 +927,8 @@ tcu::TestStatus createDeviceQueue2Test (Context& context)
        };
 
        {
-               const Unique<VkDevice>                          device                                  (createDevice(instanceDriver, physicalDevice, &deviceCreateInfo));
-               const DeviceDriver                                      deviceDriver                    (instanceDriver, device.get());
+               const Unique<VkDevice>                          device                                  (createDevice(platformInterface, instance, instanceDriver, physicalDevice, &deviceCreateInfo));
+               const DeviceDriver                                      deviceDriver                    (platformInterface, instance, device.get());
                const VkQueue                                           queue2                                  = getDeviceQueue2(deviceDriver, *device, &deviceQueueInfo2);
 
                VK_CHECK(deviceDriver.queueWaitIdle(queue2));
@@ -982,8 +982,8 @@ tcu::TestStatus createDeviceQueue2UnmatchedFlagsTest (Context& context)
        };
 
        {
-               const Unique<VkDevice>          device                                  (createDevice(instanceDriver, physicalDevice, &deviceCreateInfo));
-               const DeviceDriver                      deviceDriver                    (instanceDriver, device.get());
+               const Unique<VkDevice>          device                                  (createDevice(platformInterface, instance, instanceDriver, physicalDevice, &deviceCreateInfo));
+               const DeviceDriver                      deviceDriver                    (platformInterface, instance, device.get());
                const VkQueue                           queue2                                  = getDeviceQueue2(deviceDriver, *device, &deviceQueueInfo2);
 
                if (queue2 != DE_NULL)
@@ -1316,7 +1316,7 @@ tcu::TestStatus createInstanceDeviceIntentionalAllocFail (Context& context)
                else if (result != VK_SUCCESS)
                        return tcu::TestStatus::fail("VkCreateDevice returned " + de::toString(result));
 
-               DeviceDriver(vki, device).destroyDevice(device, &allocationCallbacks);
+               DeviceDriver(vkp, instance, device).destroyDevice(device, &allocationCallbacks);
                vki.destroyInstance(instance, &allocationCallbacks);
                freeAllocTracker();
        }
index beee0ea37070442f9a86e5bbc51174d5e80b7142..848800c6a80f602f691e0ea8e47cc4ca89f595bd 100644 (file)
@@ -221,6 +221,8 @@ vk::Move<vk::VkInstance> createInstance (const vk::PlatformInterface&                                       vkp,
 }
 
 vk::Move<vk::VkDevice> createDevice (const deUint32                                                                    apiVersion,
+                                                                        const vk::PlatformInterface&                                   vkp,
+                                                                        vk::VkInstance                                                                 instance,
                                                                         const vk::InstanceInterface&                                   vki,
                                                                         vk::VkPhysicalDevice                                                   physicalDevice,
                                                                         const vk::VkExternalSemaphoreHandleTypeFlags   externalSemaphoreTypes,
@@ -316,7 +318,7 @@ vk::Move<vk::VkDevice> createDevice (const deUint32                                                                 apiVersion,
 
        try
        {
-               return vk::createDevice(vki, physicalDevice, &deviceCreateInfo);
+               return vk::createDevice(vkp, instance, vki, physicalDevice, &deviceCreateInfo);
        }
        catch (const vk::Error& error)
        {
@@ -747,8 +749,8 @@ tcu::TestStatus testSemaphoreWin32Create (Context&                                  context,
        checkSemaphoreSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>                                  device                  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                                                  vkd                             (vki, *device);
+               const vk::Unique<vk::VkDevice>                                  device                  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                                                  vkd                             (vkp, *instance, *device);
                const vk::VkQueue                                                               queue                   (getQueue(vkd, *device, queueFamilyIndex));
                const vk::VkExportSemaphoreWin32HandleInfoKHR   win32ExportInfo =
                {
@@ -818,8 +820,8 @@ tcu::TestStatus testSemaphoreImportTwice (Context&                                  context,
        checkSemaphoreSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>          device                  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                             (vki, *device);
+               const vk::Unique<vk::VkDevice>          device                  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                             (vkp, *instance, *device);
                const vk::VkQueue                                       queue                   (getQueue(vkd, *device, queueFamilyIndex));
                const vk::Unique<vk::VkSemaphore>       semaphore               (createExportableSemaphore(vkd, *device, config.externalType));
                NativeHandle                                            handleA;
@@ -865,8 +867,8 @@ tcu::TestStatus testSemaphoreImportReimport (Context&                                       context,
        checkSemaphoreSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>          device                  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                             (vki, *device);
+               const vk::Unique<vk::VkDevice>          device                  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                             (vkp, *instance, *device);
                const vk::VkQueue                                       queue                   (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkSemaphore>       semaphoreA              (createExportableSemaphore(vkd, *device, config.externalType));
@@ -911,8 +913,8 @@ tcu::TestStatus testSemaphoreSignalExportImportWait (Context&                                       context,
        checkSemaphoreSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>          device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                                     (vki, *device);
+               const vk::Unique<vk::VkDevice>          device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                                     (vkp, *instance, *device);
                const vk::VkQueue                                       queue                           (getQueue(vkd, *device, queueFamilyIndex));
                const vk::Unique<vk::VkSemaphore>       semaphoreA                      (createExportableSemaphore(vkd, *device, config.externalType));
                {
@@ -947,8 +949,8 @@ tcu::TestStatus testSemaphoreExportSignalImportWait (Context&                                       context,
        checkSemaphoreSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>          device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                                     (vki, *device);
+               const vk::Unique<vk::VkDevice>          device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                                     (vkp, *instance, *device);
                const vk::VkQueue                                       queue                           (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkSemaphore>       semaphoreA                      (createExportableSemaphore(vkd, *device, config.externalType));
@@ -984,8 +986,8 @@ tcu::TestStatus testSemaphoreExportImportSignalWait (Context&                                       context,
 
        {
                const vk::VkSemaphoreImportFlags        flags           = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_SEMAPHORE_IMPORT_TEMPORARY_BIT : (vk::VkSemaphoreImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                     (vkp, *instance, *device);
                const vk::VkQueue                                       queue           (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkSemaphore>       semaphoreA      (createExportableSemaphore(vkd, *device, config.externalType));
@@ -1018,8 +1020,8 @@ tcu::TestStatus testSemaphoreSignalImport (Context&                                               context,
 
        {
                const vk::VkSemaphoreImportFlags        flags           = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_SEMAPHORE_IMPORT_TEMPORARY_BIT : (vk::VkSemaphoreImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                     (vkp, *instance, *device);
                const vk::VkQueue                                       queue           (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkSemaphore>       semaphoreA      (createExportableSemaphore(vkd, *device, config.externalType));
@@ -1066,8 +1068,8 @@ tcu::TestStatus testSemaphoreSignalWaitImport (Context&                                           context,
 
        {
                const vk::VkSemaphoreImportFlags        flags           = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_SEMAPHORE_IMPORT_TEMPORARY_BIT : (vk::VkSemaphoreImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                     (vkp, *instance, *device);
                const vk::VkQueue                                       queue           (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkSemaphore>       semaphoreA      (createExportableSemaphore(vkd, *device, config.externalType));
@@ -1116,8 +1118,8 @@ tcu::TestStatus testSemaphoreMultipleExports (Context&                                    context,
        checkSemaphoreSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                     (vkp, *instance, *device);
                const vk::VkQueue                                       queue           (getQueue(vkd, *device, queueFamilyIndex));
                const vk::Unique<vk::VkSemaphore>       semaphore       (createExportableSemaphore(vkd, *device, config.externalType));
 
@@ -1155,8 +1157,8 @@ tcu::TestStatus testSemaphoreMultipleImports (Context&                                    context,
 
        {
                const vk::VkSemaphoreImportFlags        flags           = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_SEMAPHORE_IMPORT_TEMPORARY_BIT : (vk::VkSemaphoreImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                     (vkp, *instance, *device);
                const vk::VkQueue                                       queue           (getQueue(vkd, *device, queueFamilyIndex));
                const vk::Unique<vk::VkSemaphore>       semaphoreA      (createExportableSemaphore(vkd, *device, config.externalType));
                NativeHandle                                            handleA;
@@ -1205,8 +1207,8 @@ tcu::TestStatus testSemaphoreTransference (Context&                                               context,
 
        {
                const vk::VkSemaphoreImportFlags        flags           = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_SEMAPHORE_IMPORT_TEMPORARY_BIT : (vk::VkSemaphoreImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(),  vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                     (vkp, *instance, *device);
                const vk::VkQueue                                       queue           (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkSemaphore>       semaphoreA      (createExportableSemaphore(vkd, *device, config.externalType));
@@ -1298,8 +1300,8 @@ tcu::TestStatus testSemaphoreFdDup (Context&                                      context,
 
        {
                const vk::VkSemaphoreImportFlags        flags           = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_SEMAPHORE_IMPORT_TEMPORARY_BIT : (vk::VkSemaphoreImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                     (vkp, *instance, *device);
                const vk::VkQueue                                       queue           (getQueue(vkd, *device, queueFamilyIndex));
 
                TestLog&                                                        log                     = context.getTestContext().getLog();
@@ -1361,8 +1363,8 @@ tcu::TestStatus testSemaphoreFdDup2 (Context&                                     context,
 
        {
                const vk::VkSemaphoreImportFlags        flags           = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_SEMAPHORE_IMPORT_TEMPORARY_BIT : (vk::VkSemaphoreImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                     (vkp, *instance, *device);
                const vk::VkQueue                                       queue           (getQueue(vkd, *device, queueFamilyIndex));
 
                TestLog&                                                        log                     = context.getTestContext().getLog();
@@ -1430,8 +1432,8 @@ tcu::TestStatus testSemaphoreFdDup3 (Context&                                     context,
        checkSemaphoreSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                     (vkp, *instance, *device);
                const vk::VkQueue                                       queue           (getQueue(vkd, *device, queueFamilyIndex));
 
                TestLog&                                                        log                     = context.getTestContext().getLog();
@@ -1500,8 +1502,8 @@ tcu::TestStatus testSemaphoreFdSendOverSocket (Context&                                           context,
        checkSemaphoreSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                          vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>          device          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, config.externalType, 0u, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                          vkd                     (vkp, *instance, *device);
                const vk::VkQueue                                       queue           (getQueue(vkd, *device, queueFamilyIndex));
 
                TestLog&                                                        log                     = context.getTestContext().getLog();
@@ -1687,8 +1689,8 @@ tcu::TestStatus testFenceWin32Create (Context&                            context,
        checkFenceSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>                          device                  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                                          vkd                             (vki, *device);
+               const vk::Unique<vk::VkDevice>                          device                  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                                          vkd                             (vkp, *instance, *device);
                const vk::VkQueue                                                       queue                   (getQueue(vkd, *device, queueFamilyIndex));
                const vk::VkExportFenceWin32HandleInfoKHR       win32ExportInfo =
                {
@@ -1758,8 +1760,8 @@ tcu::TestStatus testFenceImportTwice (Context&                            context,
        checkFenceSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>  device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>  device          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd                     (vkp, *instance, *device);
                const vk::VkQueue                               queue           (getQueue(vkd, *device, queueFamilyIndex));
                const vk::Unique<vk::VkFence>   fence           (createExportableFence(vkd, *device, config.externalType));
                NativeHandle                                    handleA;
@@ -1805,8 +1807,8 @@ tcu::TestStatus testFenceImportReimport (Context&                         context,
        checkFenceSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd             (vki, *device);
+               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, *instance, *device);
                const vk::VkQueue                               queue   (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkFence>   fenceA  (createExportableFence(vkd, *device, config.externalType));
@@ -1851,8 +1853,8 @@ tcu::TestStatus testFenceSignalExportImportWait (Context&                         context,
        checkFenceSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd             (vki, *device);
+               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, *instance, *device);
                const vk::VkQueue                               queue   (getQueue(vkd, *device, queueFamilyIndex));
                const vk::Unique<vk::VkFence>   fenceA  (createExportableFence(vkd, *device, config.externalType));
 
@@ -1888,8 +1890,8 @@ tcu::TestStatus testFenceExportSignalImportWait (Context&                         context,
        checkFenceSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd             (vki, *device);
+               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, *instance, *device);
                const vk::VkQueue                               queue   (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkFence>   fenceA  (createExportableFence(vkd, *device, config.externalType));
@@ -1925,8 +1927,8 @@ tcu::TestStatus testFenceExportImportSignalWait (Context&                         context,
 
        {
                const vk::VkFenceImportFlags    flags           = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_FENCE_IMPORT_TEMPORARY_BIT : (vk::VkFenceImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>  device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>  device          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd                     (vkp, *instance, *device);
                const vk::VkQueue                               queue           (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkFence>   fenceA  (createExportableFence(vkd, *device, config.externalType));
@@ -1959,8 +1961,8 @@ tcu::TestStatus testFenceSignalImport (Context&                                   context,
 
        {
                const vk::VkFenceImportFlags    flags   = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_FENCE_IMPORT_TEMPORARY_BIT : (vk::VkFenceImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd             (vki, *device);
+               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, *instance, *device);
                const vk::VkQueue                               queue   (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkFence>   fenceA  (createExportableFence(vkd, *device, config.externalType));
@@ -2007,8 +2009,8 @@ tcu::TestStatus testFenceReset (Context&                          context,
 
        {
                const vk::VkFenceImportFlags    flags   = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_FENCE_IMPORT_TEMPORARY_BIT : (vk::VkFenceImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd             (vki, *device);
+               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, *instance, *device);
                const vk::VkQueue                               queue   (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkFence>   fenceA  (createExportableFence(vkd, *device, config.externalType));
@@ -2074,8 +2076,8 @@ tcu::TestStatus testFenceSignalWaitImport (Context&                                       context,
 
        {
                const vk::VkFenceImportFlags    flags           = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_FENCE_IMPORT_TEMPORARY_BIT : (vk::VkFenceImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>  device          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd                     (vki, *device);
+               const vk::Unique<vk::VkDevice>  device          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd                     (vkp, *instance, *device);
                const vk::VkQueue                               queue           (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkFence>   fenceA  (createExportableFence(vkd, *device, config.externalType));
@@ -2124,8 +2126,8 @@ tcu::TestStatus testFenceMultipleExports (Context&                                context,
        checkFenceSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd             (vki, *device);
+               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, *instance, *device);
                const vk::VkQueue                               queue   (getQueue(vkd, *device, queueFamilyIndex));
                const vk::Unique<vk::VkFence>   fence   (createExportableFence(vkd, *device, config.externalType));
 
@@ -2163,8 +2165,8 @@ tcu::TestStatus testFenceMultipleImports (Context&                                context,
 
        {
                const vk::VkFenceImportFlags    flags   = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_FENCE_IMPORT_TEMPORARY_BIT : (vk::VkFenceImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd             (vki, *device);
+               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, *instance, *device);
                const vk::VkQueue                               queue   (getQueue(vkd, *device, queueFamilyIndex));
                const vk::Unique<vk::VkFence>   fenceA  (createExportableFence(vkd, *device, config.externalType));
                NativeHandle                                    handleA;
@@ -2213,8 +2215,8 @@ tcu::TestStatus testFenceTransference (Context&                                   context,
 
        {
                const vk::VkFenceImportFlags    flags   = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_FENCE_IMPORT_TEMPORARY_BIT : (vk::VkFenceImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd             (vki, *device);
+               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, *instance, *device);
                const vk::VkQueue                               queue   (getQueue(vkd, *device, queueFamilyIndex));
 
                const vk::Unique<vk::VkFence>   fenceA  (createExportableFence(vkd, *device, config.externalType));
@@ -2312,8 +2314,8 @@ tcu::TestStatus testFenceFdDup (Context&                          context,
 
        {
                const vk::VkFenceImportFlags    flags   = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_FENCE_IMPORT_TEMPORARY_BIT : (vk::VkFenceImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd             (vki, *device);
+               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, *instance, *device);
                const vk::VkQueue                               queue   (getQueue(vkd, *device, queueFamilyIndex));
 
                TestLog&                                                log             = context.getTestContext().getLog();
@@ -2375,8 +2377,8 @@ tcu::TestStatus testFenceFdDup2 (Context&                         context,
 
        {
                const vk::VkFenceImportFlags    flags   = config.permanence == PERMANENCE_TEMPORARY ? vk::VK_FENCE_IMPORT_TEMPORARY_BIT : (vk::VkFenceImportFlagBits)0u;
-               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd             (vki, *device);
+               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, *instance, *device);
                const vk::VkQueue                               queue   (getQueue(vkd, *device, queueFamilyIndex));
 
                TestLog&                                                log             = context.getTestContext().getLog();
@@ -2444,8 +2446,8 @@ tcu::TestStatus testFenceFdDup3 (Context&                         context,
        checkFenceSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd             (vki, *device);
+               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, *instance, *device);
                const vk::VkQueue                               queue   (getQueue(vkd, *device, queueFamilyIndex));
 
                TestLog&                                                log             = context.getTestContext().getLog();
@@ -2514,8 +2516,8 @@ tcu::TestStatus testFenceFdSendOverSocket (Context&                                       context,
        checkFenceSupport(vki, physicalDevice, config.externalType);
 
        {
-               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
-               const vk::DeviceDriver                  vkd             (vki, *device);
+               const vk::Unique<vk::VkDevice>  device  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, 0u, config.externalType, queueFamilyIndex));
+               const vk::DeviceDriver                  vkd             (vkp, *instance, *device);
                const vk::VkQueue                               queue   (getQueue(vkd, *device, queueFamilyIndex));
 
                TestLog&                                                log             = context.getTestContext().getLog();
@@ -2724,8 +2726,8 @@ tcu::TestStatus testBufferQueries (Context& context, vk::VkExternalMemoryHandleT
                                // \note We need to re-create with dedicated mem extensions if previous device instance didn't have them
                                try
                                {
-                                       device                          = createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, externalType, 0u, queueFamilyIndex, requiresDedicated);
-                                       vkd                                     = de::MovePtr<vk::DeviceDriver>(new vk::DeviceDriver(vki, *device));
+                                       device                          = createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, externalType, 0u, queueFamilyIndex, requiresDedicated);
+                                       vkd                                     = de::MovePtr<vk::DeviceDriver>(new vk::DeviceDriver(vkp, *instance, *device));
                                        deviceHasDedicated      = requiresDedicated;
                                }
                                catch (const tcu::NotSupportedError& e)
@@ -2799,8 +2801,8 @@ tcu::TestStatus testMemoryWin32Create (Context& context, MemoryTestConfig config
        const vk::InstanceDriver                                        vki                                     (vkp, *instance);
        const vk::VkPhysicalDevice                                      physicalDevice          (vk::chooseDevice(vki, *instance, context.getTestContext().getCommandLine()));
        const deUint32                                                          queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
-       const vk::Unique<vk::VkDevice>                          device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
-       const vk::DeviceDriver                                          vkd                                     (vki, *device);
+       const vk::Unique<vk::VkDevice>                          device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
+       const vk::DeviceDriver                                          vkd                                     (vkp, *instance, *device);
        const vk::VkBufferUsageFlags                            usage                           = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
        const deUint32                                                          seed                            = 1261033864u;
        const vk::VkDeviceSize                                          bufferSize                      = 1024;
@@ -2881,8 +2883,8 @@ tcu::TestStatus testMemoryImportTwice (Context& context, MemoryTestConfig config
        const vk::InstanceDriver                                vki                                     (vkp, *instance);
        const vk::VkPhysicalDevice                              physicalDevice          (vk::chooseDevice(vki, *instance, context.getTestContext().getCommandLine()));
        const deUint32                                                  queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
-       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
-       const vk::DeviceDriver                                  vkd                                     (vki, *device);
+       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
+       const vk::DeviceDriver                                  vkd                                     (vkp, *instance, *device);
        const vk::VkBufferUsageFlags                    usage                           = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
        const deUint32                                                  seed                            = 1261033864u;
        const vk::VkDeviceSize                                  bufferSize                      = 1024;
@@ -2934,8 +2936,8 @@ tcu::TestStatus testMemoryMultimpleImports (Context& context, MemoryTestConfig c
        const vk::InstanceDriver                                vki                                     (vkp, *instance);
        const vk::VkPhysicalDevice                              physicalDevice          (vk::chooseDevice(vki, *instance, context.getTestContext().getCommandLine()));
        const deUint32                                                  queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
-       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
-       const vk::DeviceDriver                                  vkd                                     (vki, *device);
+       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
+       const vk::DeviceDriver                                  vkd                                     (vkp, *instance, *device);
        const vk::VkBufferUsageFlags                    usage                           = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
        const vk::VkDeviceSize                                  bufferSize                      = 1024;
 
@@ -2967,8 +2969,8 @@ tcu::TestStatus testMemoryMultimpleExports (Context& context, MemoryTestConfig c
        const vk::InstanceDriver                                vki                                     (vkp, *instance);
        const vk::VkPhysicalDevice                              physicalDevice          (vk::chooseDevice(vki, *instance, context.getTestContext().getCommandLine()));
        const deUint32                                                  queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
-       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
-       const vk::DeviceDriver                                  vkd                                     (vki, *device);
+       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
+       const vk::DeviceDriver                                  vkd                                     (vkp, *instance, *device);
        const vk::VkBufferUsageFlags                    usage                           = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
        const vk::VkDeviceSize                                  bufferSize                      = 1024;
 
@@ -2999,8 +3001,8 @@ tcu::TestStatus testMemoryFdDup (Context& context, MemoryTestConfig config)
        const deUint32                                          queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
 
        {
-               const vk::Unique<vk::VkDevice>                  device                  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                                  vkd                             (vki, *device);
+               const vk::Unique<vk::VkDevice>                  device                  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                                  vkd                             (vkp, *instance, *device);
 
                TestLog&                                                                log                             = context.getTestContext().getLog();
                const vk::VkBufferUsageFlags                    usage                   = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
@@ -3060,8 +3062,8 @@ tcu::TestStatus testMemoryFdDup2 (Context& context, MemoryTestConfig config)
        const deUint32                                          queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
 
        {
-               const vk::Unique<vk::VkDevice>                  device                  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                                  vkd                             (vki, *device);
+               const vk::Unique<vk::VkDevice>                  device                  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                                  vkd                             (vkp, *instance, *device);
 
                TestLog&                                                                log                             = context.getTestContext().getLog();
                const vk::VkBufferUsageFlags                    usage                   = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
@@ -3122,8 +3124,8 @@ tcu::TestStatus testMemoryFdDup3 (Context& context, MemoryTestConfig config)
        const deUint32                                          queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
 
        {
-               const vk::Unique<vk::VkDevice>                  device                  (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                                  vkd                             (vki, *device);
+               const vk::Unique<vk::VkDevice>                  device                  (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                                  vkd                             (vkp, *instance, *device);
 
                TestLog&                                                                log                             = context.getTestContext().getLog();
                const vk::VkBufferUsageFlags                    usage                   = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
@@ -3184,8 +3186,8 @@ tcu::TestStatus testMemoryFdSendOverSocket (Context& context, MemoryTestConfig c
        const deUint32                                                          queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
 
        {
-               const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
-               const vk::DeviceDriver                                  vkd                                     (vki, *device);
+               const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex));
+               const vk::DeviceDriver                                  vkd                                     (vkp, *instance, *device);
 
                TestLog&                                                                log                                     = context.getTestContext().getLog();
                const vk::VkBufferUsageFlags                    usage                           = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
@@ -3337,8 +3339,8 @@ tcu::TestStatus testBufferBindExportImportBind (Context&                          context,
        const vk::InstanceDriver                                vki                                     (vkp, *instance);
        const vk::VkPhysicalDevice                              physicalDevice          (vk::chooseDevice(vki, *instance, context.getTestContext().getCommandLine()));
        const deUint32                                                  queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
-       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex, config.dedicated));
-       const vk::DeviceDriver                                  vkd                                     (vki, *device);
+       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex, config.dedicated));
+       const vk::DeviceDriver                                  vkd                                     (vkp, *instance, *device);
        const vk::VkBufferUsageFlags                    usage                           = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
        const vk::VkDeviceSize                                  bufferSize                      = 1024;
 
@@ -3373,8 +3375,8 @@ tcu::TestStatus testBufferExportBindImportBind (Context&                          context,
        const vk::InstanceDriver                                vki                                     (vkp, *instance);
        const vk::VkPhysicalDevice                              physicalDevice          (vk::chooseDevice(vki, *instance, context.getTestContext().getCommandLine()));
        const deUint32                                                  queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
-       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex, config.dedicated));
-       const vk::DeviceDriver                                  vkd                                     (vki, *device);
+       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex, config.dedicated));
+       const vk::DeviceDriver                                  vkd                                     (vkp, *instance, *device);
        const vk::VkBufferUsageFlags                    usage                           = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
        const vk::VkDeviceSize                                  bufferSize                      = 1024;
 
@@ -3408,8 +3410,8 @@ tcu::TestStatus testBufferExportImportBindBind (Context&                          context,
        const vk::InstanceDriver                                vki                                     (vkp, *instance);
        const vk::VkPhysicalDevice                              physicalDevice          (vk::chooseDevice(vki, *instance, context.getTestContext().getCommandLine()));
        const deUint32                                                  queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
-       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex, config.dedicated));
-       const vk::DeviceDriver                                  vkd                                     (vki, *device);
+       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex, config.dedicated));
+       const vk::DeviceDriver                                  vkd                                     (vkp, *instance, *device);
        const vk::VkBufferUsageFlags                    usage                           = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
        const vk::VkDeviceSize                                  bufferSize                      = 1024;
 
@@ -3544,8 +3546,8 @@ tcu::TestStatus testImageQueries (Context& context, vk::VkExternalMemoryHandleTy
                                // \note We need to re-create with dedicated mem extensions if previous device instance didn't have them
                                try
                                {
-                                       device                          = createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, externalType, 0u, queueFamilyIndex, requiresDedicated);
-                                       vkd                                     = de::MovePtr<vk::DeviceDriver>(new vk::DeviceDriver(vki, *device));
+                                       device                          = createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, externalType, 0u, queueFamilyIndex, requiresDedicated);
+                                       vkd                                     = de::MovePtr<vk::DeviceDriver>(new vk::DeviceDriver(vkp, *instance, *device));
                                        deviceHasDedicated      = requiresDedicated;
                                }
                                catch (const tcu::NotSupportedError& e)
@@ -3606,8 +3608,8 @@ tcu::TestStatus testImageBindExportImportBind (Context&                                   context,
        const vk::InstanceDriver                                vki                                     (vkp, *instance);
        const vk::VkPhysicalDevice                              physicalDevice          (vk::chooseDevice(vki, *instance, context.getTestContext().getCommandLine()));
        const deUint32                                                  queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
-       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex, config.dedicated));
-       const vk::DeviceDriver                                  vkd                                     (vki, *device);
+       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex, config.dedicated));
+       const vk::DeviceDriver                                  vkd                                     (vkp, *instance, *device);
        const vk::VkImageUsageFlags                             usage                           = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
        const vk::VkFormat                                              format                          = vk::VK_FORMAT_R8G8B8A8_UNORM;
        const deUint32                                                  width                           = 64u;
@@ -3646,8 +3648,8 @@ tcu::TestStatus testImageExportBindImportBind (Context&                                   context,
        const vk::InstanceDriver                                vki                                     (vkp, *instance);
        const vk::VkPhysicalDevice                              physicalDevice          (vk::chooseDevice(vki, *instance, context.getTestContext().getCommandLine()));
        const deUint32                                                  queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
-       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex, config.dedicated));
-       const vk::DeviceDriver                                  vkd                                     (vki, *device);
+       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex, config.dedicated));
+       const vk::DeviceDriver                                  vkd                                     (vkp, *instance, *device);
        const vk::VkImageUsageFlags                             usage                           = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
        const vk::VkFormat                                              format                          = vk::VK_FORMAT_R8G8B8A8_UNORM;
        const deUint32                                                  width                           = 64u;
@@ -3685,8 +3687,8 @@ tcu::TestStatus testImageExportImportBindBind (Context&                                   context,
        const vk::InstanceDriver                                vki                                     (vkp, *instance);
        const vk::VkPhysicalDevice                              physicalDevice          (vk::chooseDevice(vki, *instance, context.getTestContext().getCommandLine()));
        const deUint32                                                  queueFamilyIndex        (chooseQueueFamilyIndex(vki, physicalDevice, 0u));
-       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex, config.dedicated));
-       const vk::DeviceDriver                                  vkd                                     (vki, *device);
+       const vk::Unique<vk::VkDevice>                  device                          (createDevice(context.getUsedApiVersion(), vkp, *instance, vki, physicalDevice, 0u, config.externalType, 0u, queueFamilyIndex, config.dedicated));
+       const vk::DeviceDriver                                  vkd                                     (vkp, *instance, *device);
        const vk::VkImageUsageFlags                             usage                           = vk::VK_BUFFER_USAGE_TRANSFER_SRC_BIT|vk::VK_BUFFER_USAGE_TRANSFER_DST_BIT;
        const vk::VkFormat                                              format                          = vk::VK_FORMAT_R8G8B8A8_UNORM;
        const deUint32                                                  width                           = 64u;
index 0024ecdc0d68ef9284d3496cc3b621c88e78a868..c693b71ab6ccf0ec52dafaed6a5802e74bb52458 100644 (file)
@@ -1379,8 +1379,8 @@ tcu::TestStatus deviceGroupPeerMemoryFeatures (Context& context)
                DE_NULL,                                                                                                                //pEnabledFeatures;
        };
 
-       Move<VkDevice>          deviceGroup = createDevice(vki, deviceGroupProps[devGroupIdx].physicalDevices[deviceIdx], &deviceCreateInfo);
-       const DeviceDriver      vk      (vki, *deviceGroup);
+       Move<VkDevice>          deviceGroup = createDevice(vkp, *instance, vki, deviceGroupProps[devGroupIdx].physicalDevices[deviceIdx], &deviceCreateInfo);
+       const DeviceDriver      vk      (vkp, *instance, *deviceGroup);
        context.getInstanceInterface().getPhysicalDeviceMemoryProperties(deviceGroupProps[devGroupIdx].physicalDevices[deviceIdx], &memProps);
 
        peerMemFeatures = reinterpret_cast<VkPeerMemoryFeatureFlags*>(buffer);
index 2049ed3265b07194e6e5ad61763cac62581cc747..8245a87e9e3b6d811522995909dc5c304ca04256 100644 (file)
@@ -231,6 +231,7 @@ struct Environment
 {
        const PlatformInterface&                vkp;
        deUint32                                                apiVersion;
+       VkInstance                                              instance;
        const DeviceInterface&                  vkd;
        VkDevice                                                device;
        deUint32                                                queueFamilyIndex;
@@ -241,6 +242,7 @@ struct Environment
        Environment (Context& context, deUint32 maxResourceConsumers_)
                : vkp                                   (context.getPlatformInterface())
                , apiVersion                    (context.getUsedApiVersion())
+               , instance                              (context.getInstance())
                , vkd                                   (context.getDeviceInterface())
                , device                                (context.getDevice())
                , queueFamilyIndex              (context.getUniversalQueueFamilyIndex())
@@ -252,6 +254,7 @@ struct Environment
 
        Environment (const PlatformInterface&           vkp_,
                                 deUint32                                               apiVersion_,
+                                VkInstance                                             instance_,
                                 const DeviceInterface&                 vkd_,
                                 VkDevice                                               device_,
                                 deUint32                                               queueFamilyIndex_,
@@ -260,6 +263,7 @@ struct Environment
                                 deUint32                                               maxResourceConsumers_)
                : vkp                                   (vkp_)
                , apiVersion                    (apiVersion_)
+               , instance                              (instance_)
                , vkd                                   (vkd_)
                , device                                (device_)
                , queueFamilyIndex              (queueFamilyIndex_)
@@ -343,6 +347,7 @@ size_t computeSystemMemoryUsage (Context& context, const typename Object::Parame
        AllocationCallbackRecorder                      allocRecorder           (getSystemAllocator());
        const Environment                                       env                                     (context.getPlatformInterface(),
                                                                                                                         context.getUsedApiVersion(),
+                                                                                                                        context.getInstance(),
                                                                                                                         context.getDeviceInterface(),
                                                                                                                         context.getDevice(),
                                                                                                                         context.getUniversalQueueFamilyIndex(),
@@ -583,7 +588,7 @@ struct Device
                        DE_NULL,                                                                // pEnabledFeatures
                };
 
-               return createDevice(res.vki, res.physicalDevice, &deviceInfo, env.allocationCallbacks);
+               return createDevice(env.vkp, env.instance, res.vki, res.physicalDevice, &deviceInfo, env.allocationCallbacks);
        }
 };
 
@@ -696,7 +701,7 @@ struct DeviceGroup
                        DE_NULL,                                                                                        // pEnabledFeatures
                };
 
-               return createDevice(res.vki, res.physicalDevices[params.deviceIndex], &deviceGroupCreateInfo, env.allocationCallbacks);
+               return createDevice(env.vkp, env.instance, res.vki, res.physicalDevices[params.deviceIndex], &deviceGroupCreateInfo, env.allocationCallbacks);
        }
 };
 
@@ -2495,8 +2500,8 @@ struct EnvClone
        EnvClone (const Environment& parent, const Device::Parameters& deviceParams, deUint32 maxResourceConsumers)
                : deviceRes     (parent, deviceParams)
                , device        (Device::create(parent, deviceRes, deviceParams))
-               , vkd           (deviceRes.vki, *device)
-               , env           (parent.vkp, parent.apiVersion, vkd, *device, deviceRes.queueFamilyIndex, parent.programBinaries, parent.allocationCallbacks, maxResourceConsumers)
+               , vkd           (parent.vkp, parent.instance, *device)
+               , env           (parent.vkp, parent.apiVersion, parent.instance, vkd, *device, deviceRes.queueFamilyIndex, parent.programBinaries, parent.allocationCallbacks, maxResourceConsumers)
        {
        }
 };
@@ -2548,6 +2553,7 @@ tcu::TestStatus createSingleAllocCallbacksTest (Context& context, typename Objec
        // Root environment still uses default instance and device, created without callbacks
        const Environment                                       rootEnv                 (context.getPlatformInterface(),
                                                                                                                 context.getUsedApiVersion(),
+                                                                                                                context.getInstance(),
                                                                                                                 context.getDeviceInterface(),
                                                                                                                 context.getDevice(),
                                                                                                                 context.getUniversalQueueFamilyIndex(),
@@ -2564,6 +2570,7 @@ tcu::TestStatus createSingleAllocCallbacksTest (Context& context, typename Objec
                AllocationCallbackRecorder                      objCallbacks(getSystemAllocator(), 128);
                const Environment                                       objEnv          (resEnv.env.vkp,
                                                                                                                 resEnv.env.apiVersion,
+                                                                                                                resEnv.env.instance,
                                                                                                                 resEnv.env.vkd,
                                                                                                                 resEnv.env.device,
                                                                                                                 resEnv.env.queueFamilyIndex,
@@ -2599,6 +2606,7 @@ tcu::TestStatus allocCallbackFailTest (Context& context, typename Object::Parame
        AllocationCallbackRecorder                      resCallbacks            (getSystemAllocator(), 128);
        const Environment                                       rootEnv                         (context.getPlatformInterface(),
                                                                                                                         context.getUsedApiVersion(),
+                                                                                                                        context.getInstance(),
                                                                                                                         context.getDeviceInterface(),
                                                                                                                         context.getDevice(),
                                                                                                                         context.getUniversalQueueFamilyIndex(),
@@ -2622,6 +2630,7 @@ tcu::TestStatus allocCallbackFailTest (Context& context, typename Object::Parame
                        AllocationCallbackRecorder                      recorder        (objAllocator.getCallbacks(), 128);
                        const Environment                                       objEnv          (resEnv.env.vkp,
                                                                                                                         resEnv.env.apiVersion,
+                                                                                                                        resEnv.env.instance,
                                                                                                                         resEnv.env.vkd,
                                                                                                                         resEnv.env.device,
                                                                                                                         resEnv.env.queueFamilyIndex,
@@ -2710,6 +2719,7 @@ tcu::TestStatus allocCallbackFailMultipleObjectsTest (Context& context, typename
                        AllocationCallbackRecorder                      recorder        (objAllocator.getCallbacks(), 128);
                        const Environment                                       objEnv          (context.getPlatformInterface(),
                                                                                                                         context.getUsedApiVersion(),
+                                                                                                                        context.getInstance(),
                                                                                                                         context.getDeviceInterface(),
                                                                                                                         context.getDevice(),
                                                                                                                         context.getUniversalQueueFamilyIndex(),
index f9701baa8dba9b1b85ae9f79d2eacdc3797503f3..06b8fb7b5853130d78e5273702a7c68cb1e032cd 100644 (file)
@@ -37,6 +37,9 @@
 #include "vktApiVersionCheck.hpp"
 #include "vktTestCase.hpp"
 
+#include "vkRefUtil.hpp"
+#include "vkDeviceUtil.hpp"
+
 #include "deString.h"
 #include "deStringUtil.hpp"
 
@@ -105,24 +108,70 @@ public:
        }
        virtual tcu::TestStatus         iterate                                         (void)
        {
-               tcu::TestLog&                                           log                             = m_context.getTestContext().getLog();
-               const vk::Platform&                                     platform                = m_context.getTestContext().getPlatform().getVulkanPlatform();
-               de::MovePtr<vk::Library>                        vkLibrary               = de::MovePtr<vk::Library>(platform.createLibrary());
-               const tcu::FunctionLibrary&                     funcLibrary             = vkLibrary->getFunctionLibrary();
-               getInstanceProcAddr                                                                     = (GetInstanceProcAddrFunc)funcLibrary.getFunction("vkGetInstanceProcAddr");
-               getDeviceProcAddr                                                                       = (GetDeviceProcAddrFunc)getInstanceProcAddr(m_context.getInstance(), "vkGetDeviceProcAddr");
-
-               deUint32                                                        failsQuantity   = 0u;
-               ApisMap                                                         functions               = ApisMap();
-               initApisMap(functions);
-
-               ApisMap::const_iterator                         lastGoodVersion = functions.begin();
-               for (ApisMap::const_iterator it = lastGoodVersion; it != functions.end(); ++it)
+               tcu::TestLog&                                           log                                     = m_context.getTestContext().getLog();
+               const vk::Platform&                                     platform                        = m_context.getTestContext().getPlatform().getVulkanPlatform();
+               de::MovePtr<vk::Library>                        vkLibrary                       = de::MovePtr<vk::Library>(platform.createLibrary());
+               const tcu::FunctionLibrary&                     funcLibrary                     = vkLibrary->getFunctionLibrary();
+               std::vector<std::string>                        empty                           = std::vector<std::string>();
+                                                                                       instance                        = createDefaultInstance(m_context.getPlatformInterface(), m_context.getUsedApiVersion(), empty, empty, DE_NULL);
+                                                                                       device                          = createTestDevice(m_context.getPlatformInterface(), m_context.getInstanceInterface(), m_context.getPhysicalDevice());
+                                                                                       getInstanceProcAddr     = reinterpret_cast<GetInstanceProcAddrFunc>(funcLibrary.getFunction("vkGetInstanceProcAddr"));
+                                                                                       getDeviceProcAddr       = reinterpret_cast<GetDeviceProcAddrFunc>(getInstanceProcAddr(*instance, "vkGetDeviceProcAddr"));
+
+               deUint32                                                        failsQuantity           = 0u;
+
+               {
+                       ApisMap                                                 functions                       = ApisMap();
+                       initApisMap(functions);
+                       ApisMap::const_iterator                 lastGoodVersion         = functions.begin();
+                       const ApisMap::const_iterator   versionsEnd                     = functions.end();
+                       for (ApisMap::const_iterator it = lastGoodVersion; it != versionsEnd; ++it)
+                       {
+                               if (it->first <= m_context.getUsedApiVersion())
+                                       lastGoodVersion = it;
+                       }
+
+                       log << tcu::TestLog::Message << "Regular check - tries to get core functions from proper vkGet*ProcAddr." << tcu::TestLog::EndMessage;
+                       const char* const                               regularResult           = regularCheck(log, failsQuantity, lastGoodVersion->second) ? "Passed" : "Failed";
+                       log << tcu::TestLog::Message << regularResult << tcu::TestLog::EndMessage;
+
+                       log << tcu::TestLog::Message << "Cross check - tries to get core functions from improper vkGet*ProcAddr." << tcu::TestLog::EndMessage;
+                       const char* const                               mixupResult                     = mixupAddressProcCheck(log, failsQuantity, lastGoodVersion->second) ? "Passed" : "Failed";
+                       log << tcu::TestLog::Message << mixupResult << tcu::TestLog::EndMessage;
+               }
+
+               {
+                       FunctionInfosList                               extFunctions            = FunctionInfosList();
+                       extFunctions.push_back(FunctionInfo("vkTrimCommandPoolKHR", FUNCTIONORIGIN_DEVICE));
+                       extFunctions.push_back(FunctionInfo("vkCmdPushDescriptorSetKHR", FUNCTIONORIGIN_DEVICE));
+                       extFunctions.push_back(FunctionInfo("vkCreateSamplerYcbcrConversionKHR", FUNCTIONORIGIN_DEVICE));
+                       extFunctions.push_back(FunctionInfo("vkGetSwapchainStatusKHR", FUNCTIONORIGIN_DEVICE));
+                       extFunctions.push_back(FunctionInfo("vkCreateSwapchainKHR", FUNCTIONORIGIN_DEVICE));
+                       extFunctions.push_back(FunctionInfo("vkGetImageSparseMemoryRequirements2KHR", FUNCTIONORIGIN_DEVICE));
+                       extFunctions.push_back(FunctionInfo("vkBindBufferMemory2KHR", FUNCTIONORIGIN_DEVICE));
+                       extFunctions.push_back(FunctionInfo("vkImportFenceWin32HandleKHR", FUNCTIONORIGIN_DEVICE));
+                       extFunctions.push_back(FunctionInfo("vkGetBufferMemoryRequirements2KHR", FUNCTIONORIGIN_DEVICE));
+                       extFunctions.push_back(FunctionInfo("vkGetImageMemoryRequirements2KHR", FUNCTIONORIGIN_DEVICE));
+
+                       log << tcu::TestLog::Message << "Extensions check - tries to get functions of disabled extensions from proper vkGet*ProcAddr." << tcu::TestLog::EndMessage;
+                       const char * const                              result                          = specialCasesCheck(log, failsQuantity, extFunctions) ? "Passed" : "Failed";
+                       log << tcu::TestLog::Message << result << tcu::TestLog::EndMessage;
+               }
+
                {
-                       if (it->first <= m_context.getUsedApiVersion())
-                               lastGoodVersion = it;
+                       FunctionInfosList                               dummyFunctions          = FunctionInfosList();
+                       for (deUint32 i = 0; i <= FUNCTIONORIGIN_DEVICE; ++i)
+                       {
+                               const FunctionOrigin origin = static_cast<FunctionOrigin>(i);
+                               dummyFunctions.push_back(FunctionInfo("vkSomeName", origin));
+                               dummyFunctions.push_back(FunctionInfo("vkNonexistingKHR", origin));
+                               dummyFunctions.push_back(FunctionInfo("", origin));
+                       }
+
+                       log << tcu::TestLog::Message << "Special check - tries to get some dummy functions from various vkGet*ProcAddr." << tcu::TestLog::EndMessage;
+                       const char * const                              result                          = specialCasesCheck(log, failsQuantity, dummyFunctions) ? "Passed" : "Failed";
+                       log << tcu::TestLog::Message << result << tcu::TestLog::EndMessage;
                }
-               failChecking(log, failsQuantity, lastGoodVersion->second);
 
                if (failsQuantity > 0u)
                        return tcu::TestStatus::fail("Fail");
@@ -133,57 +182,139 @@ public:
 private:
 
        GetDeviceProcAddrFunc   getDeviceProcAddr;
-       GetInstanceProcAddrFunc getInstanceProcAddr;
+       GetInstanceProcAddrFunc getInstanceProcAddr;
+       Move<VkInstance>                instance;
+       Move<VkDevice>                  device;
+
+       deUint32 findQueueFamilyIndex(const InstanceInterface& vkInstance, VkPhysicalDevice physicalDevice, VkQueueFlags requiredCaps)
+       {
+               deUint32                                                                numQueues = 0;
+               vkInstance.getPhysicalDeviceQueueFamilyProperties(physicalDevice, &numQueues, DE_NULL);
+               if (numQueues > 0)
+               {
+                       vector<VkQueueFamilyProperties>         properties(numQueues);
+                       vkInstance.getPhysicalDeviceQueueFamilyProperties(physicalDevice, &numQueues, &properties[0]);
+                       if (numQueues != static_cast<deUint32>(properties.size()))
+                               TCU_FAIL("Returned queue family count changes between queries.");
+                       for (deUint32 queueNdx = 0u; queueNdx < numQueues; queueNdx++)
+                               if ((properties[queueNdx].queueFlags & requiredCaps) == requiredCaps)
+                                       return queueNdx;
+               }
+               TCU_FAIL("Returned queue family count was 0.");
+               return 0u;
+       }
+
+       Move<VkDevice> createTestDevice (const PlatformInterface& vkp, const InstanceInterface& vki, VkPhysicalDevice physicalDevice)
+       {
+               vector<string>                          enabledLayers;
+               vector<const char*>                     layerPtrs;
+               vector<const char*>                     extensionPtrs;
+               const float                                     queuePriority   = 1.0f;
+               const deUint32                          queueIndex              = findQueueFamilyIndex(vki, physicalDevice, VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT);
+               VkDeviceQueueCreateInfo         queueInfo               = {
+                       VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
+                       DE_NULL,
+                       static_cast<VkDeviceQueueCreateFlags>(0u),
+                       queueIndex,
+                       1u,
+                       &queuePriority
+               };
+               VkDeviceCreateInfo                      deviceInfo              = {
+                       VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
+                       DE_NULL,
+                       static_cast<VkDeviceCreateFlags>(0u),
+                       1u,
+                       &queueInfo,
+                       0u,
+                       DE_NULL,
+                       0u,
+                       DE_NULL,
+                       DE_NULL,
+               };
+               return vk::createDevice(vkp, *instance, vki, physicalDevice, &deviceInfo);
+       }
+
+       void reportFail (tcu::TestLog& log, const char* const functionName, const char* const firstParamName, const char* const secondParamName, deBool shouldBeNonNull, deUint32& failsQuantity)
+       {
+               log << tcu::TestLog::Message
+                       << "[" << failsQuantity << "] " << functionName << '(' << firstParamName << ", \"" << secondParamName << "\") "
+                       << "returned " << (shouldBeNonNull ? "nullptr" : "non-null") << " should return " << (shouldBeNonNull ? "valid function address" : "nullptr")
+                       << tcu::TestLog::EndMessage;
+               ++failsQuantity;
+       }
+
+       void checkPlatformFunction (tcu::TestLog& log, const char* const name, deBool shouldBeNonNull, deUint32& failsQuantity)
+       {
+               if ((getInstanceProcAddr(DE_NULL, name) == DE_NULL) == shouldBeNonNull)
+                       reportFail(log, "vkGetInstanceProcAddr", "DE_NULL", name, shouldBeNonNull, failsQuantity);
+       }
+
+       void checkInstanceFunction (tcu::TestLog& log, const char* const name, deBool shouldBeNonNull, deUint32& failsQuantity)
+       {
+               if ((getInstanceProcAddr(*instance, name) == DE_NULL) == shouldBeNonNull)
+                       reportFail(log, "vkGetInstanceProcAddr", "instance", name, shouldBeNonNull, failsQuantity);
+       }
+
+       void checkDeviceFunction (tcu::TestLog& log, const char* const name, deBool shouldBeNonNull, deUint32& failsQuantity)
+       {
+               if ((getDeviceProcAddr(*device, name) == DE_NULL) == shouldBeNonNull)
+                       reportFail(log, "vkGetDeviceProcAddr", "device", name, shouldBeNonNull, failsQuantity);
+       }
 
-       void failChecking (tcu::TestLog& log, deUint32& failsQuantity, const vector<pair<const char*, FunctionOrigin> >& testsArr)
+       deBool mixupAddressProcCheck (tcu::TestLog& log, deUint32& failsQuantity, const vector<pair<const char*, FunctionOrigin> >& testsArr)
        {
+               const deUint32 startingQuantity = failsQuantity;
                for (deUint32 ndx = 0u; ndx < testsArr.size(); ++ndx)
                {
-                       if (!deStringEqual(testsArr[ndx].first, "vkGetInstanceProcAddr") &&
-                               !deStringEqual(testsArr[ndx].first, "vkEnumerateInstanceVersion"))
+                       if (deStringEqual(testsArr[ndx].first, "vkGetInstanceProcAddr") || deStringEqual(testsArr[ndx].first, "vkEnumerateInstanceVersion"))
+                               continue;
+
+                       const char*        functionName = testsArr[ndx].first;
+                       const deUint32 functionType = testsArr[ndx].second;
+                       if (functionType == FUNCTIONORIGIN_INSTANCE)
                        {
-                               const deUint32 functionType     = testsArr[ndx].second;
-                               switch (functionType)
-                               {
-
-                                       case FUNCTIONORIGIN_PLATFORM:
-                                               if (getInstanceProcAddr(DE_NULL, testsArr[ndx].first) == DE_NULL)
-                                               {
-                                                       log << tcu::TestLog::Message << \
-                                                               "[" << failsQuantity << "]\tptr to function '" << testsArr[ndx].first \
-                                                               << "'  == DE_NULL" << \
-                                                               tcu::TestLog::EndMessage;
-                                                       failsQuantity++;
-                                               }
-                                               break;
-
-                                       case FUNCTIONORIGIN_INSTANCE:
-                                               if (getInstanceProcAddr(m_context.getInstance(), testsArr[ndx].first) == DE_NULL)
-                                               {
-                                                       log << tcu::TestLog::Message << \
-                                                               "[" << failsQuantity << "]\tptr to function '" << testsArr[ndx].first \
-                                                               << "'  == DE_NULL" << \
-                                                               tcu::TestLog::EndMessage;
-                                                       failsQuantity++;
-                                               }
-                                               break;
-
-                                       case FUNCTIONORIGIN_DEVICE:
-                                               if (getDeviceProcAddr(m_context.getDevice(), testsArr[ndx].first) == DE_NULL)
-                                               {
-                                                       log << tcu::TestLog::Message << \
-                                                               "[" << failsQuantity << "]\tptr to function '" << testsArr[ndx].first \
-                                                               << "'  == DE_NULL" << \
-                                                               tcu::TestLog::EndMessage;
-                                                       failsQuantity++;
-                                               }
-                                               break;
-
-                                       default:
-                                               DE_FATAL("Unrecognised function origin. Functions must come from Platform, Instance or Driver.");
-                               }
+                               checkPlatformFunction(log, functionName, DE_FALSE, failsQuantity);
+                               checkDeviceFunction(log, functionName, DE_FALSE, failsQuantity);
                        }
+                       else if (functionType == FUNCTIONORIGIN_DEVICE)
+                               checkPlatformFunction(log, functionName, DE_FALSE, failsQuantity);
+               }
+               return startingQuantity == failsQuantity;
+       }
+
+       deBool specialCasesCheck (tcu::TestLog& log, deUint32& failsQuantity, const vector<pair<const char*, FunctionOrigin> >& testsArr)
+       {
+               const deUint32 startingQuantity = failsQuantity;
+               for (deUint32 ndx = 0u; ndx < testsArr.size(); ++ndx)
+               {
+                       const deUint32 functionType = testsArr[ndx].second;
+                       if (functionType == FUNCTIONORIGIN_PLATFORM)
+                               checkPlatformFunction(log, testsArr[ndx].first, DE_FALSE, failsQuantity);
+                       else if (functionType == FUNCTIONORIGIN_INSTANCE)
+                               checkInstanceFunction(log, testsArr[ndx].first, DE_FALSE, failsQuantity);
+                       else if (functionType == FUNCTIONORIGIN_DEVICE)
+                               checkDeviceFunction(log, testsArr[ndx].first, DE_FALSE, failsQuantity);
+               }
+               return startingQuantity == failsQuantity;
+       }
+
+       deBool regularCheck (tcu::TestLog& log, deUint32& failsQuantity, const vector<pair<const char*, FunctionOrigin> >& testsArr)
+       {
+               const deUint32 startingQuantity = failsQuantity;
+               for (deUint32 ndx = 0u; ndx < testsArr.size(); ++ndx)
+               {
+                       if (deStringEqual(testsArr[ndx].first, "vkGetInstanceProcAddr") || deStringEqual(testsArr[ndx].first, "vkEnumerateInstanceVersion"))
+                               continue;
+
+                       const deUint32 functionType     = testsArr[ndx].second;
+                       if (functionType == FUNCTIONORIGIN_PLATFORM)
+                               checkPlatformFunction(log, testsArr[ndx].first, DE_TRUE, failsQuantity);
+                       else if (functionType == FUNCTIONORIGIN_INSTANCE)
+                               checkInstanceFunction(log, testsArr[ndx].first, DE_TRUE, failsQuantity);
+                       else if (functionType == FUNCTIONORIGIN_DEVICE)
+                               checkDeviceFunction(log, testsArr[ndx].first, DE_TRUE, failsQuantity);
                }
+               return startingQuantity == failsQuantity;
        }
 };
 
index d75e68537e338362f5ba08716ea99f5fea939fb0..3c311c0a2afb0345de0be5403f6eaf8f64e1fae5 100644 (file)
@@ -2457,8 +2457,8 @@ void ComputeTestInstance::createDeviceGroup (void)
                (deviceExtensions.empty() ? DE_NULL : &deviceExtensions[0]),    // const char* const*                           ppEnabledExtensionNames;
                &deviceFeatures,                                                                                                // const VkPhysicalDeviceFeatures*      pEnabledFeatures;
        };
-       m_logicalDevice         = createDevice(instance, deviceGroupInfo.pPhysicalDevices[physDeviceIdx], &deviceInfo);
-       m_deviceDriver          = de::MovePtr<DeviceDriver>(new DeviceDriver(instance, *m_logicalDevice));
+       m_logicalDevice         = createDevice(m_context.getPlatformInterface(), m_deviceGroupInstance.get(), instance, deviceGroupInfo.pPhysicalDevices[physDeviceIdx], &deviceInfo);
+       m_deviceDriver          = de::MovePtr<DeviceDriver>(new DeviceDriver(m_context.getPlatformInterface(), m_deviceGroupInstance.get(), *m_logicalDevice));
 }
 
 class DispatchBaseTest : public vkt::TestCase
index 0031edd44852ca4990a39f8cc898c7f54429ca1b..b5c25a3e8aee6419c4d58c7b94b37957fe0dd36c 100755 (executable)
@@ -200,7 +200,7 @@ bool DeviceGroupTestInstance::isPeerFetchAllowed (deUint32 memoryTypeIndex, deUi
 {
        VkPeerMemoryFeatureFlags                                peerMemFeatures1;
        VkPeerMemoryFeatureFlags                                peerMemFeatures2;
-       const DeviceDriver                                              vk                                              (m_context.getInstanceInterface(), *m_deviceGroup);
+       const DeviceDriver                                              vk                                              (m_context.getPlatformInterface(), m_context.getInstance(), *m_deviceGroup);
        const VkPhysicalDeviceMemoryProperties  deviceMemProps1                 = getPhysicalDeviceMemoryProperties(m_context.getInstanceInterface(), m_physicalDevices[firstdeviceID]);
        const VkPhysicalDeviceMemoryProperties  deviceMemProps2                 = getPhysicalDeviceMemoryProperties(m_context.getInstanceInterface(), m_physicalDevices[seconddeviceID]);
        vk.getDeviceGroupPeerMemoryFeatures(*m_deviceGroup, deviceMemProps2.memoryTypes[memoryTypeIndex].heapIndex, firstdeviceID, seconddeviceID, &peerMemFeatures1);
@@ -345,10 +345,10 @@ void DeviceGroupTestInstance::init (void)
                        (extensionPtrs.empty() ? DE_NULL : &extensionPtrs[0]),  //ppEnabledExtensionNames;
                        &enabledDeviceFeatures,                                                                 //pEnabledFeatures;
                };
-               m_deviceGroup = createDevice(instanceInterface, physicalDevice, &deviceCreateInfo);
+               m_deviceGroup = createDevice(m_context.getPlatformInterface(), m_context.getInstance(), instanceInterface, physicalDevice, &deviceCreateInfo);
        }
 
-       deviceDriver = de::MovePtr<vk::DeviceDriver>(new vk::DeviceDriver(instanceInterface, *m_deviceGroup));
+       deviceDriver = de::MovePtr<vk::DeviceDriver>(new vk::DeviceDriver(m_context.getPlatformInterface(), m_context.getInstance(), *m_deviceGroup));
        m_deviceGroupQueue = getDeviceQueue(*deviceDriver, *m_deviceGroup, queueFamilyIndex, queueIndex);
 }
 
@@ -361,7 +361,7 @@ void DeviceGroupTestInstance::SubmitBufferAndWaitForIdle(const DeviceDriver& vk,
 tcu::TestStatus DeviceGroupTestInstance::iterate (void)
 {
        const InstanceInterface&        vki                                             (m_context.getInstanceInterface());
-       const DeviceDriver                      vk                                              (vki, *m_deviceGroup);
+       const DeviceDriver                      vk                                              (m_context.getPlatformInterface(), m_context.getInstance(), *m_deviceGroup);
        const deUint32                          queueFamilyIndex                = m_context.getUniversalQueueFamilyIndex();
        const tcu::UVec2                        renderSize                              (256, 256);
        const VkFormat                          colorFormat                             = VK_FORMAT_R8G8B8A8_UNORM;
index 89432820f10a9c27a7a3b7151dbe2b740f0d0056..e16b03e9f79280955dff71a588b0334568213a90 100644 (file)
@@ -178,10 +178,11 @@ void BaseAllocateTestInstance::createDeviceGroup (void)
                devGroupProperties[devGroupIdx].physicalDeviceCount,                                                            //physicalDeviceCount
                devGroupProperties[devGroupIdx].physicalDevices                                                                         //physicalDevices
        };
-       InstanceDriver                                                                  instance                                (m_context.getPlatformInterface(), m_useDeviceGroups ? m_deviceGroupInstance.get() : m_context.getInstance());
-       const VkPhysicalDeviceFeatures                                  deviceFeatures  =               getPhysicalDeviceFeatures(instance, deviceGroupInfo.pPhysicalDevices[physDeviceIdx]);
+       VkInstance                                                                              instance                                (m_useDeviceGroups ? m_deviceGroupInstance.get() : m_context.getInstance());
+       InstanceDriver                                                                  instanceDriver                  (m_context.getPlatformInterface(), instance);
+       const VkPhysicalDeviceFeatures                                  deviceFeatures  =               getPhysicalDeviceFeatures(instanceDriver, deviceGroupInfo.pPhysicalDevices[physDeviceIdx]);
 
-       const std::vector<VkQueueFamilyProperties>              queueProps              =               getPhysicalDeviceQueueFamilyProperties(instance, devGroupProperties[devGroupIdx].physicalDevices[physDeviceIdx]);
+       const std::vector<VkQueueFamilyProperties>              queueProps              =               getPhysicalDeviceQueueFamilyProperties(instanceDriver, devGroupProperties[devGroupIdx].physicalDevices[physDeviceIdx]);
        for (size_t queueNdx = 0; queueNdx < queueProps.size(); queueNdx++)
        {
                if (queueProps[queueNdx].queueFlags & VK_QUEUE_COMPUTE_BIT)
@@ -211,9 +212,9 @@ void BaseAllocateTestInstance::createDeviceGroup (void)
                deviceExtensions.empty() ? DE_NULL : &deviceExtensions[0],      // const char* const*   ppEnabledExtensionNames;
                &deviceFeatures,                                                                                        // const VkPhysicalDeviceFeatures*      pEnabledFeatures;
        };
-       m_logicalDevice         = createDevice(instance, deviceGroupInfo.pPhysicalDevices[physDeviceIdx], &deviceInfo);
-       m_deviceDriver          = de::MovePtr<DeviceDriver>(new DeviceDriver(instance, *m_logicalDevice));
-       m_memoryProperties      = getPhysicalDeviceMemoryProperties(instance, deviceGroupInfo.pPhysicalDevices[physDeviceIdx]);
+       m_logicalDevice         = createDevice(m_context.getPlatformInterface(), instance, instanceDriver, deviceGroupInfo.pPhysicalDevices[physDeviceIdx], &deviceInfo);
+       m_deviceDriver          = de::MovePtr<DeviceDriver>(new DeviceDriver(m_context.getPlatformInterface(), instance, *m_logicalDevice));
+       m_memoryProperties      = getPhysicalDeviceMemoryProperties(instanceDriver, deviceGroupInfo.pPhysicalDevices[physDeviceIdx]);
 }
 
 class AllocateFreeTestInstance : public BaseAllocateTestInstance
index 96c4a91c6acd44aaf83c5d4603e666ca078bc090..5c8f2daa162a895b195acf3494757ebfcc6a95c5 100644 (file)
@@ -601,8 +601,8 @@ void MultiViewRenderTestInstance::createMultiViewDevices (void)
                        DE_NULL                                                                                                                 //const VkPhysicalDeviceFeatures*       pEnabledFeatures;
                };
 
-               m_logicalDevice                                 = createDevice(instance, physicalDevice, &deviceInfo);
-               m_device                                                = MovePtr<DeviceDriver>(new DeviceDriver(instance, *m_logicalDevice));
+               m_logicalDevice                                 = createDevice(m_context.getPlatformInterface(), m_context.getInstance(), instance, physicalDevice, &deviceInfo);
+               m_device                                                = MovePtr<DeviceDriver>(new DeviceDriver(m_context.getPlatformInterface(), m_context.getInstance(), *m_logicalDevice));
                m_allocator                                             = MovePtr<Allocator>(new SimpleAllocator(*m_device, *m_logicalDevice, getPhysicalDeviceMemoryProperties(instance, physicalDevice)));
                m_device->getDeviceQueue                (*m_logicalDevice, m_queueFamilyIndex, 0u, &m_queue);
        }
index e20e6190a8ad33bd49eb96bdec2fdb9108c5e684..9ac2a58a63009a05e8cbaf1b397d158aa09e17e1 100644 (file)
@@ -37,9 +37,9 @@ ProtectedContext::ProtectedContext    (Context&                                               ctx,
        , m_vki                                 (m_interface, *m_instance)
        , m_phyDevice                   (vk::chooseDevice(m_vki, *m_instance, m_context.getTestContext().getCommandLine()))
        , m_queueFamilyIndex    (chooseProtectedMemQueueFamilyIndex(m_vki, m_phyDevice))
-       , m_device                              (makeProtectedMemDevice(m_vki, m_phyDevice, m_queueFamilyIndex, ctx.getUsedApiVersion(), deviceExtensions))
+       , m_device                              (makeProtectedMemDevice(m_interface, *m_instance, m_vki, m_phyDevice, m_queueFamilyIndex, ctx.getUsedApiVersion(), deviceExtensions))
        , m_allocator                   (createAllocator())
-       , m_deviceDriver                (m_vki, *m_device)
+       , m_deviceDriver                (m_context.getPlatformInterface(), *m_instance, *m_device)
        , m_queue                               (getProtectedQueue(m_deviceDriver, *m_device, m_queueFamilyIndex, 0))
 {
 }
@@ -57,9 +57,9 @@ ProtectedContext::ProtectedContext    (Context&                                               ctx,
        , m_phyDevice                   (vk::chooseDevice(m_vki, *m_instance, m_context.getTestContext().getCommandLine()))
        , m_surface                             (vk::wsi::createSurface(m_vki, *m_instance, wsiType, display, window))
        , m_queueFamilyIndex    (chooseProtectedMemQueueFamilyIndex(m_vki, m_phyDevice, *m_surface))
-       , m_device                              (makeProtectedMemDevice(m_vki, m_phyDevice, m_queueFamilyIndex, ctx.getUsedApiVersion(), deviceExtensions))
+       , m_device                              (makeProtectedMemDevice(m_interface, *m_instance, m_vki, m_phyDevice, m_queueFamilyIndex, ctx.getUsedApiVersion(), deviceExtensions))
        , m_allocator                   (createAllocator())
-       , m_deviceDriver                (m_vki, *m_device)
+       , m_deviceDriver                (m_interface, *m_instance, *m_device)
        , m_queue                               (getProtectedQueue(m_deviceDriver, *m_device, m_queueFamilyIndex, 0))
 {
 }
index 766c178ad49b792c18ad133f0a57503b29614ed0..09cb9310addb2baf86afee4a290e2147af9e8e4a 100644 (file)
@@ -144,7 +144,9 @@ deUint32 chooseProtectedMemQueueFamilyIndex (const vk::InstanceDriver&      vkd,
        TCU_THROW(NotSupportedError, "No matching universal protected queue found");
 }
 
-vk::Move<vk::VkDevice> makeProtectedMemDevice  (const vk::InstanceDriver&                      vkd,
+vk::Move<vk::VkDevice> makeProtectedMemDevice  (const vk::PlatformInterface&           vkp,
+                                                                                                vk::VkInstance                                         instance,
+                                                                                                const vk::InstanceDriver&                      vkd,
                                                                                                 vk::VkPhysicalDevice                           physicalDevice,
                                                                                                 const deUint32                                         queueFamilyIndex,
                                                                                                 const deUint32                                         apiVersion,
@@ -239,7 +241,7 @@ vk::Move<vk::VkDevice> makeProtectedMemDevice       (const vk::InstanceDriver&                      vkd,
                DE_NULL                                                                                                                 // pEnabledFeatures
        };
 
-       return vk::createDevice(vkd, physicalDevice, &deviceParams, DE_NULL);
+       return vk::createDevice(vkp, instance, vkd, physicalDevice, &deviceParams, DE_NULL);
 }
 
 vk::VkQueue getProtectedQueue  (const vk::DeviceInterface&     vk,
index 95503b5aec0a7462cd50108518c8a9fee3b62fd1..f087b9acd35106cff3b8e8d55430062293e00386 100644 (file)
@@ -60,7 +60,9 @@ deUint32                                                      chooseProtectedMemQueueFamilyIndex      (const vk::InstanceDriver&                      v
                                                                                                                                                 vk::VkPhysicalDevice                           physicalDevice,
                                                                                                                                                 vk::VkSurfaceKHR                                       surface = DE_NULL);
 
-vk::Move<vk::VkDevice>                         makeProtectedMemDevice                          (const vk::InstanceDriver&                      vkd,
+vk::Move<vk::VkDevice>                         makeProtectedMemDevice                          (const vk::PlatformInterface&           vkp,
+                                                                                                                                                vk::VkInstance                                         instance,
+                                                                                                                                                const vk::InstanceDriver&                      vkd,
                                                                                                                                                 vk::VkPhysicalDevice                           physicalDevice,
                                                                                                                                                 const deUint32                                         queueFamilyIndex,
                                                                                                                                                 const deUint32                                         apiVersion,
index cb5659fa4b18a0016157b4c329f0973b6a3ea8aa..87b0778fd9c12bff75c8c014f9325d5416dbbded 100644 (file)
@@ -73,7 +73,8 @@ Move<VkDevice> createRobustBufferAccessDevice (Context& context)
                &enabledFeatures                                                // const VkPhysicalDeviceFeatures*      pEnabledFeatures;
        };
 
-       return createDevice(context.getInstanceInterface(), context.getPhysicalDevice(), &deviceParams);
+       return createDevice(context.getPlatformInterface(), context.getInstance(),
+                                               context.getInstanceInterface(), context.getPhysicalDevice(), &deviceParams);
 }
 
 bool areEqual (float a, float b)
index bb58368a69275e19ccc466a3f4b186a272d8989e..aa319e08c4353f1ca6a3a2952e650050f37226b4 100644 (file)
@@ -99,10 +99,11 @@ void SparseResourcesBaseInstance::createDeviceSupportingQueues(const QueueRequir
                        deviceExtensions.push_back("VK_KHR_device_group");
        }
 
-       InstanceDriver                                          instance(m_context.getPlatformInterface(), m_useDeviceGroups ? m_deviceGroupInstance.get() : m_context.getInstance());
+       const VkInstance&                                       instance(m_useDeviceGroups ? m_deviceGroupInstance.get() : m_context.getInstance());
+       InstanceDriver                                          instanceDriver(m_context.getPlatformInterface(), instance);
        const VkPhysicalDevice                          physicalDevice = getPhysicalDevice();
        deUint32 queueFamilyPropertiesCount = 0u;
-       instance.getPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyPropertiesCount, DE_NULL);
+       instanceDriver.getPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyPropertiesCount, DE_NULL);
 
        if(queueFamilyPropertiesCount == 0u)
                TCU_THROW(ResourceError, "Device reports an empty set of queue family properties");
@@ -110,7 +111,7 @@ void SparseResourcesBaseInstance::createDeviceSupportingQueues(const QueueRequir
        std::vector<VkQueueFamilyProperties> queueFamilyProperties;
        queueFamilyProperties.resize(queueFamilyPropertiesCount);
 
-       instance.getPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyPropertiesCount, &queueFamilyProperties[0]);
+       instanceDriver.getPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueFamilyPropertiesCount, &queueFamilyProperties[0]);
 
        if (queueFamilyPropertiesCount == 0u)
                TCU_THROW(ResourceError, "Device reports an empty set of queue family properties");
@@ -171,7 +172,7 @@ void SparseResourcesBaseInstance::createDeviceSupportingQueues(const QueueRequir
                queueInfos.push_back(queueInfo);
        }
 
-       const VkPhysicalDeviceFeatures  deviceFeatures  = getPhysicalDeviceFeatures(instance, physicalDevice);
+       const VkPhysicalDeviceFeatures  deviceFeatures  = getPhysicalDeviceFeatures(instanceDriver, physicalDevice);
        const VkDeviceCreateInfo                deviceInfo              =
        {
                VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,                                           // VkStructureType                    sType;
@@ -186,9 +187,9 @@ void SparseResourcesBaseInstance::createDeviceSupportingQueues(const QueueRequir
                &deviceFeatures,                                                                                        // const VkPhysicalDeviceFeatures*    pEnabledFeatures;
        };
 
-       m_logicalDevice = createDevice(instance, physicalDevice, &deviceInfo);
-       m_deviceDriver  = de::MovePtr<DeviceDriver>(new DeviceDriver(instance, *m_logicalDevice));
-       m_allocator             = de::MovePtr<Allocator>(new SimpleAllocator(*m_deviceDriver, *m_logicalDevice, getPhysicalDeviceMemoryProperties(instance, physicalDevice)));
+       m_logicalDevice = createDevice(m_context.getPlatformInterface(), instance, instanceDriver, physicalDevice, &deviceInfo);
+       m_deviceDriver  = de::MovePtr<DeviceDriver>(new DeviceDriver(m_context.getPlatformInterface(), instance, *m_logicalDevice));
+       m_allocator             = de::MovePtr<Allocator>(new SimpleAllocator(*m_deviceDriver, *m_logicalDevice, getPhysicalDeviceMemoryProperties(instanceDriver, physicalDevice)));
 
        for (QueuesMap::iterator queuesIter = m_queues.begin(); queuesIter != m_queues.end(); ++queuesIter)
        {
index 9e582a168fe6f621ca30165319edad3a7156a2c6..1ea14e4501ffa3843de97919331fbf7bb78b2415 100644 (file)
@@ -238,7 +238,7 @@ tcu::TestStatus basicMultiQueueCase (Context& context)
        deviceInfo.queueCreateInfoCount         = (queues[FIRST].queueFamilyIndex == queues[SECOND].queueFamilyIndex) ? 1 : COUNT;
        deviceInfo.pQueueCreateInfos            = queueInfos;
 
-       logicalDevice = vk::createDevice(instance, physicalDevice, &deviceInfo);
+       logicalDevice = vk::createDevice(context.getPlatformInterface(), context.getInstance(), instance, physicalDevice, &deviceInfo);
 
        for (deUint32 queueReqNdx = 0; queueReqNdx < COUNT; ++queueReqNdx)
        {
index 6df39e29bb0089c3b1e0673a6a2e8d4dd41e3e68..1b26fb43d083996d4efc7521c170aee46f1f0630 100644 (file)
@@ -390,6 +390,8 @@ vk::VkPhysicalDevice getPhysicalDevice (const vk::InstanceInterface& vki, vk::Vk
 }
 
 vk::Move<vk::VkDevice> createDevice (const deUint32                                                                    apiVersion,
+                                                                        const vk::PlatformInterface&                                   vkp,
+                                                                        vk::VkInstance                                                                 instance,
                                                                         const vk::InstanceInterface&                                   vki,
                                                                         vk::VkPhysicalDevice                                                   physicalDevice,
                                                                         vk::VkExternalMemoryHandleTypeFlagBits         memoryHandleType,
@@ -469,7 +471,7 @@ vk::Move<vk::VkDevice> createDevice (const deUint32                                                                 apiVersion,
                        0u
                };
 
-               return vk::createDevice(vki, physicalDevice, &createInfo);
+               return vk::createDevice(vkp, instance, vki, physicalDevice, &createInfo);
        }
        catch (const vk::Error& error)
        {
@@ -1038,8 +1040,8 @@ SharingTestInstance::SharingTestInstance (Context&                context,
        , m_queueFamiliesA                      (vk::getPhysicalDeviceQueueFamilyProperties(m_vkiA, m_physicalDeviceA))
        , m_queueFamilyIndicesA         (getFamilyIndices(m_queueFamiliesA))
        , m_getMemReq2Supported         (vk::isDeviceExtensionSupported(context.getUsedApiVersion(), context.getDeviceExtensions(), "VK_KHR_get_memory_requirements2"))
-       , m_deviceA                                     (createDevice(context.getUsedApiVersion(), m_vkiA, m_physicalDeviceA, m_config.memoryHandleType, m_config.semaphoreHandleType, m_config.dedicated, m_getMemReq2Supported))
-       , m_vkdA                                        (m_vkiA, *m_deviceA)
+       , m_deviceA                                     (createDevice(context.getUsedApiVersion(), context.getPlatformInterface(), *m_instanceA, m_vkiA, m_physicalDeviceA, m_config.memoryHandleType, m_config.semaphoreHandleType, m_config.dedicated, m_getMemReq2Supported))
+       , m_vkdA                                        (context.getPlatformInterface(), *m_instanceA, *m_deviceA)
 
        , m_instanceB                           (createInstance(context.getPlatformInterface(), context.getUsedApiVersion()))
 
@@ -1047,8 +1049,8 @@ SharingTestInstance::SharingTestInstance (Context&                context,
        , m_physicalDeviceB                     (getPhysicalDevice(m_vkiB, *m_instanceB, getDeviceId(m_vkiA, m_physicalDeviceA)))
        , m_queueFamiliesB                      (vk::getPhysicalDeviceQueueFamilyProperties(m_vkiB, m_physicalDeviceB))
        , m_queueFamilyIndicesB         (getFamilyIndices(m_queueFamiliesB))
-       , m_deviceB                                     (createDevice(context.getUsedApiVersion(), m_vkiB, m_physicalDeviceB, m_config.memoryHandleType, m_config.semaphoreHandleType, m_config.dedicated, m_getMemReq2Supported))
-       , m_vkdB                                        (m_vkiB, *m_deviceB)
+       , m_deviceB                                     (createDevice(context.getUsedApiVersion(), context.getPlatformInterface(), *m_instanceB, m_vkiB, m_physicalDeviceB, m_config.memoryHandleType, m_config.semaphoreHandleType, m_config.dedicated, m_getMemReq2Supported))
+       , m_vkdB                                        (context.getPlatformInterface(), *m_instanceB, *m_deviceB)
 
        , m_semaphoreHandleType         (m_config.semaphoreHandleType)
        , m_memoryHandleType            (m_config.memoryHandleType)
index 40887811187c94c4846f0576d4238917ba9988a7..34a946b005f651d06d9c60c2777e18834f422352 100644 (file)
@@ -256,7 +256,7 @@ MovePtr<MultiQueues> createQueues (const Context& context, const VkQueueFlags& q
        deviceInfo.queueCreateInfoCount         = static_cast<deUint32>(queues.countQueueFamilyIndex());
        deviceInfo.pQueueCreateInfos            = &queueInfos[0];
 
-       queues.setDevice(createDevice(instance, physicalDevice, &deviceInfo));
+       queues.setDevice(createDevice(context.getPlatformInterface(), context.getInstance(), instance, physicalDevice, &deviceInfo));
 
        for (deUint32 queueFamilyIndex = 0; queueFamilyIndex < queues.countQueueFamilyIndex(); ++queueFamilyIndex)
        {
index 0c42f615b713e989139c234beae75d09890f79df..7868c896ac7794c1200a73c8f82bfcaf6e54f6e2 100644 (file)
@@ -133,8 +133,8 @@ public:
                                &context.getDeviceFeatures()                                                                    //const VkPhysicalDeviceFeatures*       pEnabledFeatures;
                        };
 
-                       m_logicalDevice = createDevice(instance, physicalDevice, &deviceInfo);
-                       m_deviceDriver  = MovePtr<DeviceDriver>(new DeviceDriver(instance, *m_logicalDevice));
+                       m_logicalDevice = createDevice(context.getPlatformInterface(), context.getInstance(), instance, physicalDevice, &deviceInfo);
+                       m_deviceDriver  = MovePtr<DeviceDriver>(new DeviceDriver(context.getPlatformInterface(), context.getInstance(), *m_logicalDevice));
                        m_allocator             = MovePtr<Allocator>(new SimpleAllocator(*m_deviceDriver, *m_logicalDevice, getPhysicalDeviceMemoryProperties(instance, physicalDevice)));
 
                        for (std::map<deUint32, QueueData>::iterator it = m_queues.begin(); it != m_queues.end(); ++it)
index 15060d24c071caadecb52243cad40d710a0c0e3f..70033e4272939a09ace25d2b64afa0f78142684a 100644 (file)
@@ -86,7 +86,7 @@ void buildShaders (SourceCollections& shaderCollection)
                                "}\n");
 }
 
-Move<VkDevice> createTestDevice (const InstanceInterface& vki, VkPhysicalDevice physicalDevice, deUint32 *outQueueFamilyIndex)
+Move<VkDevice> createTestDevice (const PlatformInterface& vkp, VkInstance instance, const InstanceInterface& vki, VkPhysicalDevice physicalDevice, deUint32 *outQueueFamilyIndex)
 {
        VkDeviceQueueCreateInfo         queueInfo;
        VkDeviceCreateInfo                      deviceInfo;
@@ -137,7 +137,7 @@ Move<VkDevice> createTestDevice (const InstanceInterface& vki, VkPhysicalDevice
 
        *outQueueFamilyIndex                                    = queueInfo.queueFamilyIndex;
 
-       return createDevice(vki, physicalDevice, &deviceInfo);
+       return createDevice(vkp, instance, vki, physicalDevice, &deviceInfo);
 };
 
 struct BufferParameters
@@ -1104,11 +1104,12 @@ tcu::TestStatus testFences (Context& context)
 tcu::TestStatus testSemaphores (Context& context)
 {
        TestLog&                                        log                                     = context.getTestContext().getLog();
+       const PlatformInterface&        platformInterface       = context.getPlatformInterface();
        const InstanceInterface&        instanceInterface       = context.getInstanceInterface();
        const VkPhysicalDevice          physicalDevice          = context.getPhysicalDevice();
        deUint32                                        queueFamilyIdx;
-       vk::Move<VkDevice>                      device                          = createTestDevice(instanceInterface, physicalDevice, &queueFamilyIdx);
-       const DeviceDriver                      deviceInterface         (instanceInterface, *device);
+       vk::Move<VkDevice>                      device                          = createTestDevice(platformInterface, context.getInstance(), instanceInterface, physicalDevice, &queueFamilyIdx);
+       const DeviceDriver                      deviceInterface         (platformInterface, context.getInstance(), *device);
        SimpleAllocator                         allocator                       (deviceInterface,
                                                                                                         *device,
                                                                                                         getPhysicalDeviceMemoryProperties(instanceInterface, physicalDevice));
index b5b11be4abb98c0862e33cb021a12f65cda6271e..b0b03bfa2464df4237ce142b66b83ddd645906a6 100644 (file)
@@ -170,6 +170,8 @@ vk::VkPhysicalDevice getPhysicalDevice (const vk::InstanceInterface&        vki,
 }
 
 vk::Move<vk::VkDevice> createDevice (const deUint32                                                                    apiVersion,
+                                                                        const vk::PlatformInterface&                                   vkp,
+                                                                        vk::VkInstance                                                                 instance,
                                                                         const vk::InstanceInterface&                                   vki,
                                                                         vk::VkPhysicalDevice                                                   physicalDevice)
 {
@@ -225,7 +227,7 @@ vk::Move<vk::VkDevice> createDevice (const deUint32                                                                 apiVersion,
                        0u
                };
 
-               return vk::createDevice(vki, physicalDevice, &createInfo);
+               return vk::createDevice(vkp, instance, vki, physicalDevice, &createInfo);
        }
        catch (const vk::Error& error)
        {
@@ -1443,8 +1445,8 @@ Win32KeyedMutexTestInstance::Win32KeyedMutexTestInstance  (Context&               context,
        , m_physicalDevice                      (getPhysicalDevice(m_vki, *m_instance, context.getTestContext().getCommandLine()))
        , m_queueFamilies                       (vk::getPhysicalDeviceQueueFamilyProperties(m_vki, m_physicalDevice))
        , m_queueFamilyIndices          (getFamilyIndices(m_queueFamilies))
-       , m_device                                      (createDevice(context.getUsedApiVersion(), m_vki, m_physicalDevice))
-       , m_vkd                                         (m_vki, *m_device)
+       , m_device                                      (createDevice(context.getUsedApiVersion(), context.getPlatformInterface(), *m_instance, m_vki, m_physicalDevice))
+       , m_vkd                                         (context.getPlatformInterface(), *m_instance, *m_device)
 
        , m_supportDX11                         (new DX11OperationSupport(m_vki, m_physicalDevice, config.resource))
 
index f3d79e75d9f201462025890bc43ad591c5bebe13..9425ace954e71531df1ceb42b0c7df3c9f916f5d 100644 (file)
@@ -222,7 +222,9 @@ static deUint32 findQueueFamilyIndexWithCaps (const InstanceInterface& vkInstanc
        TCU_THROW(NotSupportedError, "No matching queue found");
 }
 
-Move<VkDevice> createDefaultDevice (const InstanceInterface&                   vki,
+Move<VkDevice> createDefaultDevice (const PlatformInterface&                   vkp,
+                                                                       VkInstance                                                      instance,
+                                                                       const InstanceInterface&                        vki,
                                                                        VkPhysicalDevice                                        physicalDevice,
                                                                        const deUint32                                          apiVersion,
                                                                        deUint32                                                        queueIndex,
@@ -293,7 +295,7 @@ Move<VkDevice> createDefaultDevice (const InstanceInterface&                        vki,
        deviceInfo.ppEnabledLayerNames                  = (layerPtrs.empty() ? DE_NULL : &layerPtrs[0]);
        deviceInfo.pEnabledFeatures                             = enabledFeatures.pNext ? DE_NULL : &enabledFeatures.features;
 
-       return createDevice(vki, physicalDevice, &deviceInfo);
+       return createDevice(vkp, instance, vki, physicalDevice, &deviceInfo);
 };
 
 bool isPhysicalDeviceFeatures2Supported (const deUint32 version, const vector<string>& instanceExtensions)
@@ -430,8 +432,8 @@ DefaultDevice::DefaultDevice (const PlatformInterface& vkPlatform, const tcu::Co
        , m_universalQueueFamilyIndex   (findQueueFamilyIndexWithCaps(m_instanceInterface, m_physicalDevice, VK_QUEUE_GRAPHICS_BIT|VK_QUEUE_COMPUTE_BIT))
        , m_sparseQueueFamilyIndex              (m_deviceFeatures.coreFeatures.features.sparseBinding ? findQueueFamilyIndexWithCaps(m_instanceInterface, m_physicalDevice, VK_QUEUE_SPARSE_BINDING_BIT) : 0)
        , m_deviceProperties                    (getPhysicalDeviceProperties(m_instanceInterface, m_physicalDevice))
-       , m_device                                              (createDefaultDevice(m_instanceInterface, m_physicalDevice, m_usedApiVersion, m_universalQueueFamilyIndex, m_sparseQueueFamilyIndex, m_deviceFeatures.coreFeatures, m_deviceExtensions, cmdLine))
-       , m_deviceInterface                             (m_instanceInterface, *m_device)
+       , m_device                                              (createDefaultDevice(vkPlatform, *m_instance, m_instanceInterface, m_physicalDevice, m_usedApiVersion, m_universalQueueFamilyIndex, m_sparseQueueFamilyIndex, m_deviceFeatures.coreFeatures, m_deviceExtensions, cmdLine))
+       , m_deviceInterface                             (vkPlatform, *m_instance, *m_device)
 {
        DE_ASSERT(m_deviceVersions.first == m_deviceVersion);
 }
index 8d956842da9df0420d923622520faad596aa0305..3117eff9b15fe539a8625e8b3246d3399fb80427 100644 (file)
@@ -123,7 +123,9 @@ VkPhysicalDeviceFeatures getDeviceFeaturesForWsi (void)
        return features;
 }
 
-Move<VkDevice> createDeviceWithWsi (const InstanceInterface&           vki,
+Move<VkDevice> createDeviceWithWsi (const vk::PlatformInterface&       vkp,
+                                                                       vk::VkInstance                                  instance,
+                                                                       const InstanceInterface&                vki,
                                                                        VkPhysicalDevice                                physicalDevice,
                                                                        const Extensions&                               supportedExtensions,
                                                                        const deUint32                                  queueFamilyIndex,
@@ -165,7 +167,7 @@ Move<VkDevice> createDeviceWithWsi (const InstanceInterface&                vki,
                &features
        };
 
-       return createDevice(vki, physicalDevice, &deviceParams, pAllocator);
+       return createDevice(vkp, instance, vki, physicalDevice, &deviceParams, pAllocator);
 }
 
 deUint32 getNumQueueFamilyIndices (const InstanceInterface& vki, VkPhysicalDevice physicalDevice)
@@ -234,12 +236,14 @@ struct DeviceHelper
                                  const VkAllocationCallbacks*  pAllocator = DE_NULL)
                : physicalDevice        (chooseDevice(vki, instance, context.getTestContext().getCommandLine()))
                , queueFamilyIndex      (chooseQueueFamilyIndex(vki, physicalDevice, surface))
-               , device                        (createDeviceWithWsi(vki,
+               , device                        (createDeviceWithWsi(context.getPlatformInterface(),
+                                                                                                instance,
+                                                                                                vki,
                                                                                                 physicalDevice,
                                                                                                 enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL),
                                                                                                 queueFamilyIndex,
                                                                                                 pAllocator))
-               , vkd                           (vki, *device)
+               , vkd                           (context.getPlatformInterface(), instance, *device)
                , queue                         (getDeviceQueue(vkd, *device, queueFamilyIndex, 0))
        {
        }
index e980fb4be5dc79acf73669d7285c3b3b0b1d4911..a264e1526210ba06e062707b86396c03a96875fe 100644 (file)
@@ -129,7 +129,9 @@ deUint32 chooseQueueFamilyIndex (const vk::InstanceInterface& vki, vk::VkPhysica
        return supportedFamilyIndices[0];
 }
 
-vk::Move<vk::VkDevice> createDeviceWithWsi (const vk::InstanceInterface&               vki,
+vk::Move<vk::VkDevice> createDeviceWithWsi (const vk::PlatformInterface&               vkp,
+                                                                                       const vk::VkInstance                            instance,
+                                                                                       const vk::InstanceInterface&            vki,
                                                                                        vk::VkPhysicalDevice                            physicalDevice,
                                                                                        const Extensions&                                       supportedExtensions,
                                                                                        const deUint32                                          queueFamilyIndex,
@@ -175,7 +177,7 @@ vk::Move<vk::VkDevice> createDeviceWithWsi (const vk::InstanceInterface&            vki,
                        TCU_THROW(NotSupportedError, (string(extensions[ndx]) + " is not supported").c_str());
        }
 
-       return createDevice(vki, physicalDevice, &deviceParams, pAllocator);
+       return createDevice(vkp, instance, vki, physicalDevice, &deviceParams, pAllocator);
 }
 
 de::MovePtr<vk::wsi::Display> createDisplay (const vk::Platform&       platform,
@@ -934,8 +936,8 @@ DisplayTimingTestInstance::DisplayTimingTestInstance (Context& context, const Te
 
        , m_queueFamilyIndex            (chooseQueueFamilyIndex(m_vki, m_physicalDevice, *m_surface))
        , m_deviceExtensions            (vk::enumerateDeviceExtensionProperties(m_vki, m_physicalDevice, DE_NULL))
-       , m_device                                      (createDeviceWithWsi(m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, testConfig.useDisplayTiming))
-       , m_vkd                                         (m_vki, *m_device)
+       , m_device                                      (createDeviceWithWsi(m_vkp, *m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, testConfig.useDisplayTiming))
+       , m_vkd                                         (m_vkp, *m_instance, *m_device)
        , m_queue                                       (getDeviceQueue(m_vkd, *m_device, m_queueFamilyIndex, 0u))
 
        , m_commandPool                         (createCommandPool(m_vkd, *m_device, m_queueFamilyIndex))
index 23ab4ae4d55152ab71713a08aa9b3a6775347136..ce620c35ee5d973f6354950d392d5b8ebac29ab1 100644 (file)
@@ -132,7 +132,9 @@ deUint32 chooseQueueFamilyIndex (const vk::InstanceInterface& vki, vk::VkPhysica
        return supportedFamilyIndices[0];
 }
 
-vk::Move<vk::VkDevice> createDeviceWithWsi (const vk::InstanceInterface&               vki,
+vk::Move<vk::VkDevice> createDeviceWithWsi (const vk::PlatformInterface&               vkp,
+                                                                                       vk::VkInstance                                          instance,
+                                                                                       const vk::InstanceInterface&            vki,
                                                                                        vk::VkPhysicalDevice                            physicalDevice,
                                                                                        const Extensions&                                       supportedExtensions,
                                                                                        const deUint32                                          queueFamilyIndex,
@@ -178,7 +180,7 @@ vk::Move<vk::VkDevice> createDeviceWithWsi (const vk::InstanceInterface&            vki,
                        TCU_THROW(NotSupportedError, (string(extensions[ndx]) + " is not supported").c_str());
        }
 
-       return createDevice(vki, physicalDevice, &deviceParams, pAllocator);
+       return createDevice(vkp, instance, vki, physicalDevice, &deviceParams, pAllocator);
 }
 
 de::MovePtr<vk::wsi::Display> createDisplay (const vk::Platform&       platform,
@@ -1055,8 +1057,8 @@ IncrementalPresentTestInstance::IncrementalPresentTestInstance (Context& context
 
        , m_queueFamilyIndex            (chooseQueueFamilyIndex(m_vki, m_physicalDevice, *m_surface))
        , m_deviceExtensions            (vk::enumerateDeviceExtensionProperties(m_vki, m_physicalDevice, DE_NULL))
-       , m_device                                      (createDeviceWithWsi(m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, testConfig.useIncrementalPresent))
-       , m_vkd                                         (m_vki, *m_device)
+       , m_device                                      (createDeviceWithWsi(m_vkp, *m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, testConfig.useIncrementalPresent))
+       , m_vkd                                         (m_vkp, *m_instance, *m_device)
        , m_queue                                       (getDeviceQueue(m_vkd, *m_device, m_queueFamilyIndex, 0u))
 
        , m_commandPool                         (createCommandPool(m_vkd, *m_device, m_queueFamilyIndex))
index 25a6aac5fa9f9757ab3c19556c5e10c263e62902..e68c824d18171020e2344958136a010c31067291 100644 (file)
@@ -135,7 +135,9 @@ deUint32 chooseQueueFamilyIndex (const vk::InstanceInterface& vki, vk::VkPhysica
        return supportedFamilyIndices[0];
 }
 
-vk::Move<vk::VkDevice> createDeviceWithWsi (const vk::InstanceInterface&               vki,
+vk::Move<vk::VkDevice> createDeviceWithWsi (const vk::PlatformInterface&               vkp,
+                                                                                       vk::VkInstance                                          instance,
+                                                                                       const vk::InstanceInterface&            vki,
                                                                                        vk::VkPhysicalDevice                            physicalDevice,
                                                                                        const Extensions&                                       supportedExtensions,
                                                                                        const deUint32                                          queueFamilyIndex,
@@ -181,7 +183,7 @@ vk::Move<vk::VkDevice> createDeviceWithWsi (const vk::InstanceInterface&            vki,
                        TCU_THROW(NotSupportedError, (string(extensions[ndx]) + " is not supported").c_str());
        }
 
-       return createDevice(vki, physicalDevice, &deviceParams, pAllocator);
+       return createDevice(vkp, instance, vki, physicalDevice, &deviceParams, pAllocator);
 }
 
 de::MovePtr<vk::wsi::Display> createDisplay (const vk::Platform&       platform,
@@ -927,8 +929,8 @@ SharedPresentableImageTestInstance::SharedPresentableImageTestInstance (Context&
 
        , m_queueFamilyIndex            (chooseQueueFamilyIndex(m_vki, m_physicalDevice, *m_surface))
        , m_deviceExtensions            (vk::enumerateDeviceExtensionProperties(m_vki, m_physicalDevice, DE_NULL))
-       , m_device                                      (createDeviceWithWsi(m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, testConfig.useSharedPresentableImage))
-       , m_vkd                                         (m_vki, *m_device)
+       , m_device                                      (createDeviceWithWsi(m_vkp, *m_instance, m_vki, m_physicalDevice, m_deviceExtensions, m_queueFamilyIndex, testConfig.useSharedPresentableImage))
+       , m_vkd                                         (m_vkp, *m_instance, *m_device)
        , m_queue                                       (getDeviceQueue(m_vkd, *m_device, m_queueFamilyIndex, 0u))
 
        , m_commandPool                         (createCommandPool(m_vkd, *m_device, m_queueFamilyIndex))
index f9376789820e560ca2505799fbca84fce2aeb571..d9785731129cfedf2e4bc433b3945a2895707e5a 100644 (file)
@@ -824,8 +824,8 @@ tcu::TestStatus queryDevGroupSurfacePresentCapabilitiesTest (Context& context, T
                (deviceExtensions.empty() ? DE_NULL : &deviceExtensions[0]),    //ppEnabledExtensionNames;
                DE_NULL,                                                                                                                //pEnabledFeatures;
        };
-       Move<VkDevice>          deviceGroup = createDevice(instHelper.vki, deviceGroupProps[devGroupIdx].physicalDevices[deviceIdx], &deviceCreateInfo);
-       const DeviceDriver      vk      (instHelper.vki, *deviceGroup);
+       Move<VkDevice>          deviceGroup = createDevice(context.getPlatformInterface(), *instHelper.instance, instHelper.vki, deviceGroupProps[devGroupIdx].physicalDevices[deviceIdx], &deviceCreateInfo);
+       const DeviceDriver      vk      (context.getPlatformInterface(), *instHelper.instance, *deviceGroup);
 
 
        presentCapabilities = reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR*>(buffer);
@@ -933,8 +933,8 @@ tcu::TestStatus queryDevGroupSurfacePresentModesTest (Context& context, Type wsi
                DE_NULL,                                                                                                                //pEnabledFeatures;
        };
 
-       Move<VkDevice>          deviceGroup = createDevice(instHelper.vki, deviceGroupProps[devGroupIdx].physicalDevices[deviceIdx], &deviceCreateInfo);
-       const DeviceDriver      vk      (instHelper.vki, *deviceGroup);
+       Move<VkDevice>          deviceGroup = createDevice(context.getPlatformInterface(), *instHelper.instance, instHelper.vki, deviceGroupProps[devGroupIdx].physicalDevices[deviceIdx], &deviceCreateInfo);
+       const DeviceDriver      vk      (context.getPlatformInterface(), *instHelper.instance, *deviceGroup);
        presentModeFlags = reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR*>(buffer);
        deMemset(buffer, GUARD_VALUE, sizeof(buffer));
 
index ad4c0b0a485ea323aa829bbe947e5394d7ed5309..00299697c338a5f18350623b1c4f00a00e33a1e3 100644 (file)
@@ -123,7 +123,9 @@ VkPhysicalDeviceFeatures getDeviceFeaturesForWsi (void)
        return features;
 }
 
-Move<VkDevice> createDeviceWithWsi (const InstanceInterface&           vki,
+Move<VkDevice> createDeviceWithWsi (const PlatformInterface&           vkp,
+                                                                       VkInstance                                              instance,
+                                                                       const InstanceInterface&                vki,
                                                                        VkPhysicalDevice                                physicalDevice,
                                                                        const Extensions&                               supportedExtensions,
                                                                        const deUint32                                  queueFamilyIndex,
@@ -163,7 +165,7 @@ Move<VkDevice> createDeviceWithWsi (const InstanceInterface&                vki,
                        TCU_THROW(NotSupportedError, (string(extensions[ndx]) + " is not supported").c_str());
        }
 
-       return createDevice(vki, physicalDevice, &deviceParams, pAllocator);
+       return createDevice(vkp, instance, vki, physicalDevice, &deviceParams, pAllocator);
 }
 
 deUint32 getNumQueueFamilyIndices (const InstanceInterface& vki, VkPhysicalDevice physicalDevice)
@@ -232,12 +234,14 @@ struct DeviceHelper
                                  const VkAllocationCallbacks*  pAllocator = DE_NULL)
                : physicalDevice        (chooseDevice(vki, instance, context.getTestContext().getCommandLine()))
                , queueFamilyIndex      (chooseQueueFamilyIndex(vki, physicalDevice, surface))
-               , device                        (createDeviceWithWsi(vki,
+               , device                        (createDeviceWithWsi(context.getPlatformInterface(),
+                                                                                                context.getInstance(),
+                                                                                                vki,
                                                                                                 physicalDevice,
                                                                                                 enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL),
                                                                                                 queueFamilyIndex,
                                                                                                 pAllocator))
-               , vkd                           (vki, *device)
+               , vkd                           (context.getPlatformInterface(), context.getInstance(), *device)
                , queue                         (getDeviceQueue(vkd, *device, queueFamilyIndex, 0))
        {
        }
index aeca298483e056f5852cc9ddb7af74eadfd1e865..788764de5384de7b1c91189e66372c7740de9b07 100644 (file)
@@ -338,8 +338,6 @@ class Function:
                # Special functions
                if self.name == "vkGetInstanceProcAddr":
                        return Function.TYPE_PLATFORM
-               elif self.name == "vkGetDeviceProcAddr":
-                       return Function.TYPE_INSTANCE
                assert len(self.arguments) > 0
                firstArgType = self.arguments[0].getType()
                if firstArgType in ["VkInstance", "VkPhysicalDevice"]:
@@ -1029,15 +1027,20 @@ def writeStrUtilImpl (api, filename):
        writeInlFile(filename, INL_HEADER, makeStrUtilImpl())
 
 class ConstructorFunction:
-       def __init__ (self, type, name, objectType, iface, arguments):
+       def __init__ (self, type, name, objectType, ifaceArgs, arguments):
                self.type               = type
                self.name               = name
                self.objectType = objectType
-               self.iface              = iface
+               self.ifaceArgs  = ifaceArgs
                self.arguments  = arguments
 
 def getConstructorFunctions (api):
        funcs = []
+       ifacesDict = {
+               Function.TYPE_PLATFORM: [Variable("const PlatformInterface&", "vk", "")],
+               Function.TYPE_INSTANCE: [Variable("const InstanceInterface&", "vk", "")],
+               Function.TYPE_DEVICE: [Variable("const DeviceInterface&", "vk", "")]
+       }
        for function in api.functions:
                if function.isAlias:
                        continue
@@ -1046,19 +1049,15 @@ def getConstructorFunctions (api):
                                continue # No way to delete display modes (bug?)
 
                        # \todo [pyry] Rather hacky
-                       iface = None
-                       if function.getType() == Function.TYPE_PLATFORM:
-                               iface = Variable("const PlatformInterface&", "vk", "")
-                       elif function.getType() == Function.TYPE_INSTANCE:
-                               iface = Variable("const InstanceInterface&", "vk", "")
-                       else:
-                               iface = Variable("const DeviceInterface&", "vk", "")
+                       ifaceArgs = ifacesDict[function.getType()]
+                       if function.name == "vkCreateDevice":
+                               ifaceArgs = [Variable("const PlatformInterface&", "vkp", ""), Variable("VkInstance", "instance", "")] + ifaceArgs
 
                        assert (function.arguments[-2].type == ["const", "VkAllocationCallbacks", "*"])
 
                        objectType      = function.arguments[-1].type[0] #not getType() but type[0] on purpose
                        arguments       = function.arguments[:-1]
-                       funcs.append(ConstructorFunction(function.getType(), getInterfaceName(function), objectType, iface, arguments))
+                       funcs.append(ConstructorFunction(function.getType(), getInterfaceName(function), objectType, ifaceArgs, arguments))
        return funcs
 
 def addVersionDefines(versionSpectrum):
@@ -1074,7 +1073,7 @@ def writeRefUtilProto (api, filename):
 
        def makeRefUtilProto ():
                unindented = []
-               for line in indentLines(["Move<%s>\t%s\t(%s = DE_NULL);" % (function.objectType, function.name, argListToStr([function.iface] + function.arguments)) for function in functions]):
+               for line in indentLines(["Move<%s>\t%s\t(%s = DE_NULL);" % (function.objectType, function.name, argListToStr(function.ifaceArgs + function.arguments)) for function in functions]):
                        yield line
 
        writeInlFile(filename, INL_HEADER, makeRefUtilProto())
@@ -1103,22 +1102,25 @@ def writeRefUtilImpl (api, filename):
                yield "} // refdetails"
                yield ""
 
+               dtorDict = {
+                       Function.TYPE_PLATFORM: "object",
+                       Function.TYPE_INSTANCE: "instance",
+                       Function.TYPE_DEVICE: "device"
+               }
+
                for function in functions:
-                       if function.type == Function.TYPE_DEVICE:
-                               dtorObj = "device"
-                       elif function.type == Function.TYPE_INSTANCE:
-                               if function.name == "createDevice":
-                                       dtorObj = "object"
-                               else:
-                                       dtorObj = "instance"
+                       deleterArgsString = ''
+                       if function.name == "createDevice":
+                               # createDevice requires two additional parameters to setup VkDevice deleter
+                               deleterArgsString = "vkp, instance, object, " +  function.arguments[-1].name
                        else:
-                               dtorObj = "object"
+                               deleterArgsString = "vk, %s, %s" % (dtorDict[function.type], function.arguments[-1].name)
 
-                       yield "Move<%s> %s (%s)" % (function.objectType, function.name, argListToStr([function.iface] + function.arguments))
+                       yield "Move<%s> %s (%s)" % (function.objectType, function.name, argListToStr(function.ifaceArgs + function.arguments))
                        yield "{"
                        yield "\t%s object = 0;" % function.objectType
                        yield "\tVK_CHECK(vk.%s(%s));" % (function.name, ", ".join([a.name for a in function.arguments] + ["&object"]))
-                       yield "\treturn Move<%s>(check<%s>(object), Deleter<%s>(%s));" % (function.objectType, function.objectType, function.objectType, ", ".join(["vk", dtorObj, function.arguments[-1].name]))
+                       yield "\treturn Move<%s>(check<%s>(object), Deleter<%s>(%s));" % (function.objectType, function.objectType, function.objectType, deleterArgsString)
                        yield "}"
                        yield ""