From b8b1acfc4547a44aac259956f3e190a197d12ede Mon Sep 17 00:00:00 2001 From: Boris Zanin Date: Sun, 7 May 2017 14:21:28 +0200 Subject: [PATCH] Add test for VK_KHR_get_memory_requirements2 Update tests: * dEQP-VK.memory.requirements.buffer.* * dEQP-VK.memory.requirements.image.* Rename tests (add .core subgroup): * dEQP-VK.memory.requirements.core.buffer.* * dEQP-VK.memory.requirements.core.image.* Add tests: * dEQP-VK.memory.requirements.extended.buffer.* * dEQP-VK.memory.requirements.extended.image.* Components: Vulkan VK-GL-CTS issue: 391 Change-Id: I307bbf361d36d5f277ff70ce3204d67f8eb59871 (cherry picked from commit 140028f310bf6116a2c9063a5565fae6bf5152bb) --- android/cts/master/vk-master.txt | 45 +- .../vulkancts/framework/vulkan/vkBasicTypes.inl | 5 + .../framework/vulkan/vkConcreteDeviceInterface.inl | 273 +++---- .../framework/vulkan/vkDeviceDriverImpl.inl | 15 + .../framework/vulkan/vkDeviceFunctionPointers.inl | 273 +++---- .../framework/vulkan/vkFunctionPointerTypes.inl | 3 + .../vulkan/vkInitDeviceFunctionPointers.inl | 273 +++---- .../framework/vulkan/vkNullDriverImpl.inl | 25 + external/vulkancts/framework/vulkan/vkStrUtil.inl | 5 + .../vulkancts/framework/vulkan/vkStrUtilImpl.inl | 55 ++ .../vulkancts/framework/vulkan/vkStructTypes.inl | 35 + .../framework/vulkan/vkVirtualDeviceInterface.inl | 273 +++---- .../modules/vulkan/api/vktApiFeatureInfo.cpp | 1 + .../vulkan/memory/vktMemoryRequirementsTests.cpp | 815 +++++++++++++++------ external/vulkancts/mustpass/1.0.2/vk-default.txt | 45 +- external/vulkancts/scripts/src/vulkan.h.in | 62 ++ 16 files changed, 1429 insertions(+), 774 deletions(-) diff --git a/android/cts/master/vk-master.txt b/android/cts/master/vk-master.txt index aae6941..2674fca 100644 --- a/android/cts/master/vk-master.txt +++ b/android/cts/master/vk-master.txt @@ -15321,21 +15321,36 @@ dEQP-VK.memory.pipeline_barrier.all_device.1024 dEQP-VK.memory.pipeline_barrier.all_device.8192 dEQP-VK.memory.pipeline_barrier.all_device.65536 dEQP-VK.memory.pipeline_barrier.all_device.1048576 -dEQP-VK.memory.requirements.buffer.regular -dEQP-VK.memory.requirements.buffer.sparse -dEQP-VK.memory.requirements.buffer.sparse_residency -dEQP-VK.memory.requirements.buffer.sparse_aliased -dEQP-VK.memory.requirements.buffer.sparse_residency_aliased -dEQP-VK.memory.requirements.image.regular_tiling_linear -dEQP-VK.memory.requirements.image.regular_tiling_optimal -dEQP-VK.memory.requirements.image.transient_tiling_linear -dEQP-VK.memory.requirements.image.transient_tiling_optimal -dEQP-VK.memory.requirements.image.sparse_tiling_linear -dEQP-VK.memory.requirements.image.sparse_tiling_optimal -dEQP-VK.memory.requirements.image.sparse_residency_tiling_optimal -dEQP-VK.memory.requirements.image.sparse_aliased_tiling_linear -dEQP-VK.memory.requirements.image.sparse_aliased_tiling_optimal -dEQP-VK.memory.requirements.image.sparse_residency_aliased_tiling_optimal +dEQP-VK.memory.requirements.core.buffer.regular +dEQP-VK.memory.requirements.core.buffer.sparse +dEQP-VK.memory.requirements.core.buffer.sparse_residency +dEQP-VK.memory.requirements.core.buffer.sparse_aliased +dEQP-VK.memory.requirements.core.buffer.sparse_residency_aliased +dEQP-VK.memory.requirements.core.image.regular_tiling_linear +dEQP-VK.memory.requirements.core.image.regular_tiling_optimal +dEQP-VK.memory.requirements.core.image.transient_tiling_linear +dEQP-VK.memory.requirements.core.image.transient_tiling_optimal +dEQP-VK.memory.requirements.core.image.sparse_tiling_linear +dEQP-VK.memory.requirements.core.image.sparse_tiling_optimal +dEQP-VK.memory.requirements.core.image.sparse_residency_tiling_optimal +dEQP-VK.memory.requirements.core.image.sparse_aliased_tiling_linear +dEQP-VK.memory.requirements.core.image.sparse_aliased_tiling_optimal +dEQP-VK.memory.requirements.core.image.sparse_residency_aliased_tiling_optimal +dEQP-VK.memory.requirements.extended.buffer.regular +dEQP-VK.memory.requirements.extended.buffer.sparse +dEQP-VK.memory.requirements.extended.buffer.sparse_residency +dEQP-VK.memory.requirements.extended.buffer.sparse_aliased +dEQP-VK.memory.requirements.extended.buffer.sparse_residency_aliased +dEQP-VK.memory.requirements.extended.image.regular_tiling_linear +dEQP-VK.memory.requirements.extended.image.regular_tiling_optimal +dEQP-VK.memory.requirements.extended.image.transient_tiling_linear +dEQP-VK.memory.requirements.extended.image.transient_tiling_optimal +dEQP-VK.memory.requirements.extended.image.sparse_tiling_linear +dEQP-VK.memory.requirements.extended.image.sparse_tiling_optimal +dEQP-VK.memory.requirements.extended.image.sparse_residency_tiling_optimal +dEQP-VK.memory.requirements.extended.image.sparse_aliased_tiling_linear +dEQP-VK.memory.requirements.extended.image.sparse_aliased_tiling_optimal +dEQP-VK.memory.requirements.extended.image.sparse_residency_aliased_tiling_optimal dEQP-VK.pipeline.stencil.format.s8_uint.states.front_fail_decc_pass_repl_dfail_inv_comp_not_equal_back_fail_decc_pass_repl_dfail_keep_comp_less dEQP-VK.pipeline.stencil.format.s8_uint.states.front_fail_incc_pass_keep_dfail_inv_comp_not_equal_back_fail_decc_pass_repl_dfail_inv_comp_not_equal dEQP-VK.pipeline.stencil.format.s8_uint.states.front_fail_wrap_pass_decw_dfail_wrap_comp_less_back_fail_incc_pass_keep_dfail_inv_comp_not_equal diff --git a/external/vulkancts/framework/vulkan/vkBasicTypes.inl b/external/vulkancts/framework/vulkan/vkBasicTypes.inl index ea03621..3086304 100644 --- a/external/vulkancts/framework/vulkan/vkBasicTypes.inl +++ b/external/vulkancts/framework/vulkan/vkBasicTypes.inl @@ -165,6 +165,11 @@ enum VkStructureType VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001, VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001, + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002, + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003, + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004, }; enum VkSystemAllocationScope diff --git a/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl b/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl index 8cc6e9d..90c9f79 100644 --- a/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl +++ b/external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl @@ -1,138 +1,141 @@ /* 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 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 createSharedSwapchainsKHR (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const; -virtual void trimCommandPoolKHR (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags) const; -virtual void cmdPushDescriptorSetKHR (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const; -virtual VkResult createDescriptorUpdateTemplateKHR (VkDevice device, const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) const; -virtual void destroyDescriptorUpdateTemplateKHR (VkDevice device, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const; -virtual void updateDescriptorSetWithTemplateKHR (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData) const; -virtual void cmdPushDescriptorSetWithTemplateKHR (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const; -virtual VkResult getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR swapchain) 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 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 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 createSharedSwapchainsKHR (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const; +virtual void trimCommandPoolKHR (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags) const; +virtual void cmdPushDescriptorSetKHR (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const; +virtual VkResult createDescriptorUpdateTemplateKHR (VkDevice device, const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) const; +virtual void destroyDescriptorUpdateTemplateKHR (VkDevice device, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const; +virtual void updateDescriptorSetWithTemplateKHR (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData) const; +virtual void cmdPushDescriptorSetWithTemplateKHR (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const; +virtual VkResult getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR swapchain) const; +virtual void getImageMemoryRequirements2KHR (VkDevice device, const VkImageMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) const; +virtual void getBufferMemoryRequirements2KHR (VkDevice device, const VkBufferMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) const; +virtual void getImageSparseMemoryRequirements2KHR (VkDevice device, const VkImageSparseMemoryRequirementsInfo2KHR* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements) const; +virtual VkResult getRefreshCycleDurationGOOGLE (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) const; +virtual VkResult getPastPresentationTimingGOOGLE (VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings) const; diff --git a/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl b/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl index 3b7a702..ede1507 100644 --- a/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl +++ b/external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl @@ -667,6 +667,21 @@ VkResult DeviceDriver::getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR sw return m_vk.getSwapchainStatusKHR(device, swapchain); } +void DeviceDriver::getImageMemoryRequirements2KHR (VkDevice device, const VkImageMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) const +{ + m_vk.getImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements); +} + +void DeviceDriver::getBufferMemoryRequirements2KHR (VkDevice device, const VkBufferMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) const +{ + m_vk.getBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements); +} + +void DeviceDriver::getImageSparseMemoryRequirements2KHR (VkDevice device, const VkImageSparseMemoryRequirementsInfo2KHR* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements) const +{ + m_vk.getImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements); +} + VkResult DeviceDriver::getRefreshCycleDurationGOOGLE (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) const { return m_vk.getRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties); diff --git a/external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl index 02e1940..d99f2c5 100644 --- a/external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl +++ b/external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl @@ -1,138 +1,141 @@ /* WARNING: This is auto-generated file. Do not modify, since changes will * be lost! Modify the generating script instead. */ -DestroyDeviceFunc destroyDevice; -GetDeviceQueueFunc getDeviceQueue; -QueueSubmitFunc queueSubmit; -QueueWaitIdleFunc queueWaitIdle; -DeviceWaitIdleFunc deviceWaitIdle; -AllocateMemoryFunc allocateMemory; -FreeMemoryFunc freeMemory; -MapMemoryFunc mapMemory; -UnmapMemoryFunc unmapMemory; -FlushMappedMemoryRangesFunc flushMappedMemoryRanges; -InvalidateMappedMemoryRangesFunc invalidateMappedMemoryRanges; -GetDeviceMemoryCommitmentFunc getDeviceMemoryCommitment; -BindBufferMemoryFunc bindBufferMemory; -BindImageMemoryFunc bindImageMemory; -GetBufferMemoryRequirementsFunc getBufferMemoryRequirements; -GetImageMemoryRequirementsFunc getImageMemoryRequirements; -GetImageSparseMemoryRequirementsFunc getImageSparseMemoryRequirements; -QueueBindSparseFunc queueBindSparse; -CreateFenceFunc createFence; -DestroyFenceFunc destroyFence; -ResetFencesFunc resetFences; -GetFenceStatusFunc getFenceStatus; -WaitForFencesFunc waitForFences; -CreateSemaphoreFunc createSemaphore; -DestroySemaphoreFunc destroySemaphore; -CreateEventFunc createEvent; -DestroyEventFunc destroyEvent; -GetEventStatusFunc getEventStatus; -SetEventFunc setEvent; -ResetEventFunc resetEvent; -CreateQueryPoolFunc createQueryPool; -DestroyQueryPoolFunc destroyQueryPool; -GetQueryPoolResultsFunc getQueryPoolResults; -CreateBufferFunc createBuffer; -DestroyBufferFunc destroyBuffer; -CreateBufferViewFunc createBufferView; -DestroyBufferViewFunc destroyBufferView; -CreateImageFunc createImage; -DestroyImageFunc destroyImage; -GetImageSubresourceLayoutFunc getImageSubresourceLayout; -CreateImageViewFunc createImageView; -DestroyImageViewFunc destroyImageView; -CreateShaderModuleFunc createShaderModule; -DestroyShaderModuleFunc destroyShaderModule; -CreatePipelineCacheFunc createPipelineCache; -DestroyPipelineCacheFunc destroyPipelineCache; -GetPipelineCacheDataFunc getPipelineCacheData; -MergePipelineCachesFunc mergePipelineCaches; -CreateGraphicsPipelinesFunc createGraphicsPipelines; -CreateComputePipelinesFunc createComputePipelines; -DestroyPipelineFunc destroyPipeline; -CreatePipelineLayoutFunc createPipelineLayout; -DestroyPipelineLayoutFunc destroyPipelineLayout; -CreateSamplerFunc createSampler; -DestroySamplerFunc destroySampler; -CreateDescriptorSetLayoutFunc createDescriptorSetLayout; -DestroyDescriptorSetLayoutFunc destroyDescriptorSetLayout; -CreateDescriptorPoolFunc createDescriptorPool; -DestroyDescriptorPoolFunc destroyDescriptorPool; -ResetDescriptorPoolFunc resetDescriptorPool; -AllocateDescriptorSetsFunc allocateDescriptorSets; -FreeDescriptorSetsFunc freeDescriptorSets; -UpdateDescriptorSetsFunc updateDescriptorSets; -CreateFramebufferFunc createFramebuffer; -DestroyFramebufferFunc destroyFramebuffer; -CreateRenderPassFunc createRenderPass; -DestroyRenderPassFunc destroyRenderPass; -GetRenderAreaGranularityFunc getRenderAreaGranularity; -CreateCommandPoolFunc createCommandPool; -DestroyCommandPoolFunc destroyCommandPool; -ResetCommandPoolFunc resetCommandPool; -AllocateCommandBuffersFunc allocateCommandBuffers; -FreeCommandBuffersFunc freeCommandBuffers; -BeginCommandBufferFunc beginCommandBuffer; -EndCommandBufferFunc endCommandBuffer; -ResetCommandBufferFunc resetCommandBuffer; -CmdBindPipelineFunc cmdBindPipeline; -CmdSetViewportFunc cmdSetViewport; -CmdSetScissorFunc cmdSetScissor; -CmdSetLineWidthFunc cmdSetLineWidth; -CmdSetDepthBiasFunc cmdSetDepthBias; -CmdSetBlendConstantsFunc cmdSetBlendConstants; -CmdSetDepthBoundsFunc cmdSetDepthBounds; -CmdSetStencilCompareMaskFunc cmdSetStencilCompareMask; -CmdSetStencilWriteMaskFunc cmdSetStencilWriteMask; -CmdSetStencilReferenceFunc cmdSetStencilReference; -CmdBindDescriptorSetsFunc cmdBindDescriptorSets; -CmdBindIndexBufferFunc cmdBindIndexBuffer; -CmdBindVertexBuffersFunc cmdBindVertexBuffers; -CmdDrawFunc cmdDraw; -CmdDrawIndexedFunc cmdDrawIndexed; -CmdDrawIndirectFunc cmdDrawIndirect; -CmdDrawIndexedIndirectFunc cmdDrawIndexedIndirect; -CmdDispatchFunc cmdDispatch; -CmdDispatchIndirectFunc cmdDispatchIndirect; -CmdCopyBufferFunc cmdCopyBuffer; -CmdCopyImageFunc cmdCopyImage; -CmdBlitImageFunc cmdBlitImage; -CmdCopyBufferToImageFunc cmdCopyBufferToImage; -CmdCopyImageToBufferFunc cmdCopyImageToBuffer; -CmdUpdateBufferFunc cmdUpdateBuffer; -CmdFillBufferFunc cmdFillBuffer; -CmdClearColorImageFunc cmdClearColorImage; -CmdClearDepthStencilImageFunc cmdClearDepthStencilImage; -CmdClearAttachmentsFunc cmdClearAttachments; -CmdResolveImageFunc cmdResolveImage; -CmdSetEventFunc cmdSetEvent; -CmdResetEventFunc cmdResetEvent; -CmdWaitEventsFunc cmdWaitEvents; -CmdPipelineBarrierFunc cmdPipelineBarrier; -CmdBeginQueryFunc cmdBeginQuery; -CmdEndQueryFunc cmdEndQuery; -CmdResetQueryPoolFunc cmdResetQueryPool; -CmdWriteTimestampFunc cmdWriteTimestamp; -CmdCopyQueryPoolResultsFunc cmdCopyQueryPoolResults; -CmdPushConstantsFunc cmdPushConstants; -CmdBeginRenderPassFunc cmdBeginRenderPass; -CmdNextSubpassFunc cmdNextSubpass; -CmdEndRenderPassFunc cmdEndRenderPass; -CmdExecuteCommandsFunc cmdExecuteCommands; -CreateSwapchainKHRFunc createSwapchainKHR; -DestroySwapchainKHRFunc destroySwapchainKHR; -GetSwapchainImagesKHRFunc getSwapchainImagesKHR; -AcquireNextImageKHRFunc acquireNextImageKHR; -QueuePresentKHRFunc queuePresentKHR; -CreateSharedSwapchainsKHRFunc createSharedSwapchainsKHR; -TrimCommandPoolKHRFunc trimCommandPoolKHR; -CmdPushDescriptorSetKHRFunc cmdPushDescriptorSetKHR; -CreateDescriptorUpdateTemplateKHRFunc createDescriptorUpdateTemplateKHR; -DestroyDescriptorUpdateTemplateKHRFunc destroyDescriptorUpdateTemplateKHR; -UpdateDescriptorSetWithTemplateKHRFunc updateDescriptorSetWithTemplateKHR; -CmdPushDescriptorSetWithTemplateKHRFunc cmdPushDescriptorSetWithTemplateKHR; -GetSwapchainStatusKHRFunc getSwapchainStatusKHR; -GetRefreshCycleDurationGOOGLEFunc getRefreshCycleDurationGOOGLE; -GetPastPresentationTimingGOOGLEFunc getPastPresentationTimingGOOGLE; +DestroyDeviceFunc destroyDevice; +GetDeviceQueueFunc getDeviceQueue; +QueueSubmitFunc queueSubmit; +QueueWaitIdleFunc queueWaitIdle; +DeviceWaitIdleFunc deviceWaitIdle; +AllocateMemoryFunc allocateMemory; +FreeMemoryFunc freeMemory; +MapMemoryFunc mapMemory; +UnmapMemoryFunc unmapMemory; +FlushMappedMemoryRangesFunc flushMappedMemoryRanges; +InvalidateMappedMemoryRangesFunc invalidateMappedMemoryRanges; +GetDeviceMemoryCommitmentFunc getDeviceMemoryCommitment; +BindBufferMemoryFunc bindBufferMemory; +BindImageMemoryFunc bindImageMemory; +GetBufferMemoryRequirementsFunc getBufferMemoryRequirements; +GetImageMemoryRequirementsFunc getImageMemoryRequirements; +GetImageSparseMemoryRequirementsFunc getImageSparseMemoryRequirements; +QueueBindSparseFunc queueBindSparse; +CreateFenceFunc createFence; +DestroyFenceFunc destroyFence; +ResetFencesFunc resetFences; +GetFenceStatusFunc getFenceStatus; +WaitForFencesFunc waitForFences; +CreateSemaphoreFunc createSemaphore; +DestroySemaphoreFunc destroySemaphore; +CreateEventFunc createEvent; +DestroyEventFunc destroyEvent; +GetEventStatusFunc getEventStatus; +SetEventFunc setEvent; +ResetEventFunc resetEvent; +CreateQueryPoolFunc createQueryPool; +DestroyQueryPoolFunc destroyQueryPool; +GetQueryPoolResultsFunc getQueryPoolResults; +CreateBufferFunc createBuffer; +DestroyBufferFunc destroyBuffer; +CreateBufferViewFunc createBufferView; +DestroyBufferViewFunc destroyBufferView; +CreateImageFunc createImage; +DestroyImageFunc destroyImage; +GetImageSubresourceLayoutFunc getImageSubresourceLayout; +CreateImageViewFunc createImageView; +DestroyImageViewFunc destroyImageView; +CreateShaderModuleFunc createShaderModule; +DestroyShaderModuleFunc destroyShaderModule; +CreatePipelineCacheFunc createPipelineCache; +DestroyPipelineCacheFunc destroyPipelineCache; +GetPipelineCacheDataFunc getPipelineCacheData; +MergePipelineCachesFunc mergePipelineCaches; +CreateGraphicsPipelinesFunc createGraphicsPipelines; +CreateComputePipelinesFunc createComputePipelines; +DestroyPipelineFunc destroyPipeline; +CreatePipelineLayoutFunc createPipelineLayout; +DestroyPipelineLayoutFunc destroyPipelineLayout; +CreateSamplerFunc createSampler; +DestroySamplerFunc destroySampler; +CreateDescriptorSetLayoutFunc createDescriptorSetLayout; +DestroyDescriptorSetLayoutFunc destroyDescriptorSetLayout; +CreateDescriptorPoolFunc createDescriptorPool; +DestroyDescriptorPoolFunc destroyDescriptorPool; +ResetDescriptorPoolFunc resetDescriptorPool; +AllocateDescriptorSetsFunc allocateDescriptorSets; +FreeDescriptorSetsFunc freeDescriptorSets; +UpdateDescriptorSetsFunc updateDescriptorSets; +CreateFramebufferFunc createFramebuffer; +DestroyFramebufferFunc destroyFramebuffer; +CreateRenderPassFunc createRenderPass; +DestroyRenderPassFunc destroyRenderPass; +GetRenderAreaGranularityFunc getRenderAreaGranularity; +CreateCommandPoolFunc createCommandPool; +DestroyCommandPoolFunc destroyCommandPool; +ResetCommandPoolFunc resetCommandPool; +AllocateCommandBuffersFunc allocateCommandBuffers; +FreeCommandBuffersFunc freeCommandBuffers; +BeginCommandBufferFunc beginCommandBuffer; +EndCommandBufferFunc endCommandBuffer; +ResetCommandBufferFunc resetCommandBuffer; +CmdBindPipelineFunc cmdBindPipeline; +CmdSetViewportFunc cmdSetViewport; +CmdSetScissorFunc cmdSetScissor; +CmdSetLineWidthFunc cmdSetLineWidth; +CmdSetDepthBiasFunc cmdSetDepthBias; +CmdSetBlendConstantsFunc cmdSetBlendConstants; +CmdSetDepthBoundsFunc cmdSetDepthBounds; +CmdSetStencilCompareMaskFunc cmdSetStencilCompareMask; +CmdSetStencilWriteMaskFunc cmdSetStencilWriteMask; +CmdSetStencilReferenceFunc cmdSetStencilReference; +CmdBindDescriptorSetsFunc cmdBindDescriptorSets; +CmdBindIndexBufferFunc cmdBindIndexBuffer; +CmdBindVertexBuffersFunc cmdBindVertexBuffers; +CmdDrawFunc cmdDraw; +CmdDrawIndexedFunc cmdDrawIndexed; +CmdDrawIndirectFunc cmdDrawIndirect; +CmdDrawIndexedIndirectFunc cmdDrawIndexedIndirect; +CmdDispatchFunc cmdDispatch; +CmdDispatchIndirectFunc cmdDispatchIndirect; +CmdCopyBufferFunc cmdCopyBuffer; +CmdCopyImageFunc cmdCopyImage; +CmdBlitImageFunc cmdBlitImage; +CmdCopyBufferToImageFunc cmdCopyBufferToImage; +CmdCopyImageToBufferFunc cmdCopyImageToBuffer; +CmdUpdateBufferFunc cmdUpdateBuffer; +CmdFillBufferFunc cmdFillBuffer; +CmdClearColorImageFunc cmdClearColorImage; +CmdClearDepthStencilImageFunc cmdClearDepthStencilImage; +CmdClearAttachmentsFunc cmdClearAttachments; +CmdResolveImageFunc cmdResolveImage; +CmdSetEventFunc cmdSetEvent; +CmdResetEventFunc cmdResetEvent; +CmdWaitEventsFunc cmdWaitEvents; +CmdPipelineBarrierFunc cmdPipelineBarrier; +CmdBeginQueryFunc cmdBeginQuery; +CmdEndQueryFunc cmdEndQuery; +CmdResetQueryPoolFunc cmdResetQueryPool; +CmdWriteTimestampFunc cmdWriteTimestamp; +CmdCopyQueryPoolResultsFunc cmdCopyQueryPoolResults; +CmdPushConstantsFunc cmdPushConstants; +CmdBeginRenderPassFunc cmdBeginRenderPass; +CmdNextSubpassFunc cmdNextSubpass; +CmdEndRenderPassFunc cmdEndRenderPass; +CmdExecuteCommandsFunc cmdExecuteCommands; +CreateSwapchainKHRFunc createSwapchainKHR; +DestroySwapchainKHRFunc destroySwapchainKHR; +GetSwapchainImagesKHRFunc getSwapchainImagesKHR; +AcquireNextImageKHRFunc acquireNextImageKHR; +QueuePresentKHRFunc queuePresentKHR; +CreateSharedSwapchainsKHRFunc createSharedSwapchainsKHR; +TrimCommandPoolKHRFunc trimCommandPoolKHR; +CmdPushDescriptorSetKHRFunc cmdPushDescriptorSetKHR; +CreateDescriptorUpdateTemplateKHRFunc createDescriptorUpdateTemplateKHR; +DestroyDescriptorUpdateTemplateKHRFunc destroyDescriptorUpdateTemplateKHR; +UpdateDescriptorSetWithTemplateKHRFunc updateDescriptorSetWithTemplateKHR; +CmdPushDescriptorSetWithTemplateKHRFunc cmdPushDescriptorSetWithTemplateKHR; +GetSwapchainStatusKHRFunc getSwapchainStatusKHR; +GetImageMemoryRequirements2KHRFunc getImageMemoryRequirements2KHR; +GetBufferMemoryRequirements2KHRFunc getBufferMemoryRequirements2KHR; +GetImageSparseMemoryRequirements2KHRFunc getImageSparseMemoryRequirements2KHR; +GetRefreshCycleDurationGOOGLEFunc getRefreshCycleDurationGOOGLE; +GetPastPresentationTimingGOOGLEFunc getPastPresentationTimingGOOGLE; diff --git a/external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl b/external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl index fcffc01..95baf37 100644 --- a/external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl +++ b/external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl @@ -183,6 +183,9 @@ typedef VKAPI_ATTR void (VKAPI_CALL* CmdPushDescriptorSetWithTemplateKHRFunc typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetSwapchainStatusKHRFunc) (VkDevice device, VkSwapchainKHR swapchain); typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilities2KHRFunc) (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities); typedef VKAPI_ATTR VkResult (VKAPI_CALL* GetPhysicalDeviceSurfaceFormats2KHRFunc) (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats); +typedef VKAPI_ATTR void (VKAPI_CALL* GetImageMemoryRequirements2KHRFunc) (VkDevice device, const VkImageMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); +typedef VKAPI_ATTR void (VKAPI_CALL* GetBufferMemoryRequirements2KHRFunc) (VkDevice device, const VkBufferMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); +typedef VKAPI_ATTR void (VKAPI_CALL* GetImageSparseMemoryRequirements2KHRFunc) (VkDevice device, const VkImageSparseMemoryRequirementsInfo2KHR* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements); typedef VKAPI_ATTR VkResult (VKAPI_CALL* CreateDebugReportCallbackEXTFunc) (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback); typedef VKAPI_ATTR void (VKAPI_CALL* DestroyDebugReportCallbackEXTFunc) (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator); typedef VKAPI_ATTR void (VKAPI_CALL* DebugReportMessageEXTFunc) (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage); diff --git a/external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl index 285fcfa..82b40fb 100644 --- a/external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl +++ b/external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl @@ -1,138 +1,141 @@ /* WARNING: This is auto-generated file. Do not modify, since changes will * be lost! Modify the generating script instead. */ -m_vk.destroyDevice = (DestroyDeviceFunc) GET_PROC_ADDR("vkDestroyDevice"); -m_vk.getDeviceQueue = (GetDeviceQueueFunc) GET_PROC_ADDR("vkGetDeviceQueue"); -m_vk.queueSubmit = (QueueSubmitFunc) GET_PROC_ADDR("vkQueueSubmit"); -m_vk.queueWaitIdle = (QueueWaitIdleFunc) GET_PROC_ADDR("vkQueueWaitIdle"); -m_vk.deviceWaitIdle = (DeviceWaitIdleFunc) GET_PROC_ADDR("vkDeviceWaitIdle"); -m_vk.allocateMemory = (AllocateMemoryFunc) GET_PROC_ADDR("vkAllocateMemory"); -m_vk.freeMemory = (FreeMemoryFunc) GET_PROC_ADDR("vkFreeMemory"); -m_vk.mapMemory = (MapMemoryFunc) GET_PROC_ADDR("vkMapMemory"); -m_vk.unmapMemory = (UnmapMemoryFunc) GET_PROC_ADDR("vkUnmapMemory"); -m_vk.flushMappedMemoryRanges = (FlushMappedMemoryRangesFunc) GET_PROC_ADDR("vkFlushMappedMemoryRanges"); -m_vk.invalidateMappedMemoryRanges = (InvalidateMappedMemoryRangesFunc) GET_PROC_ADDR("vkInvalidateMappedMemoryRanges"); -m_vk.getDeviceMemoryCommitment = (GetDeviceMemoryCommitmentFunc) GET_PROC_ADDR("vkGetDeviceMemoryCommitment"); -m_vk.bindBufferMemory = (BindBufferMemoryFunc) GET_PROC_ADDR("vkBindBufferMemory"); -m_vk.bindImageMemory = (BindImageMemoryFunc) GET_PROC_ADDR("vkBindImageMemory"); -m_vk.getBufferMemoryRequirements = (GetBufferMemoryRequirementsFunc) GET_PROC_ADDR("vkGetBufferMemoryRequirements"); -m_vk.getImageMemoryRequirements = (GetImageMemoryRequirementsFunc) GET_PROC_ADDR("vkGetImageMemoryRequirements"); -m_vk.getImageSparseMemoryRequirements = (GetImageSparseMemoryRequirementsFunc) GET_PROC_ADDR("vkGetImageSparseMemoryRequirements"); -m_vk.queueBindSparse = (QueueBindSparseFunc) GET_PROC_ADDR("vkQueueBindSparse"); -m_vk.createFence = (CreateFenceFunc) GET_PROC_ADDR("vkCreateFence"); -m_vk.destroyFence = (DestroyFenceFunc) GET_PROC_ADDR("vkDestroyFence"); -m_vk.resetFences = (ResetFencesFunc) GET_PROC_ADDR("vkResetFences"); -m_vk.getFenceStatus = (GetFenceStatusFunc) GET_PROC_ADDR("vkGetFenceStatus"); -m_vk.waitForFences = (WaitForFencesFunc) GET_PROC_ADDR("vkWaitForFences"); -m_vk.createSemaphore = (CreateSemaphoreFunc) GET_PROC_ADDR("vkCreateSemaphore"); -m_vk.destroySemaphore = (DestroySemaphoreFunc) GET_PROC_ADDR("vkDestroySemaphore"); -m_vk.createEvent = (CreateEventFunc) GET_PROC_ADDR("vkCreateEvent"); -m_vk.destroyEvent = (DestroyEventFunc) GET_PROC_ADDR("vkDestroyEvent"); -m_vk.getEventStatus = (GetEventStatusFunc) GET_PROC_ADDR("vkGetEventStatus"); -m_vk.setEvent = (SetEventFunc) GET_PROC_ADDR("vkSetEvent"); -m_vk.resetEvent = (ResetEventFunc) GET_PROC_ADDR("vkResetEvent"); -m_vk.createQueryPool = (CreateQueryPoolFunc) GET_PROC_ADDR("vkCreateQueryPool"); -m_vk.destroyQueryPool = (DestroyQueryPoolFunc) GET_PROC_ADDR("vkDestroyQueryPool"); -m_vk.getQueryPoolResults = (GetQueryPoolResultsFunc) GET_PROC_ADDR("vkGetQueryPoolResults"); -m_vk.createBuffer = (CreateBufferFunc) GET_PROC_ADDR("vkCreateBuffer"); -m_vk.destroyBuffer = (DestroyBufferFunc) GET_PROC_ADDR("vkDestroyBuffer"); -m_vk.createBufferView = (CreateBufferViewFunc) GET_PROC_ADDR("vkCreateBufferView"); -m_vk.destroyBufferView = (DestroyBufferViewFunc) GET_PROC_ADDR("vkDestroyBufferView"); -m_vk.createImage = (CreateImageFunc) GET_PROC_ADDR("vkCreateImage"); -m_vk.destroyImage = (DestroyImageFunc) GET_PROC_ADDR("vkDestroyImage"); -m_vk.getImageSubresourceLayout = (GetImageSubresourceLayoutFunc) GET_PROC_ADDR("vkGetImageSubresourceLayout"); -m_vk.createImageView = (CreateImageViewFunc) GET_PROC_ADDR("vkCreateImageView"); -m_vk.destroyImageView = (DestroyImageViewFunc) GET_PROC_ADDR("vkDestroyImageView"); -m_vk.createShaderModule = (CreateShaderModuleFunc) GET_PROC_ADDR("vkCreateShaderModule"); -m_vk.destroyShaderModule = (DestroyShaderModuleFunc) GET_PROC_ADDR("vkDestroyShaderModule"); -m_vk.createPipelineCache = (CreatePipelineCacheFunc) GET_PROC_ADDR("vkCreatePipelineCache"); -m_vk.destroyPipelineCache = (DestroyPipelineCacheFunc) GET_PROC_ADDR("vkDestroyPipelineCache"); -m_vk.getPipelineCacheData = (GetPipelineCacheDataFunc) GET_PROC_ADDR("vkGetPipelineCacheData"); -m_vk.mergePipelineCaches = (MergePipelineCachesFunc) GET_PROC_ADDR("vkMergePipelineCaches"); -m_vk.createGraphicsPipelines = (CreateGraphicsPipelinesFunc) GET_PROC_ADDR("vkCreateGraphicsPipelines"); -m_vk.createComputePipelines = (CreateComputePipelinesFunc) GET_PROC_ADDR("vkCreateComputePipelines"); -m_vk.destroyPipeline = (DestroyPipelineFunc) GET_PROC_ADDR("vkDestroyPipeline"); -m_vk.createPipelineLayout = (CreatePipelineLayoutFunc) GET_PROC_ADDR("vkCreatePipelineLayout"); -m_vk.destroyPipelineLayout = (DestroyPipelineLayoutFunc) GET_PROC_ADDR("vkDestroyPipelineLayout"); -m_vk.createSampler = (CreateSamplerFunc) GET_PROC_ADDR("vkCreateSampler"); -m_vk.destroySampler = (DestroySamplerFunc) GET_PROC_ADDR("vkDestroySampler"); -m_vk.createDescriptorSetLayout = (CreateDescriptorSetLayoutFunc) GET_PROC_ADDR("vkCreateDescriptorSetLayout"); -m_vk.destroyDescriptorSetLayout = (DestroyDescriptorSetLayoutFunc) GET_PROC_ADDR("vkDestroyDescriptorSetLayout"); -m_vk.createDescriptorPool = (CreateDescriptorPoolFunc) GET_PROC_ADDR("vkCreateDescriptorPool"); -m_vk.destroyDescriptorPool = (DestroyDescriptorPoolFunc) GET_PROC_ADDR("vkDestroyDescriptorPool"); -m_vk.resetDescriptorPool = (ResetDescriptorPoolFunc) GET_PROC_ADDR("vkResetDescriptorPool"); -m_vk.allocateDescriptorSets = (AllocateDescriptorSetsFunc) GET_PROC_ADDR("vkAllocateDescriptorSets"); -m_vk.freeDescriptorSets = (FreeDescriptorSetsFunc) GET_PROC_ADDR("vkFreeDescriptorSets"); -m_vk.updateDescriptorSets = (UpdateDescriptorSetsFunc) GET_PROC_ADDR("vkUpdateDescriptorSets"); -m_vk.createFramebuffer = (CreateFramebufferFunc) GET_PROC_ADDR("vkCreateFramebuffer"); -m_vk.destroyFramebuffer = (DestroyFramebufferFunc) GET_PROC_ADDR("vkDestroyFramebuffer"); -m_vk.createRenderPass = (CreateRenderPassFunc) GET_PROC_ADDR("vkCreateRenderPass"); -m_vk.destroyRenderPass = (DestroyRenderPassFunc) GET_PROC_ADDR("vkDestroyRenderPass"); -m_vk.getRenderAreaGranularity = (GetRenderAreaGranularityFunc) GET_PROC_ADDR("vkGetRenderAreaGranularity"); -m_vk.createCommandPool = (CreateCommandPoolFunc) GET_PROC_ADDR("vkCreateCommandPool"); -m_vk.destroyCommandPool = (DestroyCommandPoolFunc) GET_PROC_ADDR("vkDestroyCommandPool"); -m_vk.resetCommandPool = (ResetCommandPoolFunc) GET_PROC_ADDR("vkResetCommandPool"); -m_vk.allocateCommandBuffers = (AllocateCommandBuffersFunc) GET_PROC_ADDR("vkAllocateCommandBuffers"); -m_vk.freeCommandBuffers = (FreeCommandBuffersFunc) GET_PROC_ADDR("vkFreeCommandBuffers"); -m_vk.beginCommandBuffer = (BeginCommandBufferFunc) GET_PROC_ADDR("vkBeginCommandBuffer"); -m_vk.endCommandBuffer = (EndCommandBufferFunc) GET_PROC_ADDR("vkEndCommandBuffer"); -m_vk.resetCommandBuffer = (ResetCommandBufferFunc) GET_PROC_ADDR("vkResetCommandBuffer"); -m_vk.cmdBindPipeline = (CmdBindPipelineFunc) GET_PROC_ADDR("vkCmdBindPipeline"); -m_vk.cmdSetViewport = (CmdSetViewportFunc) GET_PROC_ADDR("vkCmdSetViewport"); -m_vk.cmdSetScissor = (CmdSetScissorFunc) GET_PROC_ADDR("vkCmdSetScissor"); -m_vk.cmdSetLineWidth = (CmdSetLineWidthFunc) GET_PROC_ADDR("vkCmdSetLineWidth"); -m_vk.cmdSetDepthBias = (CmdSetDepthBiasFunc) GET_PROC_ADDR("vkCmdSetDepthBias"); -m_vk.cmdSetBlendConstants = (CmdSetBlendConstantsFunc) GET_PROC_ADDR("vkCmdSetBlendConstants"); -m_vk.cmdSetDepthBounds = (CmdSetDepthBoundsFunc) GET_PROC_ADDR("vkCmdSetDepthBounds"); -m_vk.cmdSetStencilCompareMask = (CmdSetStencilCompareMaskFunc) GET_PROC_ADDR("vkCmdSetStencilCompareMask"); -m_vk.cmdSetStencilWriteMask = (CmdSetStencilWriteMaskFunc) GET_PROC_ADDR("vkCmdSetStencilWriteMask"); -m_vk.cmdSetStencilReference = (CmdSetStencilReferenceFunc) GET_PROC_ADDR("vkCmdSetStencilReference"); -m_vk.cmdBindDescriptorSets = (CmdBindDescriptorSetsFunc) GET_PROC_ADDR("vkCmdBindDescriptorSets"); -m_vk.cmdBindIndexBuffer = (CmdBindIndexBufferFunc) GET_PROC_ADDR("vkCmdBindIndexBuffer"); -m_vk.cmdBindVertexBuffers = (CmdBindVertexBuffersFunc) GET_PROC_ADDR("vkCmdBindVertexBuffers"); -m_vk.cmdDraw = (CmdDrawFunc) GET_PROC_ADDR("vkCmdDraw"); -m_vk.cmdDrawIndexed = (CmdDrawIndexedFunc) GET_PROC_ADDR("vkCmdDrawIndexed"); -m_vk.cmdDrawIndirect = (CmdDrawIndirectFunc) GET_PROC_ADDR("vkCmdDrawIndirect"); -m_vk.cmdDrawIndexedIndirect = (CmdDrawIndexedIndirectFunc) GET_PROC_ADDR("vkCmdDrawIndexedIndirect"); -m_vk.cmdDispatch = (CmdDispatchFunc) GET_PROC_ADDR("vkCmdDispatch"); -m_vk.cmdDispatchIndirect = (CmdDispatchIndirectFunc) GET_PROC_ADDR("vkCmdDispatchIndirect"); -m_vk.cmdCopyBuffer = (CmdCopyBufferFunc) GET_PROC_ADDR("vkCmdCopyBuffer"); -m_vk.cmdCopyImage = (CmdCopyImageFunc) GET_PROC_ADDR("vkCmdCopyImage"); -m_vk.cmdBlitImage = (CmdBlitImageFunc) GET_PROC_ADDR("vkCmdBlitImage"); -m_vk.cmdCopyBufferToImage = (CmdCopyBufferToImageFunc) GET_PROC_ADDR("vkCmdCopyBufferToImage"); -m_vk.cmdCopyImageToBuffer = (CmdCopyImageToBufferFunc) GET_PROC_ADDR("vkCmdCopyImageToBuffer"); -m_vk.cmdUpdateBuffer = (CmdUpdateBufferFunc) GET_PROC_ADDR("vkCmdUpdateBuffer"); -m_vk.cmdFillBuffer = (CmdFillBufferFunc) GET_PROC_ADDR("vkCmdFillBuffer"); -m_vk.cmdClearColorImage = (CmdClearColorImageFunc) GET_PROC_ADDR("vkCmdClearColorImage"); -m_vk.cmdClearDepthStencilImage = (CmdClearDepthStencilImageFunc) GET_PROC_ADDR("vkCmdClearDepthStencilImage"); -m_vk.cmdClearAttachments = (CmdClearAttachmentsFunc) GET_PROC_ADDR("vkCmdClearAttachments"); -m_vk.cmdResolveImage = (CmdResolveImageFunc) GET_PROC_ADDR("vkCmdResolveImage"); -m_vk.cmdSetEvent = (CmdSetEventFunc) GET_PROC_ADDR("vkCmdSetEvent"); -m_vk.cmdResetEvent = (CmdResetEventFunc) GET_PROC_ADDR("vkCmdResetEvent"); -m_vk.cmdWaitEvents = (CmdWaitEventsFunc) GET_PROC_ADDR("vkCmdWaitEvents"); -m_vk.cmdPipelineBarrier = (CmdPipelineBarrierFunc) GET_PROC_ADDR("vkCmdPipelineBarrier"); -m_vk.cmdBeginQuery = (CmdBeginQueryFunc) GET_PROC_ADDR("vkCmdBeginQuery"); -m_vk.cmdEndQuery = (CmdEndQueryFunc) GET_PROC_ADDR("vkCmdEndQuery"); -m_vk.cmdResetQueryPool = (CmdResetQueryPoolFunc) GET_PROC_ADDR("vkCmdResetQueryPool"); -m_vk.cmdWriteTimestamp = (CmdWriteTimestampFunc) GET_PROC_ADDR("vkCmdWriteTimestamp"); -m_vk.cmdCopyQueryPoolResults = (CmdCopyQueryPoolResultsFunc) GET_PROC_ADDR("vkCmdCopyQueryPoolResults"); -m_vk.cmdPushConstants = (CmdPushConstantsFunc) GET_PROC_ADDR("vkCmdPushConstants"); -m_vk.cmdBeginRenderPass = (CmdBeginRenderPassFunc) GET_PROC_ADDR("vkCmdBeginRenderPass"); -m_vk.cmdNextSubpass = (CmdNextSubpassFunc) GET_PROC_ADDR("vkCmdNextSubpass"); -m_vk.cmdEndRenderPass = (CmdEndRenderPassFunc) GET_PROC_ADDR("vkCmdEndRenderPass"); -m_vk.cmdExecuteCommands = (CmdExecuteCommandsFunc) GET_PROC_ADDR("vkCmdExecuteCommands"); -m_vk.createSwapchainKHR = (CreateSwapchainKHRFunc) GET_PROC_ADDR("vkCreateSwapchainKHR"); -m_vk.destroySwapchainKHR = (DestroySwapchainKHRFunc) GET_PROC_ADDR("vkDestroySwapchainKHR"); -m_vk.getSwapchainImagesKHR = (GetSwapchainImagesKHRFunc) GET_PROC_ADDR("vkGetSwapchainImagesKHR"); -m_vk.acquireNextImageKHR = (AcquireNextImageKHRFunc) GET_PROC_ADDR("vkAcquireNextImageKHR"); -m_vk.queuePresentKHR = (QueuePresentKHRFunc) GET_PROC_ADDR("vkQueuePresentKHR"); -m_vk.createSharedSwapchainsKHR = (CreateSharedSwapchainsKHRFunc) GET_PROC_ADDR("vkCreateSharedSwapchainsKHR"); -m_vk.trimCommandPoolKHR = (TrimCommandPoolKHRFunc) GET_PROC_ADDR("vkTrimCommandPoolKHR"); -m_vk.cmdPushDescriptorSetKHR = (CmdPushDescriptorSetKHRFunc) GET_PROC_ADDR("vkCmdPushDescriptorSetKHR"); -m_vk.createDescriptorUpdateTemplateKHR = (CreateDescriptorUpdateTemplateKHRFunc) GET_PROC_ADDR("vkCreateDescriptorUpdateTemplateKHR"); -m_vk.destroyDescriptorUpdateTemplateKHR = (DestroyDescriptorUpdateTemplateKHRFunc) GET_PROC_ADDR("vkDestroyDescriptorUpdateTemplateKHR"); -m_vk.updateDescriptorSetWithTemplateKHR = (UpdateDescriptorSetWithTemplateKHRFunc) GET_PROC_ADDR("vkUpdateDescriptorSetWithTemplateKHR"); -m_vk.cmdPushDescriptorSetWithTemplateKHR = (CmdPushDescriptorSetWithTemplateKHRFunc) GET_PROC_ADDR("vkCmdPushDescriptorSetWithTemplateKHR"); -m_vk.getSwapchainStatusKHR = (GetSwapchainStatusKHRFunc) GET_PROC_ADDR("vkGetSwapchainStatusKHR"); -m_vk.getRefreshCycleDurationGOOGLE = (GetRefreshCycleDurationGOOGLEFunc) GET_PROC_ADDR("vkGetRefreshCycleDurationGOOGLE"); -m_vk.getPastPresentationTimingGOOGLE = (GetPastPresentationTimingGOOGLEFunc) GET_PROC_ADDR("vkGetPastPresentationTimingGOOGLE"); +m_vk.destroyDevice = (DestroyDeviceFunc) GET_PROC_ADDR("vkDestroyDevice"); +m_vk.getDeviceQueue = (GetDeviceQueueFunc) GET_PROC_ADDR("vkGetDeviceQueue"); +m_vk.queueSubmit = (QueueSubmitFunc) GET_PROC_ADDR("vkQueueSubmit"); +m_vk.queueWaitIdle = (QueueWaitIdleFunc) GET_PROC_ADDR("vkQueueWaitIdle"); +m_vk.deviceWaitIdle = (DeviceWaitIdleFunc) GET_PROC_ADDR("vkDeviceWaitIdle"); +m_vk.allocateMemory = (AllocateMemoryFunc) GET_PROC_ADDR("vkAllocateMemory"); +m_vk.freeMemory = (FreeMemoryFunc) GET_PROC_ADDR("vkFreeMemory"); +m_vk.mapMemory = (MapMemoryFunc) GET_PROC_ADDR("vkMapMemory"); +m_vk.unmapMemory = (UnmapMemoryFunc) GET_PROC_ADDR("vkUnmapMemory"); +m_vk.flushMappedMemoryRanges = (FlushMappedMemoryRangesFunc) GET_PROC_ADDR("vkFlushMappedMemoryRanges"); +m_vk.invalidateMappedMemoryRanges = (InvalidateMappedMemoryRangesFunc) GET_PROC_ADDR("vkInvalidateMappedMemoryRanges"); +m_vk.getDeviceMemoryCommitment = (GetDeviceMemoryCommitmentFunc) GET_PROC_ADDR("vkGetDeviceMemoryCommitment"); +m_vk.bindBufferMemory = (BindBufferMemoryFunc) GET_PROC_ADDR("vkBindBufferMemory"); +m_vk.bindImageMemory = (BindImageMemoryFunc) GET_PROC_ADDR("vkBindImageMemory"); +m_vk.getBufferMemoryRequirements = (GetBufferMemoryRequirementsFunc) GET_PROC_ADDR("vkGetBufferMemoryRequirements"); +m_vk.getImageMemoryRequirements = (GetImageMemoryRequirementsFunc) GET_PROC_ADDR("vkGetImageMemoryRequirements"); +m_vk.getImageSparseMemoryRequirements = (GetImageSparseMemoryRequirementsFunc) GET_PROC_ADDR("vkGetImageSparseMemoryRequirements"); +m_vk.queueBindSparse = (QueueBindSparseFunc) GET_PROC_ADDR("vkQueueBindSparse"); +m_vk.createFence = (CreateFenceFunc) GET_PROC_ADDR("vkCreateFence"); +m_vk.destroyFence = (DestroyFenceFunc) GET_PROC_ADDR("vkDestroyFence"); +m_vk.resetFences = (ResetFencesFunc) GET_PROC_ADDR("vkResetFences"); +m_vk.getFenceStatus = (GetFenceStatusFunc) GET_PROC_ADDR("vkGetFenceStatus"); +m_vk.waitForFences = (WaitForFencesFunc) GET_PROC_ADDR("vkWaitForFences"); +m_vk.createSemaphore = (CreateSemaphoreFunc) GET_PROC_ADDR("vkCreateSemaphore"); +m_vk.destroySemaphore = (DestroySemaphoreFunc) GET_PROC_ADDR("vkDestroySemaphore"); +m_vk.createEvent = (CreateEventFunc) GET_PROC_ADDR("vkCreateEvent"); +m_vk.destroyEvent = (DestroyEventFunc) GET_PROC_ADDR("vkDestroyEvent"); +m_vk.getEventStatus = (GetEventStatusFunc) GET_PROC_ADDR("vkGetEventStatus"); +m_vk.setEvent = (SetEventFunc) GET_PROC_ADDR("vkSetEvent"); +m_vk.resetEvent = (ResetEventFunc) GET_PROC_ADDR("vkResetEvent"); +m_vk.createQueryPool = (CreateQueryPoolFunc) GET_PROC_ADDR("vkCreateQueryPool"); +m_vk.destroyQueryPool = (DestroyQueryPoolFunc) GET_PROC_ADDR("vkDestroyQueryPool"); +m_vk.getQueryPoolResults = (GetQueryPoolResultsFunc) GET_PROC_ADDR("vkGetQueryPoolResults"); +m_vk.createBuffer = (CreateBufferFunc) GET_PROC_ADDR("vkCreateBuffer"); +m_vk.destroyBuffer = (DestroyBufferFunc) GET_PROC_ADDR("vkDestroyBuffer"); +m_vk.createBufferView = (CreateBufferViewFunc) GET_PROC_ADDR("vkCreateBufferView"); +m_vk.destroyBufferView = (DestroyBufferViewFunc) GET_PROC_ADDR("vkDestroyBufferView"); +m_vk.createImage = (CreateImageFunc) GET_PROC_ADDR("vkCreateImage"); +m_vk.destroyImage = (DestroyImageFunc) GET_PROC_ADDR("vkDestroyImage"); +m_vk.getImageSubresourceLayout = (GetImageSubresourceLayoutFunc) GET_PROC_ADDR("vkGetImageSubresourceLayout"); +m_vk.createImageView = (CreateImageViewFunc) GET_PROC_ADDR("vkCreateImageView"); +m_vk.destroyImageView = (DestroyImageViewFunc) GET_PROC_ADDR("vkDestroyImageView"); +m_vk.createShaderModule = (CreateShaderModuleFunc) GET_PROC_ADDR("vkCreateShaderModule"); +m_vk.destroyShaderModule = (DestroyShaderModuleFunc) GET_PROC_ADDR("vkDestroyShaderModule"); +m_vk.createPipelineCache = (CreatePipelineCacheFunc) GET_PROC_ADDR("vkCreatePipelineCache"); +m_vk.destroyPipelineCache = (DestroyPipelineCacheFunc) GET_PROC_ADDR("vkDestroyPipelineCache"); +m_vk.getPipelineCacheData = (GetPipelineCacheDataFunc) GET_PROC_ADDR("vkGetPipelineCacheData"); +m_vk.mergePipelineCaches = (MergePipelineCachesFunc) GET_PROC_ADDR("vkMergePipelineCaches"); +m_vk.createGraphicsPipelines = (CreateGraphicsPipelinesFunc) GET_PROC_ADDR("vkCreateGraphicsPipelines"); +m_vk.createComputePipelines = (CreateComputePipelinesFunc) GET_PROC_ADDR("vkCreateComputePipelines"); +m_vk.destroyPipeline = (DestroyPipelineFunc) GET_PROC_ADDR("vkDestroyPipeline"); +m_vk.createPipelineLayout = (CreatePipelineLayoutFunc) GET_PROC_ADDR("vkCreatePipelineLayout"); +m_vk.destroyPipelineLayout = (DestroyPipelineLayoutFunc) GET_PROC_ADDR("vkDestroyPipelineLayout"); +m_vk.createSampler = (CreateSamplerFunc) GET_PROC_ADDR("vkCreateSampler"); +m_vk.destroySampler = (DestroySamplerFunc) GET_PROC_ADDR("vkDestroySampler"); +m_vk.createDescriptorSetLayout = (CreateDescriptorSetLayoutFunc) GET_PROC_ADDR("vkCreateDescriptorSetLayout"); +m_vk.destroyDescriptorSetLayout = (DestroyDescriptorSetLayoutFunc) GET_PROC_ADDR("vkDestroyDescriptorSetLayout"); +m_vk.createDescriptorPool = (CreateDescriptorPoolFunc) GET_PROC_ADDR("vkCreateDescriptorPool"); +m_vk.destroyDescriptorPool = (DestroyDescriptorPoolFunc) GET_PROC_ADDR("vkDestroyDescriptorPool"); +m_vk.resetDescriptorPool = (ResetDescriptorPoolFunc) GET_PROC_ADDR("vkResetDescriptorPool"); +m_vk.allocateDescriptorSets = (AllocateDescriptorSetsFunc) GET_PROC_ADDR("vkAllocateDescriptorSets"); +m_vk.freeDescriptorSets = (FreeDescriptorSetsFunc) GET_PROC_ADDR("vkFreeDescriptorSets"); +m_vk.updateDescriptorSets = (UpdateDescriptorSetsFunc) GET_PROC_ADDR("vkUpdateDescriptorSets"); +m_vk.createFramebuffer = (CreateFramebufferFunc) GET_PROC_ADDR("vkCreateFramebuffer"); +m_vk.destroyFramebuffer = (DestroyFramebufferFunc) GET_PROC_ADDR("vkDestroyFramebuffer"); +m_vk.createRenderPass = (CreateRenderPassFunc) GET_PROC_ADDR("vkCreateRenderPass"); +m_vk.destroyRenderPass = (DestroyRenderPassFunc) GET_PROC_ADDR("vkDestroyRenderPass"); +m_vk.getRenderAreaGranularity = (GetRenderAreaGranularityFunc) GET_PROC_ADDR("vkGetRenderAreaGranularity"); +m_vk.createCommandPool = (CreateCommandPoolFunc) GET_PROC_ADDR("vkCreateCommandPool"); +m_vk.destroyCommandPool = (DestroyCommandPoolFunc) GET_PROC_ADDR("vkDestroyCommandPool"); +m_vk.resetCommandPool = (ResetCommandPoolFunc) GET_PROC_ADDR("vkResetCommandPool"); +m_vk.allocateCommandBuffers = (AllocateCommandBuffersFunc) GET_PROC_ADDR("vkAllocateCommandBuffers"); +m_vk.freeCommandBuffers = (FreeCommandBuffersFunc) GET_PROC_ADDR("vkFreeCommandBuffers"); +m_vk.beginCommandBuffer = (BeginCommandBufferFunc) GET_PROC_ADDR("vkBeginCommandBuffer"); +m_vk.endCommandBuffer = (EndCommandBufferFunc) GET_PROC_ADDR("vkEndCommandBuffer"); +m_vk.resetCommandBuffer = (ResetCommandBufferFunc) GET_PROC_ADDR("vkResetCommandBuffer"); +m_vk.cmdBindPipeline = (CmdBindPipelineFunc) GET_PROC_ADDR("vkCmdBindPipeline"); +m_vk.cmdSetViewport = (CmdSetViewportFunc) GET_PROC_ADDR("vkCmdSetViewport"); +m_vk.cmdSetScissor = (CmdSetScissorFunc) GET_PROC_ADDR("vkCmdSetScissor"); +m_vk.cmdSetLineWidth = (CmdSetLineWidthFunc) GET_PROC_ADDR("vkCmdSetLineWidth"); +m_vk.cmdSetDepthBias = (CmdSetDepthBiasFunc) GET_PROC_ADDR("vkCmdSetDepthBias"); +m_vk.cmdSetBlendConstants = (CmdSetBlendConstantsFunc) GET_PROC_ADDR("vkCmdSetBlendConstants"); +m_vk.cmdSetDepthBounds = (CmdSetDepthBoundsFunc) GET_PROC_ADDR("vkCmdSetDepthBounds"); +m_vk.cmdSetStencilCompareMask = (CmdSetStencilCompareMaskFunc) GET_PROC_ADDR("vkCmdSetStencilCompareMask"); +m_vk.cmdSetStencilWriteMask = (CmdSetStencilWriteMaskFunc) GET_PROC_ADDR("vkCmdSetStencilWriteMask"); +m_vk.cmdSetStencilReference = (CmdSetStencilReferenceFunc) GET_PROC_ADDR("vkCmdSetStencilReference"); +m_vk.cmdBindDescriptorSets = (CmdBindDescriptorSetsFunc) GET_PROC_ADDR("vkCmdBindDescriptorSets"); +m_vk.cmdBindIndexBuffer = (CmdBindIndexBufferFunc) GET_PROC_ADDR("vkCmdBindIndexBuffer"); +m_vk.cmdBindVertexBuffers = (CmdBindVertexBuffersFunc) GET_PROC_ADDR("vkCmdBindVertexBuffers"); +m_vk.cmdDraw = (CmdDrawFunc) GET_PROC_ADDR("vkCmdDraw"); +m_vk.cmdDrawIndexed = (CmdDrawIndexedFunc) GET_PROC_ADDR("vkCmdDrawIndexed"); +m_vk.cmdDrawIndirect = (CmdDrawIndirectFunc) GET_PROC_ADDR("vkCmdDrawIndirect"); +m_vk.cmdDrawIndexedIndirect = (CmdDrawIndexedIndirectFunc) GET_PROC_ADDR("vkCmdDrawIndexedIndirect"); +m_vk.cmdDispatch = (CmdDispatchFunc) GET_PROC_ADDR("vkCmdDispatch"); +m_vk.cmdDispatchIndirect = (CmdDispatchIndirectFunc) GET_PROC_ADDR("vkCmdDispatchIndirect"); +m_vk.cmdCopyBuffer = (CmdCopyBufferFunc) GET_PROC_ADDR("vkCmdCopyBuffer"); +m_vk.cmdCopyImage = (CmdCopyImageFunc) GET_PROC_ADDR("vkCmdCopyImage"); +m_vk.cmdBlitImage = (CmdBlitImageFunc) GET_PROC_ADDR("vkCmdBlitImage"); +m_vk.cmdCopyBufferToImage = (CmdCopyBufferToImageFunc) GET_PROC_ADDR("vkCmdCopyBufferToImage"); +m_vk.cmdCopyImageToBuffer = (CmdCopyImageToBufferFunc) GET_PROC_ADDR("vkCmdCopyImageToBuffer"); +m_vk.cmdUpdateBuffer = (CmdUpdateBufferFunc) GET_PROC_ADDR("vkCmdUpdateBuffer"); +m_vk.cmdFillBuffer = (CmdFillBufferFunc) GET_PROC_ADDR("vkCmdFillBuffer"); +m_vk.cmdClearColorImage = (CmdClearColorImageFunc) GET_PROC_ADDR("vkCmdClearColorImage"); +m_vk.cmdClearDepthStencilImage = (CmdClearDepthStencilImageFunc) GET_PROC_ADDR("vkCmdClearDepthStencilImage"); +m_vk.cmdClearAttachments = (CmdClearAttachmentsFunc) GET_PROC_ADDR("vkCmdClearAttachments"); +m_vk.cmdResolveImage = (CmdResolveImageFunc) GET_PROC_ADDR("vkCmdResolveImage"); +m_vk.cmdSetEvent = (CmdSetEventFunc) GET_PROC_ADDR("vkCmdSetEvent"); +m_vk.cmdResetEvent = (CmdResetEventFunc) GET_PROC_ADDR("vkCmdResetEvent"); +m_vk.cmdWaitEvents = (CmdWaitEventsFunc) GET_PROC_ADDR("vkCmdWaitEvents"); +m_vk.cmdPipelineBarrier = (CmdPipelineBarrierFunc) GET_PROC_ADDR("vkCmdPipelineBarrier"); +m_vk.cmdBeginQuery = (CmdBeginQueryFunc) GET_PROC_ADDR("vkCmdBeginQuery"); +m_vk.cmdEndQuery = (CmdEndQueryFunc) GET_PROC_ADDR("vkCmdEndQuery"); +m_vk.cmdResetQueryPool = (CmdResetQueryPoolFunc) GET_PROC_ADDR("vkCmdResetQueryPool"); +m_vk.cmdWriteTimestamp = (CmdWriteTimestampFunc) GET_PROC_ADDR("vkCmdWriteTimestamp"); +m_vk.cmdCopyQueryPoolResults = (CmdCopyQueryPoolResultsFunc) GET_PROC_ADDR("vkCmdCopyQueryPoolResults"); +m_vk.cmdPushConstants = (CmdPushConstantsFunc) GET_PROC_ADDR("vkCmdPushConstants"); +m_vk.cmdBeginRenderPass = (CmdBeginRenderPassFunc) GET_PROC_ADDR("vkCmdBeginRenderPass"); +m_vk.cmdNextSubpass = (CmdNextSubpassFunc) GET_PROC_ADDR("vkCmdNextSubpass"); +m_vk.cmdEndRenderPass = (CmdEndRenderPassFunc) GET_PROC_ADDR("vkCmdEndRenderPass"); +m_vk.cmdExecuteCommands = (CmdExecuteCommandsFunc) GET_PROC_ADDR("vkCmdExecuteCommands"); +m_vk.createSwapchainKHR = (CreateSwapchainKHRFunc) GET_PROC_ADDR("vkCreateSwapchainKHR"); +m_vk.destroySwapchainKHR = (DestroySwapchainKHRFunc) GET_PROC_ADDR("vkDestroySwapchainKHR"); +m_vk.getSwapchainImagesKHR = (GetSwapchainImagesKHRFunc) GET_PROC_ADDR("vkGetSwapchainImagesKHR"); +m_vk.acquireNextImageKHR = (AcquireNextImageKHRFunc) GET_PROC_ADDR("vkAcquireNextImageKHR"); +m_vk.queuePresentKHR = (QueuePresentKHRFunc) GET_PROC_ADDR("vkQueuePresentKHR"); +m_vk.createSharedSwapchainsKHR = (CreateSharedSwapchainsKHRFunc) GET_PROC_ADDR("vkCreateSharedSwapchainsKHR"); +m_vk.trimCommandPoolKHR = (TrimCommandPoolKHRFunc) GET_PROC_ADDR("vkTrimCommandPoolKHR"); +m_vk.cmdPushDescriptorSetKHR = (CmdPushDescriptorSetKHRFunc) GET_PROC_ADDR("vkCmdPushDescriptorSetKHR"); +m_vk.createDescriptorUpdateTemplateKHR = (CreateDescriptorUpdateTemplateKHRFunc) GET_PROC_ADDR("vkCreateDescriptorUpdateTemplateKHR"); +m_vk.destroyDescriptorUpdateTemplateKHR = (DestroyDescriptorUpdateTemplateKHRFunc) GET_PROC_ADDR("vkDestroyDescriptorUpdateTemplateKHR"); +m_vk.updateDescriptorSetWithTemplateKHR = (UpdateDescriptorSetWithTemplateKHRFunc) GET_PROC_ADDR("vkUpdateDescriptorSetWithTemplateKHR"); +m_vk.cmdPushDescriptorSetWithTemplateKHR = (CmdPushDescriptorSetWithTemplateKHRFunc) GET_PROC_ADDR("vkCmdPushDescriptorSetWithTemplateKHR"); +m_vk.getSwapchainStatusKHR = (GetSwapchainStatusKHRFunc) GET_PROC_ADDR("vkGetSwapchainStatusKHR"); +m_vk.getImageMemoryRequirements2KHR = (GetImageMemoryRequirements2KHRFunc) GET_PROC_ADDR("vkGetImageMemoryRequirements2KHR"); +m_vk.getBufferMemoryRequirements2KHR = (GetBufferMemoryRequirements2KHRFunc) GET_PROC_ADDR("vkGetBufferMemoryRequirements2KHR"); +m_vk.getImageSparseMemoryRequirements2KHR = (GetImageSparseMemoryRequirements2KHRFunc) GET_PROC_ADDR("vkGetImageSparseMemoryRequirements2KHR"); +m_vk.getRefreshCycleDurationGOOGLE = (GetRefreshCycleDurationGOOGLEFunc) GET_PROC_ADDR("vkGetRefreshCycleDurationGOOGLE"); +m_vk.getPastPresentationTimingGOOGLE = (GetPastPresentationTimingGOOGLEFunc) GET_PROC_ADDR("vkGetPastPresentationTimingGOOGLE"); diff --git a/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl b/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl index bd776fa..26ab440 100644 --- a/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl +++ b/external/vulkancts/framework/vulkan/vkNullDriverImpl.inl @@ -1222,6 +1222,28 @@ VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSurfaceFormats2KHR (VkPhysicalDe return VK_SUCCESS; } +VKAPI_ATTR void VKAPI_CALL getImageMemoryRequirements2KHR (VkDevice device, const VkImageMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) +{ + DE_UNREF(device); + DE_UNREF(pInfo); + DE_UNREF(pMemoryRequirements); +} + +VKAPI_ATTR void VKAPI_CALL getBufferMemoryRequirements2KHR (VkDevice device, const VkBufferMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) +{ + DE_UNREF(device); + DE_UNREF(pInfo); + DE_UNREF(pMemoryRequirements); +} + +VKAPI_ATTR void VKAPI_CALL getImageSparseMemoryRequirements2KHR (VkDevice device, const VkImageSparseMemoryRequirementsInfo2KHR* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements) +{ + DE_UNREF(device); + DE_UNREF(pInfo); + DE_UNREF(pSparseMemoryRequirementCount); + DE_UNREF(pSparseMemoryRequirements); +} + VKAPI_ATTR void VKAPI_CALL debugReportMessageEXT (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) { DE_UNREF(instance); @@ -1446,6 +1468,9 @@ static const tcu::StaticFunctionLibrary::Entry s_deviceFunctions[] = VK_NULL_FUNC_ENTRY(vkUpdateDescriptorSetWithTemplateKHR, updateDescriptorSetWithTemplateKHR), VK_NULL_FUNC_ENTRY(vkCmdPushDescriptorSetWithTemplateKHR, cmdPushDescriptorSetWithTemplateKHR), VK_NULL_FUNC_ENTRY(vkGetSwapchainStatusKHR, getSwapchainStatusKHR), + VK_NULL_FUNC_ENTRY(vkGetImageMemoryRequirements2KHR, getImageMemoryRequirements2KHR), + VK_NULL_FUNC_ENTRY(vkGetBufferMemoryRequirements2KHR, getBufferMemoryRequirements2KHR), + VK_NULL_FUNC_ENTRY(vkGetImageSparseMemoryRequirements2KHR, getImageSparseMemoryRequirements2KHR), VK_NULL_FUNC_ENTRY(vkGetRefreshCycleDurationGOOGLE, getRefreshCycleDurationGOOGLE), VK_NULL_FUNC_ENTRY(vkGetPastPresentationTimingGOOGLE, getPastPresentationTimingGOOGLE), }; diff --git a/external/vulkancts/framework/vulkan/vkStrUtil.inl b/external/vulkancts/framework/vulkan/vkStrUtil.inl index f65183f..b1fdba4 100644 --- a/external/vulkancts/framework/vulkan/vkStrUtil.inl +++ b/external/vulkancts/framework/vulkan/vkStrUtil.inl @@ -346,6 +346,11 @@ std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilit std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value); std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value); std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value); +std::ostream& operator<< (std::ostream& s, const VkBufferMemoryRequirementsInfo2KHR& value); +std::ostream& operator<< (std::ostream& s, const VkImageMemoryRequirementsInfo2KHR& value); +std::ostream& operator<< (std::ostream& s, const VkImageSparseMemoryRequirementsInfo2KHR& value); +std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements2KHR& value); +std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements2KHR& value); std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value); std::ostream& operator<< (std::ostream& s, const VkRefreshCycleDurationGOOGLE& value); std::ostream& operator<< (std::ostream& s, const VkPastPresentationTimingGOOGLE& value); diff --git a/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl b/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl index cfd9ed2..d09aa6c 100644 --- a/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl +++ b/external/vulkancts/framework/vulkan/vkStrUtilImpl.inl @@ -178,6 +178,11 @@ const char* getStructureTypeName (VkStructureType value) case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"; case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR: return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"; case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR: return "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"; + case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR: return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR"; + case VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR: return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR"; + case VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR: return "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR"; + case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR: return "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR"; + case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR: return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR"; default: return DE_NULL; } } @@ -3529,6 +3534,56 @@ std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value) return s; } +std::ostream& operator<< (std::ostream& s, const VkBufferMemoryRequirementsInfo2KHR& value) +{ + s << "VkBufferMemoryRequirementsInfo2KHR = {\n"; + s << "\tsType = " << value.sType << '\n'; + s << "\tpNext = " << value.pNext << '\n'; + s << "\tbuffer = " << value.buffer << '\n'; + s << '}'; + return s; +} + +std::ostream& operator<< (std::ostream& s, const VkImageMemoryRequirementsInfo2KHR& value) +{ + s << "VkImageMemoryRequirementsInfo2KHR = {\n"; + s << "\tsType = " << value.sType << '\n'; + s << "\tpNext = " << value.pNext << '\n'; + s << "\timage = " << value.image << '\n'; + s << '}'; + return s; +} + +std::ostream& operator<< (std::ostream& s, const VkImageSparseMemoryRequirementsInfo2KHR& value) +{ + s << "VkImageSparseMemoryRequirementsInfo2KHR = {\n"; + s << "\tsType = " << value.sType << '\n'; + s << "\tpNext = " << value.pNext << '\n'; + s << "\timage = " << value.image << '\n'; + s << '}'; + return s; +} + +std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements2KHR& value) +{ + s << "VkMemoryRequirements2KHR = {\n"; + s << "\tsType = " << value.sType << '\n'; + s << "\tpNext = " << value.pNext << '\n'; + s << "\tmemoryRequirements = " << value.memoryRequirements << '\n'; + s << '}'; + return s; +} + +std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements2KHR& value) +{ + s << "VkSparseImageMemoryRequirements2KHR = {\n"; + s << "\tsType = " << value.sType << '\n'; + s << "\tpNext = " << value.pNext << '\n'; + s << "\tmemoryRequirements = " << value.memoryRequirements << '\n'; + s << '}'; + return s; +} + std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value) { s << "VkDebugReportCallbackCreateInfoEXT = {\n"; diff --git a/external/vulkancts/framework/vulkan/vkStructTypes.inl b/external/vulkancts/framework/vulkan/vkStructTypes.inl index f01dabc..ada51dc 100644 --- a/external/vulkancts/framework/vulkan/vkStructTypes.inl +++ b/external/vulkancts/framework/vulkan/vkStructTypes.inl @@ -1524,6 +1524,41 @@ struct VkSurfaceFormat2KHR VkSurfaceFormatKHR surfaceFormat; }; +struct VkBufferMemoryRequirementsInfo2KHR +{ + VkStructureType sType; + const void* pNext; + VkBuffer buffer; +}; + +struct VkImageMemoryRequirementsInfo2KHR +{ + VkStructureType sType; + const void* pNext; + VkImage image; +}; + +struct VkImageSparseMemoryRequirementsInfo2KHR +{ + VkStructureType sType; + const void* pNext; + VkImage image; +}; + +struct VkMemoryRequirements2KHR +{ + VkStructureType sType; + void* pNext; + VkMemoryRequirements memoryRequirements; +}; + +struct VkSparseImageMemoryRequirements2KHR +{ + VkStructureType sType; + void* pNext; + VkSparseImageMemoryRequirements memoryRequirements; +}; + struct VkDebugReportCallbackCreateInfoEXT { VkStructureType sType; diff --git a/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl b/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl index b0a5bd6..f29d512 100644 --- a/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl +++ b/external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl @@ -1,138 +1,141 @@ /* 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 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 createSharedSwapchainsKHR (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const = 0; -virtual void trimCommandPoolKHR (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags) const = 0; -virtual void cmdPushDescriptorSetKHR (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const = 0; -virtual VkResult createDescriptorUpdateTemplateKHR (VkDevice device, const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) const = 0; -virtual void destroyDescriptorUpdateTemplateKHR (VkDevice device, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const = 0; -virtual void updateDescriptorSetWithTemplateKHR (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData) const = 0; -virtual void cmdPushDescriptorSetWithTemplateKHR (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const = 0; -virtual VkResult getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR swapchain) 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 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 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 createSharedSwapchainsKHR (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains) const = 0; +virtual void trimCommandPoolKHR (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags) const = 0; +virtual void cmdPushDescriptorSetKHR (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites) const = 0; +virtual VkResult createDescriptorUpdateTemplateKHR (VkDevice device, const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) const = 0; +virtual void destroyDescriptorUpdateTemplateKHR (VkDevice device, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) const = 0; +virtual void updateDescriptorSetWithTemplateKHR (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData) const = 0; +virtual void cmdPushDescriptorSetWithTemplateKHR (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData) const = 0; +virtual VkResult getSwapchainStatusKHR (VkDevice device, VkSwapchainKHR swapchain) const = 0; +virtual void getImageMemoryRequirements2KHR (VkDevice device, const VkImageMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) const = 0; +virtual void getBufferMemoryRequirements2KHR (VkDevice device, const VkBufferMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements) const = 0; +virtual void getImageSparseMemoryRequirements2KHR (VkDevice device, const VkImageSparseMemoryRequirementsInfo2KHR* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements) 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; diff --git a/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp b/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp index 73f5cf0..3d99fec 100644 --- a/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp +++ b/external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp @@ -678,6 +678,7 @@ void checkDeviceExtensions (tcu::ResultCollector& results, const vector& "VK_KHR_shared_presentable_image", "VK_KHR_storage_buffer_storage_class", "VK_KHR_16bit_storage", + "VK_KHR_get_memory_requirements2", }; checkKhrExtensions(results, extensions, DE_LENGTH_OF_ARRAY(s_allowedDeviceKhrExtensions), s_allowedDeviceKhrExtensions); diff --git a/external/vulkancts/modules/vulkan/memory/vktMemoryRequirementsTests.cpp b/external/vulkancts/modules/vulkan/memory/vktMemoryRequirementsTests.cpp index 154c1b2..d613422 100644 --- a/external/vulkancts/modules/vulkan/memory/vktMemoryRequirementsTests.cpp +++ b/external/vulkancts/modules/vulkan/memory/vktMemoryRequirementsTests.cpp @@ -35,6 +35,7 @@ #include "deUniquePtr.hpp" #include "deStringUtil.hpp" +#include "deSTLUtil.hpp" #include "tcuResultCollector.hpp" #include "tcuTestLog.hpp" @@ -64,6 +65,55 @@ Move makeBuffer (const DeviceInterface& vk, const VkDevice device, con return createBuffer(vk, device, &createInfo); } +VkMemoryRequirements getBufferMemoryRequirements (const DeviceInterface& vk, const VkDevice device, const VkDeviceSize size, const VkBufferCreateFlags flags, const VkBufferUsageFlags usage) +{ + const Unique buffer(makeBuffer(vk, device, size, flags, usage)); + return getBufferMemoryRequirements(vk, device, *buffer); +} + +VkMemoryRequirements getBufferMemoryRequirements2 (const DeviceInterface& vk, const VkDevice device, const VkDeviceSize size, const VkBufferCreateFlags flags, const VkBufferUsageFlags usage, void* next = DE_NULL) +{ + const Unique buffer (makeBuffer(vk, device, size, flags, usage)); + VkBufferMemoryRequirementsInfo2KHR info = + { + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR, // VkStructureType sType + DE_NULL, // const void* pNext + *buffer // VkBuffer buffer + }; + VkMemoryRequirements2KHR req2 = + { + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR, // VkStructureType sType + next, // void* pNext + {0, 0, 0} // VkMemoryRequirements memoryRequirements + }; + + vk.getBufferMemoryRequirements2KHR(device, &info, &req2); + + return req2.memoryRequirements; +} + +VkMemoryRequirements getImageMemoryRequirements2 (const DeviceInterface& vk, const VkDevice device, const VkImageCreateInfo& createInfo, void* next = DE_NULL) +{ + const Unique image(createImage(vk, device, &createInfo)); + + VkImageMemoryRequirementsInfo2KHR info = + { + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR, // VkStructureType sType + DE_NULL, // const void* pNext + *image // VkImage image + }; + VkMemoryRequirements2KHR req2 = + { + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR, // VkStructureType sType + next, // void* pNext + {0, 0, 0} // VkMemoryRequirements memoryRequirements + }; + + vk.getImageMemoryRequirements2KHR(device, &info, &req2); + + return req2.memoryRequirements; +} + //! Get an index of each set bit, starting from the least significant bit. std::vector bitsToIndices (deUint32 bits) { @@ -76,12 +126,6 @@ std::vector bitsToIndices (deUint32 bits) return indices; } -VkMemoryRequirements getBufferMemoryRequirements (const DeviceInterface& vk, const VkDevice device, const VkDeviceSize size, const VkBufferCreateFlags flags, const VkBufferUsageFlags usage) -{ - const Unique buffer(makeBuffer(vk, device, size, flags, usage)); - return getBufferMemoryRequirements(vk, device, *buffer); -} - template T nextEnum (T value) { @@ -105,7 +149,195 @@ T nextFlagExcluding (T value, T excludedFlags) return static_cast(tmp); } -void requireBufferSparseFeatures (const InstanceInterface& vki, const VkPhysicalDevice physDevice, const VkBufferCreateFlags flags) +class IBufferMemoryRequirements +{ +public: + virtual void populateTestGroup (tcu::TestCaseGroup* group) = 0; + +protected: + virtual void addFunctionTestCase (tcu::TestCaseGroup* group, + const std::string& name, + const std::string& desc, + VkBufferCreateFlags arg0) = 0; + + virtual tcu::TestStatus execTest (Context& context, + const VkBufferCreateFlags bufferFlags) = 0; + + virtual void preTestChecks (Context& context, + const InstanceInterface& vki, + const VkPhysicalDevice physDevice, + const VkBufferCreateFlags flags) = 0; + + virtual void updateMemoryRequirements (const DeviceInterface& vk, + const VkDevice device, + const VkDeviceSize size, + const VkBufferCreateFlags flags, + const VkBufferUsageFlags usage, + const bool all) = 0; + + virtual void verifyMemoryRequirements (tcu::ResultCollector& result, + const VkPhysicalDeviceMemoryProperties& deviceMemoryProperties, + const VkPhysicalDeviceLimits& limits, + const VkBufferCreateFlags bufferFlags, + const VkBufferUsageFlags usage) = 0; +}; + +class BufferMemoryRequirementsOriginal : public IBufferMemoryRequirements +{ + static tcu::TestStatus testEntryPoint (Context& context, + const VkBufferCreateFlags bufferFlags); + +public: + virtual void populateTestGroup (tcu::TestCaseGroup* group); + +protected: + virtual void addFunctionTestCase (tcu::TestCaseGroup* group, + const std::string& name, + const std::string& desc, + VkBufferCreateFlags arg0); + + virtual tcu::TestStatus execTest (Context& context, + const VkBufferCreateFlags bufferFlags); + + virtual void preTestChecks (Context& context, + const InstanceInterface& vki, + const VkPhysicalDevice physDevice, + const VkBufferCreateFlags flags); + + virtual void updateMemoryRequirements (const DeviceInterface& vk, + const VkDevice device, + const VkDeviceSize size, + const VkBufferCreateFlags flags, + const VkBufferUsageFlags usage, + const bool all); + + virtual void verifyMemoryRequirements (tcu::ResultCollector& result, + const VkPhysicalDeviceMemoryProperties& deviceMemoryProperties, + const VkPhysicalDeviceLimits& limits, + const VkBufferCreateFlags bufferFlags, + const VkBufferUsageFlags usage); + +protected: + VkMemoryRequirements m_allUsageFlagsRequirements; + VkMemoryRequirements m_currentTestRequirements; +}; + + +tcu::TestStatus BufferMemoryRequirementsOriginal::testEntryPoint (Context& context, const VkBufferCreateFlags bufferFlags) +{ + BufferMemoryRequirementsOriginal test; + + return test.execTest(context, bufferFlags); +} + +void BufferMemoryRequirementsOriginal::populateTestGroup (tcu::TestCaseGroup* group) +{ + const struct + { + VkBufferCreateFlags flags; + const char* const name; + } bufferCases[] = + { + { (VkBufferCreateFlags)0, "regular" }, + { VK_BUFFER_CREATE_SPARSE_BINDING_BIT, "sparse" }, + { VK_BUFFER_CREATE_SPARSE_BINDING_BIT | VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, "sparse_residency" }, + { VK_BUFFER_CREATE_SPARSE_BINDING_BIT | VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, "sparse_aliased" }, + { VK_BUFFER_CREATE_SPARSE_BINDING_BIT | VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT | VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, "sparse_residency_aliased" }, + }; + + de::MovePtr bufferGroup(new tcu::TestCaseGroup(group->getTestContext(), "buffer", "")); + + for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(bufferCases); ++ndx) + addFunctionTestCase(bufferGroup.get(), bufferCases[ndx].name, "", bufferCases[ndx].flags); + + group->addChild(bufferGroup.release()); +} + +void BufferMemoryRequirementsOriginal::addFunctionTestCase (tcu::TestCaseGroup* group, + const std::string& name, + const std::string& desc, + VkBufferCreateFlags arg0) +{ + addFunctionCase(group, name, desc, testEntryPoint, arg0); +} + +tcu::TestStatus BufferMemoryRequirementsOriginal::execTest (Context& context, const VkBufferCreateFlags bufferFlags) +{ + const DeviceInterface& vk = context.getDeviceInterface(); + const InstanceInterface& vki = context.getInstanceInterface(); + const VkDevice device = context.getDevice(); + const VkPhysicalDevice physDevice = context.getPhysicalDevice(); + + preTestChecks(context, vki, physDevice, bufferFlags); + + const VkPhysicalDeviceMemoryProperties memoryProperties = getPhysicalDeviceMemoryProperties(vki, physDevice); + const VkPhysicalDeviceLimits limits = getPhysicalDeviceProperties(vki, physDevice).limits; + const VkBufferUsageFlags allUsageFlags = static_cast((VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT << 1) - 1); + tcu::TestLog& log = context.getTestContext().getLog(); + bool allPass = true; + + const VkDeviceSize sizeCases[] = + { + 1 * 1024, + 8 * 1024, + 64 * 1024, + 1024 * 1024, + }; + + // Updates m_allUsageFlags* fields + updateMemoryRequirements(vk, device, 1024, bufferFlags, allUsageFlags, true); // doesn't depend on size + + for (VkBufferUsageFlags usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT; usage <= VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT; usage = nextFlag(usage)) + { + deUint32 previousMemoryTypeBits = 0u; + VkDeviceSize previousAlignment = 0u; + + log << tcu::TestLog::Message << "Verify a buffer with usage flags: " << de::toString(getBufferUsageFlagsStr(usage)) << tcu::TestLog::EndMessage; + + for (const VkDeviceSize* pSize = sizeCases; pSize < sizeCases + DE_LENGTH_OF_ARRAY(sizeCases); ++pSize) + { + log << tcu::TestLog::Message << "- size " << *pSize << " bytes" << tcu::TestLog::EndMessage; + + tcu::ResultCollector result(log, "ERROR: "); + + // Updates m_allUsageFlags* fields + updateMemoryRequirements(vk, device, *pSize, bufferFlags, usage, false); + + // Check: + // - requirements for a particular buffer usage + // - memoryTypeBits are a subset of bits for requirements with all usage flags combined + verifyMemoryRequirements(result, memoryProperties, limits, bufferFlags, usage); + + // Check that for the same usage and create flags: + // - memoryTypeBits are the same + // - alignment is the same + if (pSize > sizeCases) + { + result.check(m_currentTestRequirements.memoryTypeBits == previousMemoryTypeBits, + "memoryTypeBits differ from the ones in the previous buffer size"); + + result.check(m_currentTestRequirements.alignment == previousAlignment, + "alignment differs from the one in the previous buffer size"); + } + + if (result.getResult() != QP_TEST_RESULT_PASS) + allPass = false; + + previousMemoryTypeBits = m_currentTestRequirements.memoryTypeBits; + previousAlignment = m_currentTestRequirements.alignment; + } + + if (!allPass) + break; + } + + return allPass ? tcu::TestStatus::pass("Pass") : tcu::TestStatus::fail("Some memory requirements were incorrect"); +} + +void BufferMemoryRequirementsOriginal::preTestChecks (Context& , + const InstanceInterface& vki, + const VkPhysicalDevice physDevice, + const VkBufferCreateFlags flags) { const VkPhysicalDeviceFeatures features = getPhysicalDeviceFeatures(vki, physDevice); @@ -119,18 +351,33 @@ void requireBufferSparseFeatures (const InstanceInterface& vki, const VkPhysical TCU_THROW(NotSupportedError, "Feature not supported: sparseResidencyAliased"); } -void verifyBufferRequirements (tcu::ResultCollector& result, - const VkPhysicalDeviceMemoryProperties& deviceMemoryProperties, - const VkMemoryRequirements& requirements, - const VkMemoryRequirements& allUsageFlagsRequirements, - const VkPhysicalDeviceLimits& limits, - const VkBufferCreateFlags bufferFlags, - const VkBufferUsageFlags usage) +void BufferMemoryRequirementsOriginal::updateMemoryRequirements (const DeviceInterface& vk, + const VkDevice device, + const VkDeviceSize size, + const VkBufferCreateFlags flags, + const VkBufferUsageFlags usage, + const bool all) +{ + if (all) + { + m_allUsageFlagsRequirements = getBufferMemoryRequirements(vk, device, size, flags, usage); + } + else + { + m_currentTestRequirements = getBufferMemoryRequirements(vk, device, size, flags, usage); + } +} + +void BufferMemoryRequirementsOriginal::verifyMemoryRequirements (tcu::ResultCollector& result, + const VkPhysicalDeviceMemoryProperties& deviceMemoryProperties, + const VkPhysicalDeviceLimits& limits, + const VkBufferCreateFlags bufferFlags, + const VkBufferUsageFlags usage) { - if (result.check(requirements.memoryTypeBits != 0, "VkMemoryRequirements memoryTypeBits has no bits set")) + if (result.check(m_currentTestRequirements.memoryTypeBits != 0, "VkMemoryRequirements memoryTypeBits has no bits set")) { typedef std::vector::const_iterator IndexIterator; - const std::vector usedMemoryTypeIndices = bitsToIndices(requirements.memoryTypeBits); + const std::vector usedMemoryTypeIndices = bitsToIndices(m_currentTestRequirements.memoryTypeBits); bool deviceLocalMemoryFound = false; bool hostVisibleCoherentMemoryFound = false; @@ -154,24 +401,24 @@ void verifyBufferRequirements (tcu::ResultCollector& result, "Memory type includes VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"); } - result.check(deIsPowerOfTwo64(static_cast(requirements.alignment)) == DE_TRUE, + result.check(deIsPowerOfTwo64(static_cast(m_currentTestRequirements.alignment)) == DE_TRUE, "VkMemoryRequirements alignment isn't power of two"); if (usage & (VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT)) { - result.check(requirements.alignment >= limits.minTexelBufferOffsetAlignment, + result.check(m_currentTestRequirements.alignment >= limits.minTexelBufferOffsetAlignment, "VkMemoryRequirements alignment doesn't respect minTexelBufferOffsetAlignment"); } if (usage & VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT) { - result.check(requirements.alignment >= limits.minUniformBufferOffsetAlignment, + result.check(m_currentTestRequirements.alignment >= limits.minUniformBufferOffsetAlignment, "VkMemoryRequirements alignment doesn't respect minUniformBufferOffsetAlignment"); } if (usage & VK_BUFFER_USAGE_STORAGE_BUFFER_BIT) { - result.check(requirements.alignment >= limits.minStorageBufferOffsetAlignment, + result.check(m_currentTestRequirements.alignment >= limits.minStorageBufferOffsetAlignment, "VkMemoryRequirements alignment doesn't respect minStorageBufferOffsetAlignment"); } @@ -181,81 +428,233 @@ void verifyBufferRequirements (tcu::ResultCollector& result, result.check((bufferFlags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) || hostVisibleCoherentMemoryFound, "Required memory type doesn't include VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT and VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"); - result.check((requirements.memoryTypeBits & allUsageFlagsRequirements.memoryTypeBits) == allUsageFlagsRequirements.memoryTypeBits, + result.check((m_currentTestRequirements.memoryTypeBits & m_allUsageFlagsRequirements.memoryTypeBits) == m_allUsageFlagsRequirements.memoryTypeBits, "Memory type bits aren't a superset of memory type bits for all usage flags combined"); } } -tcu::TestStatus testBuffer (Context& context, const VkBufferCreateFlags bufferFlags) +class BufferMemoryRequirementsExtended : public BufferMemoryRequirementsOriginal { - const DeviceInterface& vk = context.getDeviceInterface(); - const InstanceInterface& vki = context.getInstanceInterface(); - const VkDevice device = context.getDevice(); - const VkPhysicalDevice physDevice = context.getPhysicalDevice(); + static tcu::TestStatus testEntryPoint (Context& context, + const VkBufferCreateFlags bufferFlags); + +protected: + virtual void addFunctionTestCase (tcu::TestCaseGroup* group, + const std::string& name, + const std::string& desc, + VkBufferCreateFlags arg0); + + virtual void preTestChecks (Context& context, + const InstanceInterface& vki, + const VkPhysicalDevice physDevice, + const VkBufferCreateFlags flags); + + virtual void updateMemoryRequirements (const DeviceInterface& vk, + const VkDevice device, + const VkDeviceSize size, + const VkBufferCreateFlags flags, + const VkBufferUsageFlags usage, + const bool all); +}; - requireBufferSparseFeatures(vki, physDevice, bufferFlags); +tcu::TestStatus BufferMemoryRequirementsExtended::testEntryPoint (Context& context, const VkBufferCreateFlags bufferFlags) +{ + BufferMemoryRequirementsExtended test; - const VkPhysicalDeviceMemoryProperties memoryProperties = getPhysicalDeviceMemoryProperties(vki, physDevice); - const VkPhysicalDeviceLimits limits = getPhysicalDeviceProperties(vki, physDevice).limits; - const VkBufferUsageFlags allUsageFlags = static_cast((VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT << 1) - 1); - const VkMemoryRequirements allUsageFlagsRequirements = getBufferMemoryRequirements(vk, device, 1024, bufferFlags, allUsageFlags); // doesn't depend on size - tcu::TestLog& log = context.getTestContext().getLog(); - bool allPass = true; + return test.execTest(context, bufferFlags); +} - const VkDeviceSize sizeCases[] = - { - 1 * 1024, - 8 * 1024, - 64 * 1024, - 1024 * 1024, - }; +void BufferMemoryRequirementsExtended::addFunctionTestCase (tcu::TestCaseGroup* group, + const std::string& name, + const std::string& desc, + VkBufferCreateFlags arg0) +{ + addFunctionCase(group, name, desc, testEntryPoint, arg0); +} - for (VkBufferUsageFlags usage = VK_BUFFER_USAGE_TRANSFER_SRC_BIT; usage <= VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT; usage = nextFlag(usage)) +void BufferMemoryRequirementsExtended::preTestChecks (Context& context, + const InstanceInterface& vki, + const VkPhysicalDevice physDevice, + const VkBufferCreateFlags flags) +{ + const std::string extensionName("VK_KHR_get_memory_requirements2"); + + if (!de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), extensionName)) + TCU_THROW(NotSupportedError, std::string(extensionName + " is not supported").c_str()); + + BufferMemoryRequirementsOriginal::preTestChecks(context, vki, physDevice, flags); +} + +void BufferMemoryRequirementsExtended::updateMemoryRequirements (const DeviceInterface& vk, + const VkDevice device, + const VkDeviceSize size, + const VkBufferCreateFlags flags, + const VkBufferUsageFlags usage, + const bool all) +{ + if (all) { - deUint32 previousMemoryTypeBits = 0u; - VkDeviceSize previousAlignment = 0u; + m_allUsageFlagsRequirements = getBufferMemoryRequirements2(vk, device, size, flags, usage); + } + else + { + m_currentTestRequirements = getBufferMemoryRequirements2(vk, device, size, flags, usage); + } +} - log << tcu::TestLog::Message << "Verify a buffer with usage flags: " << de::toString(getBufferUsageFlagsStr(usage)) << tcu::TestLog::EndMessage; - for (const VkDeviceSize* pSize = sizeCases; pSize < sizeCases + DE_LENGTH_OF_ARRAY(sizeCases); ++pSize) - { - log << tcu::TestLog::Message << "- size " << *pSize << " bytes" << tcu::TestLog::EndMessage; - const VkMemoryRequirements requirements = getBufferMemoryRequirements(vk, device, *pSize, bufferFlags, usage); - tcu::ResultCollector result (log, "ERROR: "); +struct ImageTestParams +{ + VkImageCreateFlags flags; + VkImageTiling tiling; + bool transient; +}; + +class IImageMemoryRequirements +{ +public: + virtual void populateTestGroup (tcu::TestCaseGroup* group) = 0; - // Check: - // - requirements for a particular buffer usage - // - memoryTypeBits are a subset of bits for requirements with all usage flags combined - verifyBufferRequirements(result, memoryProperties, requirements, allUsageFlagsRequirements, limits, bufferFlags, usage); +protected: + virtual void addFunctionTestCase (tcu::TestCaseGroup* group, + const std::string& name, + const std::string& desc, + const ImageTestParams arg0) = 0; - // Check that for the same usage and create flags: - // - memoryTypeBits are the same - // - alignment is the same - if (pSize > sizeCases) - { - result.check(requirements.memoryTypeBits == previousMemoryTypeBits, - "memoryTypeBits differ from the ones in the previous buffer size"); + virtual tcu::TestStatus execTest (Context& context, + const ImageTestParams bufferFlags) = 0; - result.check(requirements.alignment == previousAlignment, - "alignment differs from the one in the previous buffer size"); - } + virtual void preTestChecks (Context& context, + const InstanceInterface& vki, + const VkPhysicalDevice physDevice, + const VkImageCreateFlags flags) = 0; - if (result.getResult() != QP_TEST_RESULT_PASS) - allPass = false; + virtual void updateMemoryRequirements (const DeviceInterface& vk, + const VkDevice device) = 0; - previousMemoryTypeBits = requirements.memoryTypeBits; - previousAlignment = requirements.alignment; + virtual void verifyMemoryRequirements (tcu::ResultCollector& result, + const VkPhysicalDeviceMemoryProperties& deviceMemoryProperties) = 0; +}; + +class ImageMemoryRequirementsOriginal : public IImageMemoryRequirements +{ + static tcu::TestStatus testEntryPoint (Context& context, + const ImageTestParams params); + +public: + virtual void populateTestGroup (tcu::TestCaseGroup* group); + +protected: + virtual void addFunctionTestCase (tcu::TestCaseGroup* group, + const std::string& name, + const std::string& desc, + const ImageTestParams arg0); + + virtual tcu::TestStatus execTest (Context& context, + const ImageTestParams params); + + virtual void preTestChecks (Context& context, + const InstanceInterface& vki, + const VkPhysicalDevice physDevice, + const VkImageCreateFlags flags); + + virtual void updateMemoryRequirements (const DeviceInterface& vk, + const VkDevice device); + + virtual void verifyMemoryRequirements (tcu::ResultCollector& result, + const VkPhysicalDeviceMemoryProperties& deviceMemoryProperties); + +private: + virtual bool isUsageMatchesFeatures (const VkImageUsageFlags usage, + const VkFormatFeatureFlags featureFlags); + + virtual bool isImageSupported (const InstanceInterface& vki, + const VkPhysicalDevice physDevice, + const VkImageCreateInfo& info); + + virtual VkExtent3D makeExtentForImage (const VkImageType imageType); + + virtual bool isFormatMatchingAspect (const VkFormat format, + const VkImageAspectFlags aspect); + + + virtual std::string getImageInfoString (const VkImageCreateInfo& imageInfo); + +protected: + VkImageCreateInfo m_currentTestImageInfo; + VkMemoryRequirements m_currentTestRequirements; +}; + + +tcu::TestStatus ImageMemoryRequirementsOriginal::testEntryPoint (Context& context, const ImageTestParams params) +{ + ImageMemoryRequirementsOriginal test; + + return test.execTest(context, params); +} + +void ImageMemoryRequirementsOriginal::populateTestGroup (tcu::TestCaseGroup* group) +{ + const struct + { + VkImageCreateFlags flags; + bool transient; + const char* const name; + } imageFlagsCases[] = + { + { (VkImageCreateFlags)0, false, "regular" }, + { (VkImageCreateFlags)0, true, "transient" }, + { VK_IMAGE_CREATE_SPARSE_BINDING_BIT, false, "sparse" }, + { VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, false, "sparse_residency" }, + { VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, false, "sparse_aliased" }, + { VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT | VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, false, "sparse_residency_aliased" }, + }; + + de::MovePtr imageGroup(new tcu::TestCaseGroup(group->getTestContext(), "image", "")); + + for (int flagsNdx = 0; flagsNdx < DE_LENGTH_OF_ARRAY(imageFlagsCases); ++flagsNdx) + for (int tilingNdx = 0; tilingNdx <= 1; ++tilingNdx) + { + ImageTestParams params; + std::ostringstream caseName; + + params.flags = imageFlagsCases[flagsNdx].flags; + params.transient = imageFlagsCases[flagsNdx].transient; + caseName << imageFlagsCases[flagsNdx].name; + + if (tilingNdx != 0) + { + params.tiling = VK_IMAGE_TILING_OPTIMAL; + caseName << "_tiling_optimal"; + } + else + { + params.tiling = VK_IMAGE_TILING_LINEAR; + caseName << "_tiling_linear"; } - if (!allPass) - break; + if ((params.flags & VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) && (params.tiling == VK_IMAGE_TILING_LINEAR)) + continue; + + addFunctionTestCase(imageGroup.get(), caseName.str(), "", params); } - return allPass ? tcu::TestStatus::pass("Pass") : tcu::TestStatus::fail("Some memory requirements were incorrect"); + group->addChild(imageGroup.release()); +} + +void ImageMemoryRequirementsOriginal::addFunctionTestCase (tcu::TestCaseGroup* group, + const std::string& name, + const std::string& desc, + const ImageTestParams arg0) +{ + addFunctionCase(group, name, desc, testEntryPoint, arg0); } -void requireImageSparseFeatures (const InstanceInterface& vki, const VkPhysicalDevice physDevice, const VkImageCreateFlags createFlags) +void ImageMemoryRequirementsOriginal::preTestChecks (Context& , + const InstanceInterface& vki, + const VkPhysicalDevice physDevice, + const VkImageCreateFlags createFlags) { const VkPhysicalDeviceFeatures features = getPhysicalDeviceFeatures(vki, physDevice); @@ -269,7 +668,59 @@ void requireImageSparseFeatures (const InstanceInterface& vki, const VkPhysicalD TCU_THROW(NotSupportedError, "Feature not supported: sparseResidencyAliased"); } -bool imageUsageMatchesFormatFeatures (const VkImageUsageFlags usage, const VkFormatFeatureFlags featureFlags) +void ImageMemoryRequirementsOriginal::updateMemoryRequirements (const DeviceInterface& vk, + const VkDevice device) +{ + const Unique image(createImage(vk, device, &m_currentTestImageInfo)); + + m_currentTestRequirements = getImageMemoryRequirements(vk, device, *image); +} + +void ImageMemoryRequirementsOriginal::verifyMemoryRequirements (tcu::ResultCollector& result, + const VkPhysicalDeviceMemoryProperties& deviceMemoryProperties) +{ + if (result.check(m_currentTestRequirements.memoryTypeBits != 0, "VkMemoryRequirements memoryTypeBits has no bits set")) + { + typedef std::vector::const_iterator IndexIterator; + const std::vector usedMemoryTypeIndices = bitsToIndices(m_currentTestRequirements.memoryTypeBits); + bool deviceLocalMemoryFound = false; + bool hostVisibleCoherentMemoryFound = false; + + for (IndexIterator memoryTypeNdx = usedMemoryTypeIndices.begin(); memoryTypeNdx != usedMemoryTypeIndices.end(); ++memoryTypeNdx) + { + if (*memoryTypeNdx >= deviceMemoryProperties.memoryTypeCount) + { + result.fail("VkMemoryRequirements memoryTypeBits contains bits for non-existing memory types"); + continue; + } + + const VkMemoryPropertyFlags memoryPropertyFlags = deviceMemoryProperties.memoryTypes[*memoryTypeNdx].propertyFlags; + + if (memoryPropertyFlags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) + deviceLocalMemoryFound = true; + + if (memoryPropertyFlags & (VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) + hostVisibleCoherentMemoryFound = true; + + if (memoryPropertyFlags & VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT) + { + result.check((m_currentTestImageInfo.usage & VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT) != 0u, + "Memory type includes VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT for a non-transient attachment image"); + } + } + + result.check(deIsPowerOfTwo64(static_cast(m_currentTestRequirements.alignment)) == DE_TRUE, + "VkMemoryRequirements alignment isn't power of two"); + + result.check(deviceLocalMemoryFound, + "None of the required memory types included VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"); + + result.check(m_currentTestImageInfo.tiling == VK_IMAGE_TILING_OPTIMAL || hostVisibleCoherentMemoryFound, + "Required memory type doesn't include VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT and VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"); + } +} + +bool ImageMemoryRequirementsOriginal::isUsageMatchesFeatures (const VkImageUsageFlags usage, const VkFormatFeatureFlags featureFlags) { if ((usage & VK_IMAGE_USAGE_SAMPLED_BIT) && (featureFlags & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)) return true; @@ -284,7 +735,7 @@ bool imageUsageMatchesFormatFeatures (const VkImageUsageFlags usage, const VkFor } //! This catches both invalid as well as legal but unsupported combinations of image parameters -bool isImageSupported (const InstanceInterface& vki, const VkPhysicalDevice physDevice, const VkImageCreateInfo& info) +bool ImageMemoryRequirementsOriginal::isImageSupported (const InstanceInterface& vki, const VkPhysicalDevice physDevice, const VkImageCreateInfo& info) { DE_ASSERT(info.extent.width >= 1u && info.extent.height >= 1u && info.extent.depth >= 1u); @@ -415,7 +866,7 @@ bool isImageSupported (const InstanceInterface& vki, const VkPhysicalDevice phys const VkFormatFeatureFlags formatFeatures = (info.tiling == VK_IMAGE_TILING_LINEAR ? formatProperties.linearTilingFeatures : formatProperties.optimalTilingFeatures); - if (!imageUsageMatchesFormatFeatures(info.usage, formatFeatures)) + if (!isUsageMatchesFeatures(info.usage, formatFeatures)) return false; VkImageFormatProperties imageFormatProperties; @@ -435,7 +886,7 @@ bool isImageSupported (const InstanceInterface& vki, const VkPhysicalDevice phys return result == VK_SUCCESS; } -VkExtent3D makeExtentForImage (const VkImageType imageType) +VkExtent3D ImageMemoryRequirementsOriginal::makeExtentForImage (const VkImageType imageType) { VkExtent3D extent = { 64u, 64u, 4u }; @@ -447,7 +898,7 @@ VkExtent3D makeExtentForImage (const VkImageType imageType) return extent; } -bool isFormatMatchingAspect (const VkFormat format, const VkImageAspectFlags aspect) +bool ImageMemoryRequirementsOriginal::isFormatMatchingAspect (const VkFormat format, const VkImageAspectFlags aspect) { DE_ASSERT(aspect == VK_IMAGE_ASPECT_COLOR_BIT || aspect == (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)); @@ -457,53 +908,7 @@ bool isFormatMatchingAspect (const VkFormat format, const VkImageAspectFlags asp return (aspect == (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) == isDepthStencilFormat; } -void verifyImageRequirements (tcu::ResultCollector& result, - const VkPhysicalDeviceMemoryProperties& deviceMemoryProperties, - const VkMemoryRequirements& requirements, - const VkImageCreateInfo& imageInfo) -{ - if (result.check(requirements.memoryTypeBits != 0, "VkMemoryRequirements memoryTypeBits has no bits set")) - { - typedef std::vector::const_iterator IndexIterator; - const std::vector usedMemoryTypeIndices = bitsToIndices(requirements.memoryTypeBits); - bool deviceLocalMemoryFound = false; - bool hostVisibleCoherentMemoryFound = false; - - for (IndexIterator memoryTypeNdx = usedMemoryTypeIndices.begin(); memoryTypeNdx != usedMemoryTypeIndices.end(); ++memoryTypeNdx) - { - if (*memoryTypeNdx >= deviceMemoryProperties.memoryTypeCount) - { - result.fail("VkMemoryRequirements memoryTypeBits contains bits for non-existing memory types"); - continue; - } - - const VkMemoryPropertyFlags memoryPropertyFlags = deviceMemoryProperties.memoryTypes[*memoryTypeNdx].propertyFlags; - - if (memoryPropertyFlags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) - deviceLocalMemoryFound = true; - - if (memoryPropertyFlags & (VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) - hostVisibleCoherentMemoryFound = true; - - if (memoryPropertyFlags & VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT) - { - result.check((imageInfo.usage & VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT) != 0u, - "Memory type includes VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT for a non-transient attachment image"); - } - } - - result.check(deIsPowerOfTwo64(static_cast(requirements.alignment)) == DE_TRUE, - "VkMemoryRequirements alignment isn't power of two"); - - result.check(deviceLocalMemoryFound, - "None of the required memory types included VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"); - - result.check(imageInfo.tiling == VK_IMAGE_TILING_OPTIMAL || hostVisibleCoherentMemoryFound, - "Required memory type doesn't include VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT and VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"); - } -} - -std::string getImageInfoString (const VkImageCreateInfo& imageInfo) +std::string ImageMemoryRequirementsOriginal::getImageInfoString (const VkImageCreateInfo& imageInfo) { std::ostringstream str; @@ -531,14 +936,7 @@ std::string getImageInfoString (const VkImageCreateInfo& imageInfo) return str.str(); } -struct ImageParams -{ - VkImageCreateFlags flags; - VkImageTiling tiling; - bool transient; -}; - -tcu::TestStatus testImage (Context& context, const ImageParams params) +tcu::TestStatus ImageMemoryRequirementsOriginal::execTest (Context& context, const ImageTestParams params) { const DeviceInterface& vk = context.getDeviceInterface(); const InstanceInterface& vki = context.getInstanceInterface(); @@ -547,7 +945,7 @@ tcu::TestStatus testImage (Context& context, const ImageParams params) const VkImageCreateFlags sparseFlags = VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT | VK_IMAGE_CREATE_SPARSE_ALIASED_BIT; const VkImageUsageFlags transientFlags = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT; - requireImageSparseFeatures(vki, physDevice, params.flags); + preTestChecks(context, vki, physDevice, params.flags); const VkPhysicalDeviceMemoryProperties memoryProperties = getPhysicalDeviceMemoryProperties(vki, physDevice); const deUint32 notInitializedBits = ~0u; @@ -599,26 +997,28 @@ tcu::TestStatus testImage (Context& context, const ImageParams params) VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout initialLayout; }; - if (!isImageSupported(vki, physDevice, imageInfo)) + m_currentTestImageInfo = imageInfo; + + if (!isImageSupported(vki, physDevice, m_currentTestImageInfo)) continue; - log << tcu::TestLog::Message << "- " << getImageInfoString(imageInfo) << tcu::TestLog::EndMessage; + log << tcu::TestLog::Message << "- " << getImageInfoString(m_currentTestImageInfo) << tcu::TestLog::EndMessage; ++numCheckedImages; - const Unique image (createImage(vk, device, &imageInfo)); - const VkMemoryRequirements requirements = getImageMemoryRequirements(vk, device, *image); - tcu::ResultCollector result (log, "ERROR: "); + tcu::ResultCollector result(log, "ERROR: "); + + updateMemoryRequirements(vk, device); - verifyImageRequirements(result, memoryProperties, requirements, imageInfo); + verifyMemoryRequirements(result, memoryProperties); // For the same tiling, transient usage, and sparse flags, (and format, if D/S) memoryTypeBits must be the same for all images - result.check((previousMemoryTypeBits == notInitializedBits) || (requirements.memoryTypeBits == previousMemoryTypeBits), + result.check((previousMemoryTypeBits == notInitializedBits) || (m_currentTestRequirements.memoryTypeBits == previousMemoryTypeBits), "memoryTypeBits differ from the ones in the previous image configuration"); if (result.getResult() != QP_TEST_RESULT_PASS) allPass = false; - previousMemoryTypeBits = requirements.memoryTypeBits; + previousMemoryTypeBits = m_currentTestRequirements.memoryTypeBits; } } } @@ -629,86 +1029,93 @@ tcu::TestStatus testImage (Context& context, const ImageParams params) return allPass ? tcu::TestStatus::pass("Pass") : tcu::TestStatus::fail("Some memory requirements were incorrect"); } -void populateTestGroup (tcu::TestCaseGroup* group) + +class ImageMemoryRequirementsExtended : public ImageMemoryRequirementsOriginal { - // Buffers - { - const struct - { - VkBufferCreateFlags flags; - const char* const name; - } bufferCases[] = - { - { (VkBufferCreateFlags)0, "regular" }, - { VK_BUFFER_CREATE_SPARSE_BINDING_BIT, "sparse" }, - { VK_BUFFER_CREATE_SPARSE_BINDING_BIT | VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, "sparse_residency" }, - { VK_BUFFER_CREATE_SPARSE_BINDING_BIT | VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, "sparse_aliased" }, - { VK_BUFFER_CREATE_SPARSE_BINDING_BIT | VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT | VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, "sparse_residency_aliased" }, - }; +public: + static tcu::TestStatus testEntryPoint (Context& context, + const ImageTestParams params); + +protected: + virtual void addFunctionTestCase (tcu::TestCaseGroup* group, + const std::string& name, + const std::string& desc, + const ImageTestParams arg0); + + virtual void preTestChecks (Context& context, + const InstanceInterface& vki, + const VkPhysicalDevice physDevice, + const VkImageCreateFlags flags); + + virtual void updateMemoryRequirements (const DeviceInterface& vk, + const VkDevice device); +}; - de::MovePtr bufferGroup(new tcu::TestCaseGroup(group->getTestContext(), "buffer", "")); - for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(bufferCases); ++ndx) - addFunctionCase(bufferGroup.get(), bufferCases[ndx].name, "", testBuffer, bufferCases[ndx].flags); +tcu::TestStatus ImageMemoryRequirementsExtended::testEntryPoint (Context& context, const ImageTestParams params) +{ + ImageMemoryRequirementsExtended test; - group->addChild(bufferGroup.release()); - } + return test.execTest(context, params); +} - // Images - { - const struct - { - VkImageCreateFlags flags; - bool transient; - const char* const name; - } imageFlagsCases[] = - { - { (VkImageCreateFlags)0, false, "regular" }, - { (VkImageCreateFlags)0, true, "transient" }, - { VK_IMAGE_CREATE_SPARSE_BINDING_BIT, false, "sparse" }, - { VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, false, "sparse_residency" }, - { VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, false, "sparse_aliased" }, - { VK_IMAGE_CREATE_SPARSE_BINDING_BIT | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT | VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, false, "sparse_residency_aliased" }, - }; - - de::MovePtr imageGroup(new tcu::TestCaseGroup(group->getTestContext(), "image", "")); - - for (int flagsNdx = 0; flagsNdx < DE_LENGTH_OF_ARRAY(imageFlagsCases); ++flagsNdx) - for (int tilingNdx = 0; tilingNdx <= 1; ++tilingNdx) - { - ImageParams params; - std::ostringstream caseName; +void ImageMemoryRequirementsExtended::addFunctionTestCase (tcu::TestCaseGroup* group, + const std::string& name, + const std::string& desc, + const ImageTestParams arg0) +{ + addFunctionCase(group, name, desc, testEntryPoint, arg0); +} + +void ImageMemoryRequirementsExtended::preTestChecks (Context& context, + const InstanceInterface& vki, + const VkPhysicalDevice physDevice, + const VkImageCreateFlags createFlags) +{ + const std::string extensionName("VK_KHR_get_memory_requirements2"); - params.flags = imageFlagsCases[flagsNdx].flags; - params.transient = imageFlagsCases[flagsNdx].transient; - caseName << imageFlagsCases[flagsNdx].name; + if (!de::contains(context.getDeviceExtensions().begin(), context.getDeviceExtensions().end(), extensionName)) + TCU_THROW(NotSupportedError, std::string(extensionName + " is not supported").c_str()); - if (tilingNdx != 0) - { - params.tiling = VK_IMAGE_TILING_OPTIMAL; - caseName << "_tiling_optimal"; - } - else - { - params.tiling = VK_IMAGE_TILING_LINEAR; - caseName << "_tiling_linear"; - } + ImageMemoryRequirementsOriginal::preTestChecks (context, vki, physDevice, createFlags); +} - if ((params.flags & VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) && (params.tiling == VK_IMAGE_TILING_LINEAR)) - continue; +void ImageMemoryRequirementsExtended::updateMemoryRequirements (const DeviceInterface& vk, + const VkDevice device) +{ + m_currentTestRequirements = getImageMemoryRequirements2(vk, device, m_currentTestImageInfo); +} - addFunctionCase(imageGroup.get(), caseName.str(), "", testImage, params); - } - group->addChild(imageGroup.release()); - } +void populateCoreTestGroup (tcu::TestCaseGroup* group) +{ + BufferMemoryRequirementsOriginal bufferTest; + ImageMemoryRequirementsOriginal imageTest; + + bufferTest.populateTestGroup(group); + imageTest.populateTestGroup(group); +} + +void populateExtendedTestGroup (tcu::TestCaseGroup* group) +{ + BufferMemoryRequirementsExtended bufferTest; + ImageMemoryRequirementsExtended imageTest; + + bufferTest.populateTestGroup(group); + imageTest.populateTestGroup(group); } } // anonymous + tcu::TestCaseGroup* createRequirementsTests (tcu::TestContext& testCtx) { - return createTestGroup(testCtx, "requirements", "Buffer and image memory requirements", populateTestGroup); + de::MovePtr requirementsGroup(new tcu::TestCaseGroup(testCtx, "requirements", "Buffer and image memory requirements")); + + requirementsGroup->addChild(createTestGroup(testCtx, "core", "Memory requirements tests with core functionality", populateCoreTestGroup)); + requirementsGroup->addChild(createTestGroup(testCtx, "extended", "Memory requirements tests with extension VK_KHR_get_memory_requirements2", populateExtendedTestGroup)); + + return requirementsGroup.release(); } } // memory diff --git a/external/vulkancts/mustpass/1.0.2/vk-default.txt b/external/vulkancts/mustpass/1.0.2/vk-default.txt index 1a15060..fd6e7d7 100644 --- a/external/vulkancts/mustpass/1.0.2/vk-default.txt +++ b/external/vulkancts/mustpass/1.0.2/vk-default.txt @@ -15318,21 +15318,36 @@ dEQP-VK.memory.pipeline_barrier.all_device.1024 dEQP-VK.memory.pipeline_barrier.all_device.8192 dEQP-VK.memory.pipeline_barrier.all_device.65536 dEQP-VK.memory.pipeline_barrier.all_device.1048576 -dEQP-VK.memory.requirements.buffer.regular -dEQP-VK.memory.requirements.buffer.sparse -dEQP-VK.memory.requirements.buffer.sparse_residency -dEQP-VK.memory.requirements.buffer.sparse_aliased -dEQP-VK.memory.requirements.buffer.sparse_residency_aliased -dEQP-VK.memory.requirements.image.regular_tiling_linear -dEQP-VK.memory.requirements.image.regular_tiling_optimal -dEQP-VK.memory.requirements.image.transient_tiling_linear -dEQP-VK.memory.requirements.image.transient_tiling_optimal -dEQP-VK.memory.requirements.image.sparse_tiling_linear -dEQP-VK.memory.requirements.image.sparse_tiling_optimal -dEQP-VK.memory.requirements.image.sparse_residency_tiling_optimal -dEQP-VK.memory.requirements.image.sparse_aliased_tiling_linear -dEQP-VK.memory.requirements.image.sparse_aliased_tiling_optimal -dEQP-VK.memory.requirements.image.sparse_residency_aliased_tiling_optimal +dEQP-VK.memory.requirements.core.buffer.regular +dEQP-VK.memory.requirements.core.buffer.sparse +dEQP-VK.memory.requirements.core.buffer.sparse_residency +dEQP-VK.memory.requirements.core.buffer.sparse_aliased +dEQP-VK.memory.requirements.core.buffer.sparse_residency_aliased +dEQP-VK.memory.requirements.core.image.regular_tiling_linear +dEQP-VK.memory.requirements.core.image.regular_tiling_optimal +dEQP-VK.memory.requirements.core.image.transient_tiling_linear +dEQP-VK.memory.requirements.core.image.transient_tiling_optimal +dEQP-VK.memory.requirements.core.image.sparse_tiling_linear +dEQP-VK.memory.requirements.core.image.sparse_tiling_optimal +dEQP-VK.memory.requirements.core.image.sparse_residency_tiling_optimal +dEQP-VK.memory.requirements.core.image.sparse_aliased_tiling_linear +dEQP-VK.memory.requirements.core.image.sparse_aliased_tiling_optimal +dEQP-VK.memory.requirements.core.image.sparse_residency_aliased_tiling_optimal +dEQP-VK.memory.requirements.extended.buffer.regular +dEQP-VK.memory.requirements.extended.buffer.sparse +dEQP-VK.memory.requirements.extended.buffer.sparse_residency +dEQP-VK.memory.requirements.extended.buffer.sparse_aliased +dEQP-VK.memory.requirements.extended.buffer.sparse_residency_aliased +dEQP-VK.memory.requirements.extended.image.regular_tiling_linear +dEQP-VK.memory.requirements.extended.image.regular_tiling_optimal +dEQP-VK.memory.requirements.extended.image.transient_tiling_linear +dEQP-VK.memory.requirements.extended.image.transient_tiling_optimal +dEQP-VK.memory.requirements.extended.image.sparse_tiling_linear +dEQP-VK.memory.requirements.extended.image.sparse_tiling_optimal +dEQP-VK.memory.requirements.extended.image.sparse_residency_tiling_optimal +dEQP-VK.memory.requirements.extended.image.sparse_aliased_tiling_linear +dEQP-VK.memory.requirements.extended.image.sparse_aliased_tiling_optimal +dEQP-VK.memory.requirements.extended.image.sparse_residency_aliased_tiling_optimal dEQP-VK.pipeline.stencil.format.s8_uint.states.front_fail_decc_pass_repl_dfail_inv_comp_not_equal_back_fail_decc_pass_repl_dfail_keep_comp_less dEQP-VK.pipeline.stencil.format.s8_uint.states.front_fail_incc_pass_keep_dfail_inv_comp_not_equal_back_fail_decc_pass_repl_dfail_inv_comp_not_equal dEQP-VK.pipeline.stencil.format.s8_uint.states.front_fail_wrap_pass_decw_dfail_wrap_comp_less_back_fail_incc_pass_keep_dfail_inv_comp_not_equal diff --git a/external/vulkancts/scripts/src/vulkan.h.in b/external/vulkancts/scripts/src/vulkan.h.in index 8f18a78..a102a73 100644 --- a/external/vulkancts/scripts/src/vulkan.h.in +++ b/external/vulkancts/scripts/src/vulkan.h.in @@ -232,6 +232,11 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001, VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001, + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002, + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003, + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004, VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO, VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1), @@ -4121,6 +4126,63 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR( VkSurfaceFormat2KHR* pSurfaceFormats); #endif +#define VK_KHR_get_memory_requirements2 1 +#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1 +#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2" + +typedef struct VkBufferMemoryRequirementsInfo2KHR { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; +} VkBufferMemoryRequirementsInfo2KHR; + +typedef struct VkImageMemoryRequirementsInfo2KHR { + VkStructureType sType; + const void* pNext; + VkImage image; +} VkImageMemoryRequirementsInfo2KHR; + +typedef struct VkImageSparseMemoryRequirementsInfo2KHR { + VkStructureType sType; + const void* pNext; + VkImage image; +} VkImageSparseMemoryRequirementsInfo2KHR; + +typedef struct VkMemoryRequirements2KHR { + VkStructureType sType; + void* pNext; + VkMemoryRequirements memoryRequirements; +} VkMemoryRequirements2KHR; + +typedef struct VkSparseImageMemoryRequirements2KHR { + VkStructureType sType; + void* pNext; + VkSparseImageMemoryRequirements memoryRequirements; +} VkSparseImageMemoryRequirements2KHR; + + +typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR( + VkDevice device, + const VkImageMemoryRequirementsInfo2KHR* pInfo, + VkMemoryRequirements2KHR* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR( + VkDevice device, + const VkBufferMemoryRequirementsInfo2KHR* pInfo, + VkMemoryRequirements2KHR* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR( + VkDevice device, + const VkImageSparseMemoryRequirementsInfo2KHR* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements); +#endif + #define VK_EXT_debug_report 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) -- 2.7.4