venus: cleanup 2 TODOs from 1.3 support

The two extensions are implemented natively but allow to leak structs to
renderer side to avoid deep copying huge driver side pNext chain. It
doesn't make things more robust if we hide the two behind core 1.3 and
drop the two from the protocol so that venus-protocol filters out the
leaked structs. e.g. we'd still have to flip some bits in the core
feature structs.

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28532>
This commit is contained in:
Yiwei Zhang
2024-03-26 14:15:37 -07:00
committed by Marge Bot
parent 1e983c4360
commit 93421ef3d3
+2 -29
View File
@@ -1115,18 +1115,7 @@ vn_physical_device_get_passthrough_extensions(
.EXT_image_robustness = true,
.EXT_inline_uniform_block = true,
.EXT_pipeline_creation_cache_control = true,
/* TODO(VK_EXT_pipeline_creation_feedback): The native implementation
* invalidates all feedback. Teach the venus protocol to receive valid
* feedback from renderer.
*
* Even though we implement this natively, we still require host driver
* support to avoid invalid usage in the renderer, because we (the guest
* driver) do not scrub the extension bits from the
* VkGraphicsPipelineCreateInfo pNext chain. The host driver still
* writes feedback into VkPipelineCreationFeedback, which is harmless,
* but the renderer does not send the returned feedback to us due to
* protocol deficiencies.
*/
/* hide behind renderer support to allow structs passing through */
.EXT_pipeline_creation_feedback = true,
.EXT_shader_demote_to_helper_invocation = true,
.EXT_subgroup_size_control = true,
@@ -1168,23 +1157,7 @@ vn_physical_device_get_passthrough_extensions(
.EXT_non_seamless_cube_map = true,
.EXT_primitive_topology_list_restart = true,
.EXT_primitives_generated_query = true,
/* TODO(VK_EXT_private_data): Support natively.
*
* We support this extension with a hybrid native/passthrough model
* until we teach venus how to do deep surgery on pNext
* chains to (a) remove VkDevicePrivateDataCreateInfo, (b) remove Vk
* VkPhysicalDevicePrivateDataFeatures, and (c) modify its bits in
* VkPhysicalDeviceVulkan13Features.
*
* For now, we implement the extension functions natively by using
* Mesa's common implementation. We passthrough
* VkDevicePrivateDataCreateInfo to the renderer, which is harmless.
* We passthrough the extension enablement and feature bits to the
* renderer because otherwise VkDevicePrivateDataCreateInfo would
* cause invalid usage in the renderer. Therefore, even though we
* implement the extension natively, we expose the extension only if the
* renderer supports it too.
*/
/* hide behind renderer support to allow structs passing through */
.EXT_private_data = true,
.EXT_provoking_vertex = true,
.EXT_queue_family_foreign = true,