panvk: Implement occlusion queries for CSF

Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.cim>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31843>
This commit is contained in:
Mary Guillemard 2024-11-12 10:44:03 +01:00
parent d1934e44fc
commit cbdb4757d4
6 changed files with 322 additions and 325 deletions

View File

@ -266,300 +266,6 @@ spec@ext_image_dma_buf_import@ext_image_dma_buf_import-refcount-multithread,Cras
# physical device and device needs more robustness in allocation handling
# query pool not supported yet
dEQP-VK.api.null_handle.destroy_query_pool,Crash
dEQP-VK.api.object_management.alloc_callback_fail.query_pool,Crash
dEQP-VK.api.object_management.multiple_unique_resources.query_pool,Crash
dEQP-VK.api.object_management.multiple_shared_resources.query_pool,Crash
dEQP-VK.api.object_management.single.query_pool,Crash
dEQP-VK.api.object_management.single_alloc_callbacks.query_pool,Crash
dEQP-VK.api.object_management.max_concurrent.query_pool,Crash
dEQP-VK.api.object_management.multithreaded_shared_resources.query_pool,Crash
dEQP-VK.api.object_management.multithreaded_per_thread_device.query_pool,Crash
dEQP-VK.api.object_management.multithreaded_per_thread_resources.query_pool,Crash
dEQP-VK.api.object_management.private_data.query_pool,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_32_stride_20_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_32_stride_52_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_32_stride_52_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_64_stride_104_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_32_wait_queue_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_12_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_4096_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_0_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_8192_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_conservative_size_32_wait_query_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_32_stride_8_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_32_stride_8_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_64_stride_24_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_32_wait_query_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_32_wait_query_without_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_32_wait_queue_without_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_12_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_20_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_52_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_8_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_104_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_24_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_conservative_size_32_wait_queue_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_16_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_32_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_query_without_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_query_without_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_queue_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_queue_without_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_queue_without_availability_draw_triangles_no_color_attachments,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_12_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_16_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_20_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_8_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_104_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_8_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_12_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_104_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_query_without_availability_draw_points_clear_color,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_without_availability_draw_points_no_color_attachments,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_query_without_availability_draw_points_clear_color,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_query_without_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_queue_without_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_20_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_4_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_40_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_8192_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_8_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_conservative_size_32_wait_queue_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_64_wait_query_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_16_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_16_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_40_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_conservative_size_32_wait_queue_without_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_conservative_size_64_wait_queue_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_20_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_52_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_104_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_query_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_query_without_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_4_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_16_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_24_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_8192_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_conservative_size_32_wait_query_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_conservative_size_64_wait_queue_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_32_stride_12_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_32_stride_4096_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_12_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_8_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_conservative_size_32_wait_queue_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_20_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_8_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_104_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_8192_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_query_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_query_without_availability_draw_points_no_color_attachments,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_4096_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_104_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.basic_conservative,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_32_stride_12_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_32_wait_query_without_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_20_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_4096_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_104_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_40_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_8192_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_16_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_20_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_52_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_32_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_query_without_availability_draw_triangles_clear_depth,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_query_without_availability_draw_triangles_clear_depth,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_queue_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_52_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_52_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_8_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_8192_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_conservative_size_32_wait_queue_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_conservative_size_64_wait_query_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_32_stride_4096_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_64_stride_24_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_64_wait_query_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_64_wait_queue_without_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_8_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_conservative_size_64_wait_queue_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_12_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_16_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_20_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_4096_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_4_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_52_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_32_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_32_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_40_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_40_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_8192_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_query_without_availability_draw_points_clear_depth,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_without_availability_draw_points_clear_color,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_without_availability_draw_triangles_clear_depth,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_query_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_query_without_availability_draw_points_clear_depth,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_queue_without_availability_draw_points_clear_depth,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_12_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_4096_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_8_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_64_stride_104_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_64_stride_16_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_64_wait_queue_without_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_0_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_0_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_12_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_52_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_8192_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_8_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_16_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_query_without_availability_draw_triangles_clear_color,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_query_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_24_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_40_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_32_stride_16_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_64_stride_32_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_64_stride_8192_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_32_wait_query_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_64_wait_query_without_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_64_wait_queue_without_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_20_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_4096_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_52_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_24_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_32_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_32_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_40_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_conservative_size_64_wait_queue_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_4096_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_4_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_16_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_24_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_query_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_query_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_12_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_20_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_64_wait_queue_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_16_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_16_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_52_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_8_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_0_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_104_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_8192_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_conservative_size_32_wait_queue_without_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_conservative_size_64_wait_queue_without_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_16_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_4096_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_4096_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_8_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_40_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_40_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_8192_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_8192_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_8_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_without_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_query_without_availability_draw_triangles_clear_color,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_query_without_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_queue_without_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_16_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_4096_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_104_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_16_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_40_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_conservative_size_32_wait_queue_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_32_stride_20_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_32_wait_query_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_32_wait_query_without_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_64_wait_query_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_64_wait_query_without_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_64_wait_queue_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_16_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_16_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_20_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_conservative_size_32_wait_queue_without_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_conservative_size_64_wait_queue_without_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_104_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_8_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_query_without_availability_draw_triangles_no_color_attachments,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_queue_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_queue_without_availability_draw_points_clear_color,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_queue_without_availability_draw_triangles_clear_depth,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_4096_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_8_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_40_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_conservative_size_32_wait_query_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_32_stride_16_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_64_stride_16_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_32_wait_queue_without_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_4_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_104_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_16_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_40_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_8_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_12_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_52_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_8_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_24_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_query_without_availability_draw_triangles_no_color_attachments,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_without_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_without_availability_draw_triangles_clear_color,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_queue_without_availability_draw_points_no_color_attachments,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_queue_without_availability_draw_triangles_clear_color,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_104_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_16_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_32_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_32_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_64_stride_40_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_32_wait_queue_without_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_32_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_conservative_size_32_wait_queue_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_24_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_without_availability_draw_triangles_no_color_attachments,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_query_without_availability_draw_points_no_color_attachments,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_16_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_52_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_16_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_24_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_24_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_32_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_64_stride_32_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_64_wait_queue_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_4096_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_32_stride_4_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_conservative_size_64_wait_queue_without_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_without_availability_draw_points_clear_depth,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_without_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_12_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_16_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_conservative_size_64_wait_query_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_conservative_size_64_wait_queue_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_conservative_size_64_wait_queue_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_64_stride_8192_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_32_wait_queue_with_availability_draw_triangles,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_64_wait_query_without_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_24_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_32_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_8_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_16_with_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_16_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_32_wait_queue_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.get_results_conservative_size_64_wait_query_without_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_20_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_8192_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_conservative_size_64_wait_query_with_availability_draw_triangles_discard,Crash
dEQP-VK.query_pool.occlusion_query.copy_reset_results_size_64_stride_40_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_conservative_size_32_wait_queue_with_availability_draw_points,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_16_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.copy_results_size_64_stride_24_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_32_stride_12_without_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_reset_results_size_64_stride_24_without_availability,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_32_stride_52_with_availability_dstoffset,Crash
dEQP-VK.query_pool.occlusion_query.get_results_size_64_stride_32_with_availability,Crash
# Filtering of 3D depth-stencil textures fails unless we set SAMPLER:round_to_nearest_even=false
dEQP-VK.texture.filtering.3d.formats.d24_unorm_s8_uint_stencil.d24_unorm_s8_uint_stencil_nearest,Fail
@ -1807,33 +1513,6 @@ dEQP-VK.dynamic_rendering.primary_cmd_buff.random.seed97,Crash
dEQP-VK.dynamic_rendering.primary_cmd_buff.random.seed98,Crash
dEQP-VK.dynamic_rendering.primary_cmd_buff.random.seed99,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_clear_color,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_depth_clear,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_depth_clear_depth_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_depth_clear_depth_write_stencil_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_depth_clear_stencil_clear,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_depth_clear_stencil_clear_depth_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_depth_clear_stencil_clear_stencil_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_depth_clear_stencil_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_depth_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_depth_write_stencil_clear,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_depth_write_stencil_clear_stencil_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_depth_write_stencil_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_clear_color,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_depth_clear,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_depth_clear_depth_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_depth_clear_depth_write_stencil_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_depth_clear_stencil_clear,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_depth_clear_stencil_clear_depth_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_depth_clear_stencil_clear_stencil_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_depth_clear_stencil_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_depth_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_depth_write_stencil_clear,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_depth_write_stencil_clear_stencil_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_depth_write_stencil_write,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_scissors_test_all,Crash
dEQP-VK.fragment_operations.occlusion_query.conservative_test_test_all,Crash
dEQP-VK.pipeline.fast_linked_library.max_varyings.test_vertex_io_between_vertex_fragment,Fail
dEQP-VK.pipeline.fast_linked_library.multisample.alpha_to_coverage_no_color_attachment.samples_4.alpha_opaque,Fail
dEQP-VK.pipeline.fast_linked_library.multisample.alpha_to_coverage_unused_attachment.samples_4.alpha_invisible,Fail

View File

@ -1,7 +1,3 @@
# query pool not supported yet
dEQP-VK.query_pool.*
dEQP-VK.fragment_operations.occlusion_query.*
# Slow tests (>= 30s)
dEQP-VK.api.object_management.multithreaded_shared_resources.device_group
dEQP-VK.ssbo.phys.layout.2_level_array.std140.row_major_mat4

View File

@ -0,0 +1,308 @@
/*
* Copyright © 2024 Collabora Ltd.
* SPDX-License-Identifier: MIT
*/
#include <stdint.h>
#include "util/os_time.h"
#include "vk_log.h"
#include "vk_synchronization.h"
#include "genxml/gen_macros.h"
#include "panvk_buffer.h"
#include "panvk_cmd_buffer.h"
#include "panvk_cmd_meta.h"
#include "panvk_device.h"
#include "panvk_entrypoints.h"
#include "panvk_macros.h"
#include "panvk_query_pool.h"
static void
panvk_cmd_reset_occlusion_queries(struct panvk_cmd_buffer *cmd,
struct panvk_query_pool *pool,
uint32_t first_query, uint32_t query_count)
{
struct cs_builder *b = panvk_get_cs_builder(cmd, PANVK_SUBQUEUE_FRAGMENT);
/* Ensure any deferred sync or flush are completed */
cs_wait_slots(b, SB_MASK(DEFERRED_SYNC) | SB_MASK(DEFERRED_FLUSH), false);
struct cs_index addr = cs_scratch_reg64(b, 0);
struct cs_index zero64 = cs_scratch_reg64(b, 2);
struct cs_index zero32 = cs_scratch_reg32(b, 4);
cs_move64_to(b, zero64, 0);
cs_move32_to(b, zero32, 0);
/* Mark all query syncobj as not available */
for (uint32_t query = first_query; query < first_query + query_count;
query++) {
cs_move64_to(b, addr, panvk_query_available_dev_addr(pool, query));
cs_sync32_set(b, true, MALI_CS_SYNC_SCOPE_SYSTEM, zero32, addr,
cs_defer(SB_IMM_MASK, SB_ID(DEFERRED_SYNC)));
}
/* Now that everything is not available, we now clear the reports */
for (uint32_t i = first_query; i < first_query + query_count; i++) {
cs_move64_to(b, addr, panvk_query_report_dev_addr(pool, i));
cs_store64(b, zero64, addr, 0);
}
cs_wait_slot(b, SB_ID(LS), false);
/* Finally flushes the cache to ensure everything is visible in memory */
struct cs_index flush_id = cs_scratch_reg32(b, 0);
cs_move32_to(b, flush_id, 0);
/* We wait on the previous sync and flush/invalidate caches depending if
* the subqueue is participating in the write */
cs_flush_caches(b, MALI_CS_FLUSH_MODE_CLEAN, MALI_CS_FLUSH_MODE_CLEAN, false,
flush_id,
cs_defer(SB_MASK(DEFERRED_SYNC), SB_ID(DEFERRED_FLUSH)));
}
static void
panvk_cmd_begin_occlusion_query(struct panvk_cmd_buffer *cmd,
struct panvk_query_pool *pool, uint32_t query,
VkQueryControlFlags flags)
{
mali_ptr report_addr = panvk_query_report_dev_addr(pool, query);
cmd->state.gfx.occlusion_query.ptr = report_addr;
cmd->state.gfx.occlusion_query.mode = flags & VK_QUERY_CONTROL_PRECISE_BIT
? MALI_OCCLUSION_MODE_COUNTER
: MALI_OCCLUSION_MODE_PREDICATE;
gfx_state_set_dirty(cmd, OQ);
/* From the Vulkan spec:
*
* "When an occlusion query begins, the count of passing samples
* always starts at zero."
*
*/
struct cs_builder *b = panvk_get_cs_builder(cmd, PANVK_SUBQUEUE_FRAGMENT);
/* Ensure deferred sync is completed */
cs_wait_slot(b, SB_ID(DEFERRED_SYNC), false);
struct cs_index report_addr_gpu = cs_scratch_reg64(b, 0);
struct cs_index clear_value = cs_scratch_reg64(b, 2);
cs_move64_to(b, report_addr_gpu, report_addr);
cs_move64_to(b, clear_value, 0);
cs_store64(b, clear_value, report_addr_gpu, 0);
cs_wait_slot(b, SB_ID(LS), false);
}
static void
panvk_cmd_end_occlusion_query(struct panvk_cmd_buffer *cmd,
struct panvk_query_pool *pool, uint32_t query)
{
/* Ensure all RUN_FRAGMENT are encoded before this */
panvk_per_arch(cmd_flush_draws)(cmd);
cmd->state.gfx.occlusion_query.ptr = 0;
cmd->state.gfx.occlusion_query.mode = MALI_OCCLUSION_MODE_DISABLED;
gfx_state_set_dirty(cmd, OQ);
/* Flush the cache to ensure everything is visible in memory */
struct cs_builder *b = panvk_get_cs_builder(cmd, PANVK_SUBQUEUE_FRAGMENT);
/* Ensure any iters, deferred sync or flush are completed */
cs_wait_slots(
b, SB_ALL_ITERS_MASK | SB_MASK(DEFERRED_SYNC) | SB_MASK(DEFERRED_FLUSH),
false);
struct cs_index flush_id = cs_scratch_reg32(b, 0);
cs_move32_to(b, flush_id, 0);
/* We wait on the previous sync and flush caches */
cs_flush_caches(b, MALI_CS_FLUSH_MODE_CLEAN, MALI_CS_FLUSH_MODE_CLEAN, false,
flush_id,
cs_defer(SB_MASK(DEFERRED_SYNC), SB_ID(DEFERRED_FLUSH)));
struct cs_index sync_addr = cs_scratch_reg64(b, 0);
struct cs_index seqno = cs_scratch_reg32(b, 2);
cs_move32_to(b, seqno, 1);
/* We wait on any previous flush, and defer on sync */
cs_move64_to(b, sync_addr, panvk_query_available_dev_addr(pool, query));
cs_sync32_set(b, true, MALI_CS_SYNC_SCOPE_SYSTEM, seqno, sync_addr,
cs_defer(SB_MASK(DEFERRED_FLUSH), SB_ID(DEFERRED_SYNC)));
}
static void
panvk_copy_occlusion_query_results(struct panvk_cmd_buffer *cmd,
struct panvk_query_pool *pool,
uint32_t first_query, uint32_t query_count,
mali_ptr dst_buffer_addr,
VkDeviceSize stride,
VkQueryResultFlags flags)
{
unsigned result_stride =
flags & VK_QUERY_RESULT_64_BIT ? sizeof(uint64_t) : sizeof(uint32_t);
/* First wait for deferred sync or flush to be completed */
struct cs_builder *b = panvk_get_cs_builder(cmd, PANVK_SUBQUEUE_FRAGMENT);
cs_wait_slots(b, SB_MASK(DEFERRED_SYNC) | SB_MASK(DEFERRED_FLUSH), false);
struct cs_index scratch_addr0 = cs_scratch_reg64(b, 0);
struct cs_index scratch_addr1 = cs_scratch_reg64(b, 2);
struct cs_index scratch_val0 = cs_scratch_reg32(b, 4);
struct cs_index available = cs_scratch_reg32(b, 5);
struct cs_index write_results = cs_scratch_reg32(b, 6);
struct cs_index scratch_val2 = cs_scratch_reg64(b, 8);
for (uint32_t query = first_query; query < first_query + query_count;
query++) {
cs_move64_to(b, scratch_addr0,
panvk_query_available_dev_addr(pool, query));
if (flags & VK_QUERY_RESULT_WAIT_BIT) {
cs_move32_to(b, scratch_val0, 0);
/* Wait on the sync object of the current query */
cs_sync32_wait(b, false, MALI_CS_CONDITION_GREATER, scratch_val0,
scratch_addr0);
/* After the wait, all subqueues are available */
cs_move32_to(b, available, 1);
} else {
cs_move64_to(b, scratch_addr0,
panvk_query_available_dev_addr(pool, query));
cs_load32_to(b, available, scratch_addr0, 0);
cs_wait_slot(b, SB_ID(LS), false);
}
cs_add32(b, write_results, available,
(flags & VK_QUERY_RESULT_PARTIAL_BIT) != 0);
assert(pool->vk.query_type == VK_QUERY_TYPE_OCCLUSION);
cs_if(b, MALI_CS_CONDITION_GREATER, write_results) {
cs_move64_to(b, scratch_addr0,
panvk_query_report_dev_addr(pool, query));
cs_move64_to(b, scratch_addr1, dst_buffer_addr + query * stride);
if (flags & VK_QUERY_RESULT_64_BIT) {
cs_load64_to(b, scratch_val2, scratch_addr0, 0);
cs_wait_slot(b, SB_ID(LS), false);
cs_store64(b, scratch_val2, scratch_addr1, 0);
} else {
cs_load32_to(b, scratch_val0, scratch_addr0, 0);
cs_wait_slot(b, SB_ID(LS), false);
cs_store32(b, scratch_val0, scratch_addr1, 0);
}
if (flags & VK_QUERY_RESULT_WITH_AVAILABILITY_BIT)
cs_store32(b, available, scratch_addr1, result_stride);
cs_wait_slot(b, SB_ID(LS), false);
}
}
struct cs_index flush_id = cs_scratch_reg32(b, 0);
cs_move32_to(b, flush_id, 0);
/* Finally flush the cache to ensure everything is visible to
* everyone */
cs_flush_caches(b, MALI_CS_FLUSH_MODE_CLEAN, MALI_CS_FLUSH_MODE_CLEAN, false,
flush_id, cs_defer(SB_IMM_MASK, SB_ID(IMM_FLUSH)));
cs_wait_slot(b, SB_ID(IMM_FLUSH), false);
}
VKAPI_ATTR void VKAPI_CALL
panvk_per_arch(CmdResetQueryPool)(VkCommandBuffer commandBuffer,
VkQueryPool queryPool, uint32_t firstQuery,
uint32_t queryCount)
{
VK_FROM_HANDLE(panvk_cmd_buffer, cmd, commandBuffer);
VK_FROM_HANDLE(panvk_query_pool, pool, queryPool);
if (queryCount == 0)
return;
switch (pool->vk.query_type) {
case VK_QUERY_TYPE_OCCLUSION: {
panvk_cmd_reset_occlusion_queries(cmd, pool, firstQuery, queryCount);
break;
}
default:
unreachable("Unsupported query type");
}
}
VKAPI_ATTR void VKAPI_CALL
panvk_per_arch(CmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer,
VkQueryPool queryPool, uint32_t query,
VkQueryControlFlags flags,
uint32_t index)
{
VK_FROM_HANDLE(panvk_cmd_buffer, cmd, commandBuffer);
VK_FROM_HANDLE(panvk_query_pool, pool, queryPool);
/* TODO: transform feedback */
assert(index == 0);
switch (pool->vk.query_type) {
case VK_QUERY_TYPE_OCCLUSION: {
panvk_cmd_begin_occlusion_query(cmd, pool, query, flags);
break;
}
default:
unreachable("Unsupported query type");
}
}
VKAPI_ATTR void VKAPI_CALL
panvk_per_arch(CmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer,
VkQueryPool queryPool, uint32_t query,
uint32_t index)
{
VK_FROM_HANDLE(panvk_cmd_buffer, cmd, commandBuffer);
VK_FROM_HANDLE(panvk_query_pool, pool, queryPool);
/* TODO: transform feedback */
assert(index == 0);
switch (pool->vk.query_type) {
case VK_QUERY_TYPE_OCCLUSION: {
panvk_cmd_end_occlusion_query(cmd, pool, query);
break;
}
default:
unreachable("Unsupported query type");
}
}
VKAPI_ATTR void VKAPI_CALL
panvk_per_arch(CmdWriteTimestamp2)(VkCommandBuffer commandBuffer,
VkPipelineStageFlags2 stage,
VkQueryPool queryPool, uint32_t query)
{
UNUSED VK_FROM_HANDLE(panvk_cmd_buffer, cmd, commandBuffer);
UNUSED VK_FROM_HANDLE(panvk_query_pool, pool, queryPool);
panvk_stub();
}
VKAPI_ATTR void VKAPI_CALL
panvk_per_arch(CmdCopyQueryPoolResults)(
VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery,
uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset,
VkDeviceSize stride, VkQueryResultFlags flags)
{
VK_FROM_HANDLE(panvk_cmd_buffer, cmd, commandBuffer);
VK_FROM_HANDLE(panvk_query_pool, pool, queryPool);
VK_FROM_HANDLE(panvk_buffer, dst_buffer, dstBuffer);
mali_ptr dst_buffer_addr = panvk_buffer_gpu_ptr(dst_buffer, dstOffset);
switch (pool->vk.query_type) {
case VK_QUERY_TYPE_OCCLUSION: {
panvk_copy_occlusion_query_results(cmd, pool, firstQuery, queryCount,
dst_buffer_addr, stride, flags);
break;
}
default:
unreachable("Unsupported query type");
}
}

View File

@ -64,6 +64,7 @@ csf_files = [
'csf/panvk_vX_cmd_dispatch.c',
'csf/panvk_vX_cmd_draw.c',
'csf/panvk_vX_cmd_event.c',
'csf/panvk_vX_cmd_query.c',
'csf/panvk_vX_event.c',
'csf/panvk_vX_queue.c',
]

View File

@ -15,12 +15,20 @@
#include "panvk_mempool.h"
#include "vk_query_pool.h"
#if PAN_ARCH >= 10
#include "panvk_cmd_buffer.h"
#endif
struct panvk_query_report {
uint64_t value;
};
struct panvk_query_available_obj {
#if PAN_ARCH >= 10
struct panvk_cs_sync32 sync_obj;
#else
uint32_t value;
#endif
};
static_assert(sizeof(struct panvk_query_report) == 8,

View File

@ -117,7 +117,12 @@ panvk_query_is_available(struct panvk_query_pool *pool, uint32_t query)
{
struct panvk_query_available_obj *available =
panvk_query_available_host_addr(pool, query);
#if PAN_ARCH >= 10
return p_atomic_read(&available->sync_obj.seqno) != 0;
#else
return p_atomic_read(&available->value) != 0;
#endif
}
static VkResult