From da9b10937ffc73f3fb3af250b0a57e2ea67bb63e Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Thu, 16 Apr 2015 11:44:05 -0500 Subject: vulkan: Updated vulkan.h for revision 79 -- Bug #13464 Implemented the changes required for adding fine-grained synchronization to vkBindMemoryObject and related APIs. --- include/vulkan.h | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'include/vulkan.h') diff --git a/include/vulkan.h b/include/vulkan.h index 8d0d5d5b..2c538572 100644 --- a/include/vulkan.h +++ b/include/vulkan.h @@ -1075,6 +1075,7 @@ typedef enum VkQueueFlags_ VK_QUEUE_GRAPHICS_BIT = 0x00000001, // Queue supports graphics operations VK_QUEUE_COMPUTE_BIT = 0x00000002, // Queue supports compute operations VK_QUEUE_DMA_BIT = 0x00000004, // Queue supports DMA operations + VK_QUEUE_MEMMGR_BIT = 0x00000008, // Queue supports memory management operations VK_QUEUE_EXTENDED_BIT = 0x40000000, // Extended queue VK_MAX_ENUM(VkQueueFlags) } VkQueueFlags; @@ -1427,7 +1428,7 @@ typedef struct VkMemoryRequirements_ { VkGpuSize size; // Specified in bytes VkGpuSize alignment; // Specified in bytes - VkGpuSize granularity; // Granularity on which vkBindObjectMemoryRange can bind sub-ranges of memory specified in bytes (usually the page size) + VkGpuSize granularity; // Granularity on which vkQueueBindObjectMemoryRange can bind sub-ranges of memory specified in bytes (usually the page size) VkFlags memProps; // VkMemoryPropertyFlags } VkMemoryRequirements; @@ -2213,9 +2214,9 @@ typedef VkResult (VKAPI *PFN_vkOpenPeerMemory)(VkDevice device, const VkPeerMemo typedef VkResult (VKAPI *PFN_vkOpenPeerImage)(VkDevice device, const VkPeerImageOpenInfo* pOpenInfo, VkImage* pImage, VkGpuMemory* pMem); typedef VkResult (VKAPI *PFN_vkDestroyObject)(VkObject object); typedef VkResult (VKAPI *PFN_vkGetObjectInfo)(VkBaseObject object, VkObjectInfoType infoType, size_t* pDataSize, void* pData); -typedef VkResult (VKAPI *PFN_vkBindObjectMemory)(VkObject object, uint32_t allocationIdx, VkGpuMemory mem, VkGpuSize offset); -typedef VkResult (VKAPI *PFN_vkBindObjectMemoryRange)(VkObject object, uint32_t allocationIdx, VkGpuSize rangeOffset,VkGpuSize rangeSize, VkGpuMemory mem, VkGpuSize memOffset); -typedef VkResult (VKAPI *PFN_vkBindImageMemoryRange)(VkImage image, uint32_t allocationIdx, const VkImageMemoryBindInfo* bindInfo, VkGpuMemory mem, VkGpuSize memOffset); +typedef VkResult (VKAPI *PFN_vkQueueBindObjectMemory)(VkQueue queue, VkObject object, uint32_t allocationIdx, VkGpuMemory mem, VkGpuSize offset); +typedef VkResult (VKAPI *PFN_vkQueueBindObjectMemoryRange)(VkQueue queue, VkObject object, uint32_t allocationIdx, VkGpuSize rangeOffset,VkGpuSize rangeSize, VkGpuMemory mem, VkGpuSize memOffset); +typedef VkResult (VKAPI *PFN_vkQueueBindImageMemoryRange)(VkQueue queue, VkImage image, uint32_t allocationIdx, const VkImageMemoryBindInfo* bindInfo, VkGpuMemory mem, VkGpuSize memOffset); typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence); typedef VkResult (VKAPI *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, VkFence* pFences); typedef VkResult (VKAPI *PFN_vkGetFenceStatus)(VkFence fence); @@ -2453,13 +2454,17 @@ VkResult VKAPI vkGetObjectInfo( size_t* pDataSize, void* pData); -VkResult VKAPI vkBindObjectMemory( +// Memory namagement API functions + +VkResult VKAPI vkQueueBindObjectMemory( + VkQueue queue, VkObject object, uint32_t allocationIdx, VkGpuMemory mem, VkGpuSize memOffset); -VkResult VKAPI vkBindObjectMemoryRange( +VkResult VKAPI vkQueueBindObjectMemoryRange( + VkQueue queue, VkObject object, uint32_t allocationIdx, VkGpuSize rangeOffset, @@ -2467,7 +2472,8 @@ VkResult VKAPI vkBindObjectMemoryRange( VkGpuMemory mem, VkGpuSize memOffset); -VkResult VKAPI vkBindImageMemoryRange( +VkResult VKAPI vkQueueBindImageMemoryRange( + VkQueue queue, VkImage image, uint32_t allocationIdx, const VkImageMemoryBindInfo* bindInfo, -- cgit v1.2.3