radv: add capture/replay for sparse buffers and descriptor buffer
Shouldn't be super useful in practice because the normal capture/replay BDA path should also work. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35366>
This commit is contained in:
committed by
Marge Bot
parent
643e1c4395
commit
3b326abf7b
@@ -76,6 +76,15 @@ radv_create_buffer(struct radv_device *device, const VkBufferCreateInfo *pCreate
|
||||
replay_address = opaque_addr_info->opaqueCaptureAddress;
|
||||
}
|
||||
|
||||
if (buffer->vk.create_flags & VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT) {
|
||||
flags |= RADEON_FLAG_REPLAYABLE;
|
||||
|
||||
const VkOpaqueCaptureDescriptorDataCreateInfoEXT *opaque_info =
|
||||
vk_find_struct_const(pCreateInfo->pNext, OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT);
|
||||
if (opaque_info)
|
||||
replay_address = *((const uint64_t *)opaque_info->opaqueCaptureDescriptorData);
|
||||
}
|
||||
|
||||
if (buffer->vk.usage &
|
||||
(VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT | VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT))
|
||||
flags |= RADEON_FLAG_32BIT;
|
||||
@@ -240,6 +249,16 @@ radv_GetBufferOpaqueCaptureAddress(VkDevice device, const VkBufferDeviceAddressI
|
||||
return buffer->vk.device_address;
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
radv_GetBufferOpaqueCaptureDescriptorDataEXT(VkDevice device, const VkBufferCaptureDescriptorDataInfoEXT *pInfo,
|
||||
void *pData)
|
||||
{
|
||||
VK_FROM_HANDLE(radv_buffer, buffer, pInfo->buffer);
|
||||
|
||||
*((uint64_t *)pData) = buffer->vk.device_address;
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VkResult
|
||||
radv_bo_create(struct radv_device *device, struct vk_object_base *object, uint64_t size, unsigned alignment,
|
||||
enum radeon_bo_domain domain, enum radeon_bo_flag flags, unsigned priority, uint64_t address,
|
||||
|
||||
@@ -1868,10 +1868,10 @@ radv_get_physical_device_properties(struct radv_physical_device *pdev)
|
||||
.maxSamplerDescriptorBufferBindings = MAX_SETS,
|
||||
.maxEmbeddedImmutableSamplerBindings = MAX_SETS,
|
||||
.maxEmbeddedImmutableSamplers = radv_max_descriptor_set_size(),
|
||||
/* No data required for capture/replay (except for sparse images) but these values need to be
|
||||
* non-zero.
|
||||
/* No data required for capture/replay (except for sparse buffers/images) but these values
|
||||
* need to be non-zero.
|
||||
*/
|
||||
.bufferCaptureReplayDescriptorDataSize = 1,
|
||||
.bufferCaptureReplayDescriptorDataSize = 8,
|
||||
.imageCaptureReplayDescriptorDataSize = 8,
|
||||
.imageViewCaptureReplayDescriptorDataSize = 1,
|
||||
.samplerCaptureReplayDescriptorDataSize = 1,
|
||||
|
||||
Reference in New Issue
Block a user