venus: support VK_KHR_ray_tracing_maintenance1

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33907>
This commit is contained in:
Yiwei Zhang 2025-03-05 21:35:46 -08:00 committed by Marge Bot
parent 7902d9ee32
commit 2923945020
4 changed files with 27 additions and 1 deletions

View file

@ -557,7 +557,7 @@ Khronos extensions that are not part of any Vulkan version:
VK_KHR_pipeline_library DONE (anv, lvp, nvk, panvk, radv, tu, vn)
VK_KHR_present_wait DONE (anv, nvk, radv, tu, x11/display)
VK_KHR_ray_query DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, tu/a740+, vn)
VK_KHR_ray_tracing_maintenance1 DONE (anv/gfx12.5+, radv/gfx10.3+, tu/a740+)
VK_KHR_ray_tracing_maintenance1 DONE (anv/gfx12.5+, radv/gfx10.3+, tu/a740+, vn)
VK_KHR_ray_tracing_pipeline DONE (anv/gfx12.5+, lvp, radv/gfx10.3+, vn)
VK_KHR_ray_tracing_position_fetch DONE (anv, radv/gfx10.3+, vn)
VK_KHR_shader_clock DONE (anv, hasvk, lvp, nvk, radv, vn)

View file

@ -2810,3 +2810,11 @@ vn_CmdTraceRaysKHR(
pMissShaderBindingTable, pHitShaderBindingTable,
pCallableShaderBindingTable, width, height, depth);
}
void
vn_CmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer,
VkDeviceAddress indirectDeviceAddress)
{
VN_CMD_ENQUEUE(vkCmdTraceRaysIndirect2KHR, commandBuffer,
indirectDeviceAddress);
}

View file

@ -160,6 +160,8 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev)
fragment_shader_barycentric;
VkPhysicalDeviceFragmentShadingRateFeaturesKHR fragment_shading_rate;
VkPhysicalDeviceRayQueryFeaturesKHR ray_query;
VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR
ray_tracing_maintenance_1;
VkPhysicalDeviceRayTracingPipelineFeaturesKHR ray_tracing_pipeline;
VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR
ray_tracing_position_fetch;
@ -306,6 +308,7 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev)
VN_ADD_PNEXT_EXT(feats2, FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR, local_feats.fragment_shader_barycentric, exts->KHR_fragment_shader_barycentric);
VN_ADD_PNEXT_EXT(feats2, FRAGMENT_SHADING_RATE_FEATURES_KHR, local_feats.fragment_shading_rate, exts->KHR_fragment_shading_rate);
VN_ADD_PNEXT_EXT(feats2, RAY_QUERY_FEATURES_KHR, local_feats.ray_query, exts->KHR_ray_query);
VN_ADD_PNEXT_EXT(feats2, RAY_TRACING_MAINTENANCE_1_FEATURES_KHR, local_feats.ray_tracing_maintenance_1, exts->KHR_ray_tracing_maintenance1);
VN_ADD_PNEXT_EXT(feats2, RAY_TRACING_PIPELINE_FEATURES_KHR, local_feats.ray_tracing_pipeline, exts->KHR_ray_tracing_pipeline);
VN_ADD_PNEXT_EXT(feats2, RAY_TRACING_POSITION_FETCH_FEATURES_KHR, local_feats.ray_tracing_position_fetch, exts->KHR_ray_tracing_position_fetch);
VN_ADD_PNEXT_EXT(feats2, SHADER_CLOCK_FEATURES_KHR, local_feats.shader_clock, exts->KHR_shader_clock);
@ -1241,6 +1244,7 @@ vn_physical_device_get_passthrough_extensions(
.KHR_fragment_shading_rate = true,
.KHR_pipeline_library = true,
.KHR_ray_query = physical_dev->ray_tracing,
.KHR_ray_tracing_maintenance1 = physical_dev->ray_tracing,
.KHR_ray_tracing_pipeline = physical_dev->ray_tracing,
.KHR_ray_tracing_position_fetch = physical_dev->ray_tracing,
.KHR_shader_clock = true,

View file

@ -93,6 +93,20 @@ vn_CreateQueryPool(VkDevice device,
*/
pool->result_array_size = 1;
break;
case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR:
case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR:
/*
* The VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR is to query the
* acceleration structure size on the device timeline.
*
* SERIALIZATION_BOTTOM_LEVEL_POINTERS is to query the number of bottom
* level acceleration structure pointers for serialization.
*
* So either of these queries only writes one integer value.
*
*/
pool->result_array_size = 1;
break;
default:
unreachable("bad query type");
break;