mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-21 15:28:18 +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") (cherry picked from commit7372c7c9e2) Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41540>
This commit is contained in:
parent
63e10b7be1
commit
953fca352b
6 changed files with 25 additions and 10 deletions
|
|
@ -4654,7 +4654,7 @@
|
|||
"description": "tu: Add capture/replay for sparse buffers and descriptor buffer.",
|
||||
"nominated": true,
|
||||
"nomination_type": 2,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "8feed47fce263438d1b2546e8f3475a4e0caa8d6",
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -244,8 +244,6 @@ gmem-dEQP-VK.transform_feedback.simple.draw_indirect_multiview_counter_offset_16
|
|||
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.renderpasses.dynamic_rendering.complete_secondary_cmd_buff.fragment_density_map.offset.clamp_to_edge.hor_offset_negative,Fail
|
||||
dEQP-VK.renderpasses.dynamic_rendering.complete_secondary_cmd_buff.fragment_density_map.offset.clamp_to_edge.hor_offset_negative_multiview,Fail
|
||||
|
|
@ -341,7 +339,6 @@ dEQP-VK.renderpasses.renderpass2.fragment_density_map.offset.oversized_fdm.vert_
|
|||
dEQP-VK.renderpasses.renderpass2.fragment_density_map.offset.oversized_fdm.vert_offset_negative,Fail
|
||||
dEQP-VK.tessellation.misc_draw.tess_factor_barrier_bug,Crash
|
||||
bypass-dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.basic.partial_binding_depth_stencil,Fail
|
||||
gmem-dEQP-VK.binding_model.descriptor_buffer.traditional_buffer.capture_replay.sparse_buffer_descriptor_data_consistency_and_usage,Fail
|
||||
gmem-dEQP-VK.renderpasses.dynamic_rendering.complete_secondary_cmd_buff.fragment_density_map.offset.clamp_to_edge.vert_offset_negative,Fail
|
||||
gmem-dEQP-VK.renderpasses.dynamic_rendering.complete_secondary_cmd_buff.fragment_density_map.offset.oversized_fdm.vert_offset_negative_suspend_resume,Fail
|
||||
gmem-dEQP-VK.renderpasses.dynamic_rendering.partial_secondary_cmd_buff.fragment_density_map.offset.min_shift.hor_offset_negative_multiview,Fail
|
||||
|
|
|
|||
|
|
@ -41,8 +41,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.renderpasses.dynamic_rendering.primary_cmd_buff.basic.partial_binding_depth_stencil,Fail
|
||||
dEQP-VK.tessellation.misc_draw.tess_factor_barrier_bug,Crash
|
||||
|
|
|
|||
|
|
@ -29,11 +29,8 @@ 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
|
||||
dEQP-VK.renderpasses.dynamic_rendering.primary_cmd_buff.basic.partial_binding_depth_stencil,Fail
|
||||
gmem-dEQP-VK.binding_model.descriptor_buffer.traditional_buffer.capture_replay.sparse_buffer_descriptor_data_consistency_and_usage,Fail
|
||||
|
||||
|
||||
# Bad assumptions in piglit about layout of multiplanar formats,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1348,7 +1348,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