diff options
author | Chad Versace <[email protected]> | 2015-07-09 19:59:44 -0700 |
---|---|---|
committer | Chad Versace <[email protected]> | 2015-07-10 17:35:52 -0700 |
commit | f43a304dc6284c8c98b9bcef32283b7715f1f820 (patch) | |
tree | f651f31705cd5e71a1c255cdac2bc20ef46e1fe6 | |
parent | df2a013881532c9a29f6c9fd36b628ddc8565749 (diff) |
vk/0.130: Update vkAllocMemory to use VkMemoryType
-rw-r--r-- | include/vulkan/vulkan.h | 5 | ||||
-rw-r--r-- | src/vulkan/device.c | 23 | ||||
-rw-r--r-- | src/vulkan/x11.c | 1 |
3 files changed, 20 insertions, 9 deletions
diff --git a/include/vulkan/vulkan.h b/include/vulkan/vulkan.h index 72eef2ade08..805e03680e7 100644 --- a/include/vulkan/vulkan.h +++ b/include/vulkan/vulkan.h @@ -1319,7 +1319,7 @@ typedef struct { VkStructureType sType; const void* pNext; VkDeviceSize allocationSize; - VkMemoryPropertyFlags memProps; + uint32_t memoryTypeIndex; } VkMemoryAllocInfo; typedef struct { @@ -1334,8 +1334,7 @@ typedef struct { VkDeviceSize size; VkDeviceSize alignment; VkDeviceSize granularity; - VkMemoryPropertyFlags memPropsAllowed; - VkMemoryPropertyFlags memPropsRequired; + uint32_t memoryTypeBits; } VkMemoryRequirements; typedef struct { diff --git a/src/vulkan/device.c b/src/vulkan/device.c index 15cdc1dca83..43202a0867f 100644 --- a/src/vulkan/device.c +++ b/src/vulkan/device.c @@ -1077,6 +1077,13 @@ VkResult anv_AllocMemory( assert(pAllocInfo->sType == VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO); + if (pAllocInfo->memoryTypeIndex != 0) { + /* We support exactly one memory heap. */ + return vk_error(VK_ERROR_INVALID_VALUE); + } + + /* FINISHME: Fail if allocation request exceeds heap size. */ + mem = anv_device_alloc(device, sizeof(*mem), 8, VK_SYSTEM_ALLOC_TYPE_API_OBJECT); if (mem == NULL) @@ -1254,13 +1261,17 @@ VkResult anv_GetObjectMemoryRequirements( VkObject object, VkMemoryRequirements* pMemoryRequirements) { - pMemoryRequirements->memPropsAllowed = - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | - /* VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT | */ - /* VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT | */ - VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT; - pMemoryRequirements->memPropsRequired = 0; + /* The Vulkan spec (git aaed022) says: + * + * memoryTypeBits is a bitfield and contains one bit set for every + * supported memory type for the resource. The bit `1<<i` is set if and + * only if the memory type `i` in the VkPhysicalDeviceMemoryProperties + * structure for the physical device is supported. + * + * We support exactly one memory type. + */ + pMemoryRequirements->memoryTypeBits = 1; switch (objType) { case VK_OBJECT_TYPE_BUFFER: { diff --git a/src/vulkan/x11.c b/src/vulkan/x11.c index ee9cdcdd51c..7b6cee011a4 100644 --- a/src/vulkan/x11.c +++ b/src/vulkan/x11.c @@ -144,6 +144,7 @@ VkResult anv_CreateSwapChainWSI( &(VkMemoryAllocInfo) { .sType = VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO, .allocationSize = image->size, + .memoryTypeIndex = 0, }, (VkDeviceMemory *) &memory); |