On 18 September 2017 at 01:00, Jason Ekstrand <ja...@jlekstrand.net> wrote: > Reviewed: Jason Ekstrand <ja...@jlekstrand.net>
Reviewed-by: Dave Airlie <airl...@redhat.com> > > > > On September 17, 2017 5:00:01 AM Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> > wrote: > >> Nothing too exciting, just adding the possibility for a pNext pointer, >> and batch binding. Our binding is pretty much trivial. >> >> It also adds VK_IMAGE_CREATE_ALIAS_BIT_KHR, but since we store no >> state in radv_image, I don't think we have to do anything there. >> --- >> src/amd/vulkan/radv_device.c | 82 >> ++++++++++++++++++++++++---------- >> src/amd/vulkan/radv_entrypoints_gen.py | 1 + >> 2 files changed, 59 insertions(+), 24 deletions(-) >> >> diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c >> index e6d595dfbe5..7bfdddf0eea 100644 >> --- a/src/amd/vulkan/radv_device.c >> +++ b/src/amd/vulkan/radv_device.c >> @@ -174,6 +174,10 @@ static const VkExtensionProperties >> common_device_extensions[] = { >> .extensionName = VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME, >> .specVersion = 1, >> }, >> + { >> + .extensionName = VK_KHR_BIND_MEMORY_2_EXTENSION_NAME, >> + .specVersion = 1, >> + }, >> }; >> static const VkExtensionProperties ext_sema_device_extensions[] = { >> { >> @@ -2481,44 +2485,74 @@ void radv_GetDeviceMemoryCommitment( >> *pCommittedMemoryInBytes = 0; >> } >> >> +VkResult radv_BindBufferMemory2KHR(VkDevice device, >> + uint32_t bindInfoCount, >> + const VkBindBufferMemoryInfoKHR >> *pBindInfos) >> +{ >> + for (uint32_t i = 0; i < bindInfoCount; ++i) { >> + RADV_FROM_HANDLE(radv_device_memory, mem, >> pBindInfos[i].memory); >> + RADV_FROM_HANDLE(radv_buffer, buffer, >> pBindInfos[i].buffer); >> + >> + if (mem) { >> + buffer->bo = mem->bo; >> + buffer->offset = pBindInfos[i].memoryOffset; >> + } else { >> + buffer->bo = NULL; >> + } >> + } >> + return VK_SUCCESS; >> +} >> + >> VkResult radv_BindBufferMemory( >> VkDevice device, >> - VkBuffer _buffer, >> - VkDeviceMemory _memory, >> + VkBuffer buffer, >> + VkDeviceMemory memory, >> VkDeviceSize memoryOffset) >> { >> - RADV_FROM_HANDLE(radv_device_memory, mem, _memory); >> - RADV_FROM_HANDLE(radv_buffer, buffer, _buffer); >> + const VkBindBufferMemoryInfoKHR info = { >> + .sType = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR, >> + .buffer = buffer, >> + .memory = memory, >> + .memoryOffset = memoryOffset >> + }; >> >> - if (mem) { >> - buffer->bo = mem->bo; >> - buffer->offset = memoryOffset; >> - } else { >> - buffer->bo = NULL; >> - buffer->offset = 0; >> - } >> + return radv_BindBufferMemory2KHR(device, 1, &info); >> +} >> >> +VkResult radv_BindImageMemory2KHR(VkDevice device, >> + uint32_t bindInfoCount, >> + const VkBindImageMemoryInfoKHR >> *pBindInfos) >> +{ >> + for (uint32_t i = 0; i < bindInfoCount; ++i) { >> + RADV_FROM_HANDLE(radv_device_memory, mem, >> pBindInfos[i].memory); >> + RADV_FROM_HANDLE(radv_image, image, pBindInfos[i].image); >> + >> + if (mem) { >> + image->bo = mem->bo; >> + image->offset = pBindInfos[i].memoryOffset; >> + } else { >> + image->bo = NULL; >> + image->offset = 0; >> + } >> + } >> return VK_SUCCESS; >> } >> >> + >> VkResult radv_BindImageMemory( >> VkDevice device, >> - VkImage _image, >> - VkDeviceMemory _memory, >> + VkImage image, >> + VkDeviceMemory memory, >> VkDeviceSize memoryOffset) >> { >> - RADV_FROM_HANDLE(radv_device_memory, mem, _memory); >> - RADV_FROM_HANDLE(radv_image, image, _image); >> - >> - if (mem) { >> - image->bo = mem->bo; >> - image->offset = memoryOffset; >> - } else { >> - image->bo = NULL; >> - image->offset = 0; >> - } >> + const VkBindImageMemoryInfoKHR info = { >> + .sType = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR, >> + .image = image, >> + .memory = memory, >> + .memoryOffset = memoryOffset >> + }; >> >> - return VK_SUCCESS; >> + return radv_BindImageMemory2KHR(device, 1, &info); >> } >> >> >> diff --git a/src/amd/vulkan/radv_entrypoints_gen.py >> b/src/amd/vulkan/radv_entrypoints_gen.py >> index 9634f76fcd6..21738f4da90 100644 >> --- a/src/amd/vulkan/radv_entrypoints_gen.py >> +++ b/src/amd/vulkan/radv_entrypoints_gen.py >> @@ -57,6 +57,7 @@ SUPPORTED_EXTENSIONS = [ >> 'VK_KHR_external_semaphore_capabilities', >> 'VK_KHR_external_semaphore', >> 'VK_KHR_external_semaphore_fd', >> + 'VK_KHR_bind_memory2', >> ] >> >> # We generate a static hash table for entry point lookup >> -- >> 2.14.1 >> >> _______________________________________________ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/mesa-dev > > > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev