mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 15:58:05 +02:00
tu: Add capture/replay for sparse buffers and descriptor buffer.
This matches the behavior of radv for these two.
Fixes:
dEQP-VK.binding_model.descriptor_buffer.traditional_buffer.capture_replay.sparse_buffer_descriptor_data_consistency
dEQP-VK.binding_model.descriptor_buffer.traditional_buffer.capture_replay.sparse_buffer_descriptor_data_consistency_and_usage
Fixes: 8feed47fce ("tu: Initial support for sparse binding")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38148>
This commit is contained in:
parent
917058a4c5
commit
7372c7c9e2
5 changed files with 24 additions and 9 deletions
|
|
@ -262,11 +262,8 @@ nobin-dEQP-VK.transform_feedback.simple_optimized_gpl.draw_indirect_multiview_co
|
|||
nobin-dEQP-VK.transform_feedback.simple_optimized_gpl.draw_indirect_multiview_counter_offset_244,Fail
|
||||
|
||||
# New failures with VKCTS 1.4.4.0
|
||||
dEQP-VK.binding_model.descriptor_buffer.traditional_buffer.capture_replay.sparse_buffer_descriptor_data_consistency_and_usage,Fail
|
||||
dEQP-VK.binding_model.descriptor_buffer.traditional_buffer.capture_replay.sparse_buffer_descriptor_data_consistency,Fail
|
||||
dEQP-VK.pipeline.monolithic.misc.identically_defined_layout,Fail
|
||||
dEQP-VK.tessellation.misc_draw.tess_factor_barrier_bug,Crash
|
||||
gmem-dEQP-VK.binding_model.descriptor_buffer.traditional_buffer.capture_replay.sparse_buffer_descriptor_data_consistency_and_usage,Fail
|
||||
gmem-dEQP-VK.transform_feedback.simple.draw_indirect_counter_offset_16,Fail
|
||||
gmem-dEQP-VK.transform_feedback.simple.draw_indirect_multiview_counter_offset_508,Fail
|
||||
gmem-dEQP-VK.transform_feedback.simple_fast_gpl.draw_indirect_counter_offset_244,Fail
|
||||
|
|
|
|||
|
|
@ -40,8 +40,6 @@ gmem-dEQP-VK.transform_feedback.simple.draw_indirect_multiview_counter_offset_24
|
|||
nobin-dEQP-VK.transform_feedback.simple.draw_indirect_multiview_counter_offset_16,Fail
|
||||
|
||||
# New failures with VKCTS 1.4.4.0
|
||||
dEQP-VK.binding_model.descriptor_buffer.traditional_buffer.capture_replay.sparse_buffer_descriptor_data_consistency_and_usage,Fail
|
||||
dEQP-VK.binding_model.descriptor_buffer.traditional_buffer.capture_replay.sparse_buffer_descriptor_data_consistency,Fail
|
||||
dEQP-VK.pipeline.monolithic.misc.identically_defined_layout,Fail
|
||||
dEQP-VK.tessellation.misc_draw.tess_factor_barrier_bug,Crash
|
||||
gmem-dEQP-VK.transform_feedback.simple.draw_indirect_counter_offset_16,Fail
|
||||
|
|
|
|||
|
|
@ -28,10 +28,7 @@ dynamic-dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_2.d32_s
|
|||
dynamic-dEQP-VK.renderpass2.depth_stencil_resolve.image_2d_32_32.samples_2.d32_sfloat_s8_uint_separate_layouts.compatibility_depth_zero_stencil_zero_testing_stencil,Fail
|
||||
|
||||
# New failures with VKCTS 1.4.4.0
|
||||
dEQP-VK.binding_model.descriptor_buffer.traditional_buffer.capture_replay.sparse_buffer_descriptor_data_consistency_and_usage,Fail
|
||||
dEQP-VK.binding_model.descriptor_buffer.traditional_buffer.capture_replay.sparse_buffer_descriptor_data_consistency,Fail
|
||||
dEQP-VK.pipeline.monolithic.misc.identically_defined_layout,Fail
|
||||
gmem-dEQP-VK.binding_model.descriptor_buffer.traditional_buffer.capture_replay.sparse_buffer_descriptor_data_consistency_and_usage,Fail
|
||||
|
||||
# New failures when updating kernel from msm-next at 6.16 to 6.19.5
|
||||
# https://gitlab.freedesktop.org/drm/msm/-/issues/93
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ tu_CreateBuffer(VkDevice _device,
|
|||
flags |= TU_SPARSE_VMA_MAP_ZERO;
|
||||
if (pCreateInfo->flags & VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT)
|
||||
flags |= TU_SPARSE_VMA_REPLAYABLE;
|
||||
if (pCreateInfo->flags & VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT)
|
||||
flags |= TU_SPARSE_VMA_REPLAYABLE;
|
||||
|
||||
const VkBufferOpaqueCaptureAddressCreateInfo *replay_info =
|
||||
vk_find_struct_const(pCreateInfo->pNext,
|
||||
|
|
@ -47,6 +49,13 @@ tu_CreateBuffer(VkDevice _device,
|
|||
flags |= TU_SPARSE_VMA_REPLAYABLE;
|
||||
}
|
||||
|
||||
const VkOpaqueCaptureDescriptorDataCreateInfoEXT *descriptor_replay_info =
|
||||
vk_find_struct_const(pCreateInfo->pNext, OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT);
|
||||
if (descriptor_replay_info && descriptor_replay_info->opaqueCaptureDescriptorData) {
|
||||
client_address = *(const uint64_t *) descriptor_replay_info->opaqueCaptureDescriptorData;
|
||||
flags |= TU_SPARSE_VMA_REPLAYABLE;
|
||||
}
|
||||
|
||||
VkResult result =
|
||||
tu_sparse_vma_init(device, &buffer->vk.base, &buffer->vma,
|
||||
&buffer->vk.device_address, flags,
|
||||
|
|
@ -231,3 +240,17 @@ uint64_t tu_GetBufferOpaqueCaptureAddress(
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
VkResult VKAPI_CALL
|
||||
tu_GetBufferOpaqueCaptureDescriptorDataEXT(VkDevice device,
|
||||
const VkBufferCaptureDescriptorDataInfoEXT *pInfo,
|
||||
void *pData)
|
||||
{
|
||||
VK_FROM_HANDLE(tu_buffer, buffer, pInfo->buffer);
|
||||
|
||||
/* Save the buffer iova so that when replaying sparse buffers have a
|
||||
* consistent iova and therefore consistent descriptor contents.
|
||||
*/
|
||||
*(uint64_t *)pData = buffer->vk.device_address;
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1398,7 +1398,7 @@ tu_get_properties(struct tu_physical_device *pdevice,
|
|||
props->maxSamplerDescriptorBufferBindings = pdevice->usable_sets;
|
||||
props->maxEmbeddedImmutableSamplerBindings = pdevice->usable_sets;
|
||||
props->maxEmbeddedImmutableSamplers = max_descriptor_set_size;
|
||||
props->bufferCaptureReplayDescriptorDataSize = 0;
|
||||
props->bufferCaptureReplayDescriptorDataSize = sizeof(uint64_t);
|
||||
props->imageCaptureReplayDescriptorDataSize = sizeof(uint64_t);
|
||||
props->imageViewCaptureReplayDescriptorDataSize = 0;
|
||||
props->samplerCaptureReplayDescriptorDataSize = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue