mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
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:
parent
7902d9ee32
commit
2923945020
4 changed files with 27 additions and 1 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue