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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user