vulkan/runtime: build (address|copy)_flags for vk_buffer

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40431>
This commit is contained in:
Lionel Landwerlin 2025-03-05 14:34:18 +02:00 committed by Marge Bot
parent ba2e3b1d10
commit b7bf4e5304
2 changed files with 23 additions and 1 deletions

View file

@ -48,6 +48,22 @@ vk_buffer_init(struct vk_device *device,
BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR);
if (usage2_info != NULL)
buffer->usage = usage2_info->usage;
buffer->address_flags =
((buffer->create_flags & VK_BUFFER_CREATE_PROTECTED_BIT) ?
VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR : 0) |
((buffer->usage & VK_BUFFER_USAGE_STORAGE_BUFFER_BIT) ?
VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR : 0) |
((buffer->usage & VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT) ?
VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR : 0) |
((buffer->usage & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) == 0 ?
VK_ADDRESS_COMMAND_FULLY_BOUND_BIT_KHR : 0);
buffer->copy_flags =
((buffer->create_flags & VK_BUFFER_CREATE_PROTECTED_BIT) ?
VK_ADDRESS_COPY_PROTECTED_BIT_KHR : 0) |
((buffer->create_flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) ?
VK_ADDRESS_COPY_SPARSE_BIT_KHR : 0);
}
void *
@ -128,7 +144,7 @@ vk_common_GetBufferMemoryRequirements2(VkDevice _device,
.pNext = NULL,
.pCreateInfo = &pCreateInfo,
};
device->dispatch_table.GetDeviceBufferMemoryRequirements(_device, &info, pMemoryRequirements);
}

View file

@ -47,6 +47,12 @@ struct vk_buffer {
* delay as far as the bind for non-sparse buffers.
*/
VkDeviceAddress device_address;
/** Inferred address flags from create_flags */
VkAddressCommandFlagsKHR address_flags;
/** Inferred copy flags from create_flags */
VkAddressCopyFlagsKHR copy_flags;
};
VK_DEFINE_NONDISP_HANDLE_CASTS(vk_buffer, base, VkBuffer,
VK_OBJECT_TYPE_BUFFER);