diff --git a/src/panfrost/ci/panfrost-g610-fails.txt b/src/panfrost/ci/panfrost-g610-fails.txt index 5d2ec67c3b3..e0bab2db988 100644 --- a/src/panfrost/ci/panfrost-g610-fails.txt +++ b/src/panfrost/ci/panfrost-g610-fails.txt @@ -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 diff --git a/src/panfrost/ci/panfrost-g610-skip.txt b/src/panfrost/ci/panfrost-g610-skip.txt index 6809c7d564c..9a665607bf0 100644 --- a/src/panfrost/ci/panfrost-g610-skip.txt +++ b/src/panfrost/ci/panfrost-g610-skip.txt @@ -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 diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_query.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_query.c new file mode 100644 index 00000000000..c3ffa834038 --- /dev/null +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_query.c @@ -0,0 +1,308 @@ +/* + * Copyright © 2024 Collabora Ltd. + * SPDX-License-Identifier: MIT + */ +#include +#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"); + } +} diff --git a/src/panfrost/vulkan/meson.build b/src/panfrost/vulkan/meson.build index 1918f994479..c7bbf53c570 100644 --- a/src/panfrost/vulkan/meson.build +++ b/src/panfrost/vulkan/meson.build @@ -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', ] diff --git a/src/panfrost/vulkan/panvk_query_pool.h b/src/panfrost/vulkan/panvk_query_pool.h index 8e3429c33ca..32fea884ff7 100644 --- a/src/panfrost/vulkan/panvk_query_pool.h +++ b/src/panfrost/vulkan/panvk_query_pool.h @@ -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, diff --git a/src/panfrost/vulkan/panvk_vX_query_pool.c b/src/panfrost/vulkan/panvk_vX_query_pool.c index f74e0239764..c61f9fb3612 100644 --- a/src/panfrost/vulkan/panvk_vX_query_pool.c +++ b/src/panfrost/vulkan/panvk_vX_query_pool.c @@ -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