From 80db03f7e6140e1b607dfaa09eeff91c36bc272c Mon Sep 17 00:00:00 2001 From: ladevieq Date: Wed, 4 Aug 2021 21:57:27 +0200 Subject: Use buffer device address with push constants --- src/vk-api.cpp | 41 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 25 deletions(-) (limited to 'src/vk-api.cpp') diff --git a/src/vk-api.cpp b/src/vk-api.cpp index 9ce8c05..c6dcf0b 100644 --- a/src/vk-api.cpp +++ b/src/vk-api.cpp @@ -61,7 +61,7 @@ Buffer vkapi::create_buffer(size_t data_size, VkBufferUsageFlags buffer_usage, V VkBufferCreateInfo buffer_info = {}; buffer_info.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; buffer_info.size = data_size; - buffer_info.usage = buffer_usage; + buffer_info.usage = buffer_usage | VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR; VmaAllocationCreateInfo alloc_create_info = {}; alloc_create_info.usage = mem_usage; @@ -71,6 +71,13 @@ Buffer vkapi::create_buffer(size_t data_size, VkBufferUsageFlags buffer_usage, V buffer.size = data_size; + VkBufferDeviceAddressInfo buffer_device_address_info = {}; + buffer_device_address_info.sType = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO; + buffer_device_address_info.pNext = VK_NULL_HANDLE; + buffer_device_address_info.buffer = buffer.handle; + + buffer.device_address = vkGetBufferDeviceAddress(context.device, &buffer_device_address_info); + return std::move(buffer); } @@ -440,14 +447,19 @@ Pipeline vkapi::create_compute_pipeline(const char* shader_name, std::vector