Module: Mesa Branch: main Commit: 71599a1a20926982373866b4faf7e2670dabcb92 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=71599a1a20926982373866b4faf7e2670dabcb92
Author: Lina Versace <lin...@google.com> Date: Thu Aug 10 16:32:27 2023 -0700 venus: Enable VK_EXT_graphics_pipeline_library behind debug flag Until the performance issues get resolved, enable the extension if `VN_DEBUG=gpl`. Also enable the required (and trivial) VK_KHR_pipeline_library. Signed-off-by: Lina Versace <lin...@google.com> Reviewed-by: Yiwei Zhang <zzyi...@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22419> --- docs/features.txt | 4 ++-- src/virtio/vulkan/vn_common.c | 1 + src/virtio/vulkan/vn_common.h | 1 + src/virtio/vulkan/vn_physical_device.c | 7 +++++++ src/virtio/vulkan/vn_physical_device.h | 2 ++ 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/features.txt b/docs/features.txt index d66997fccdd..4e2e3409122 100644 --- a/docs/features.txt +++ b/docs/features.txt @@ -521,7 +521,7 @@ Khronos extensions that are not part of any Vulkan version: VK_KHR_maintenance5 DONE (anv, lvp, radv, tu) VK_KHR_performance_query DONE (anv/gen8+, radv/gfx10.3+, tu, v3dv) VK_KHR_pipeline_executable_properties DONE (anv, hasvk, radv, tu, v3dv) - VK_KHR_pipeline_library DONE (anv, lvp, radv, tu) + VK_KHR_pipeline_library DONE (anv, lvp, radv, tu, vn) VK_KHR_present_wait DONE (anv, radv, tu, x11/display) VK_KHR_push_descriptor DONE (anv, hasvk, lvp, nvk, radv, tu, vn) VK_KHR_ray_query DONE (anv/gfx12.5+, radv/gfx10.3+) @@ -571,7 +571,7 @@ Khronos extensions that are not part of any Vulkan version: VK_EXT_fragment_shader_interlock DONE (anv/gen9+, radv/gfx9+, vn) VK_EXT_global_priority DONE (anv, hasvk, radv, tu) VK_EXT_global_priority_query DONE (anv, hasvk, radv, tu) - VK_EXT_graphics_pipeline_library DONE (anv, lvp, radv, tu) + VK_EXT_graphics_pipeline_library DONE (anv, lvp, radv, tu, vn) VK_EXT_image_2d_view_of_3d DONE (anv, hasvk, lvp, nvk, radv, tu, vn) VK_EXT_image_drm_format_modifier DONE (anv, hasvk, radv/gfx9+, tu, v3dv, vn) VK_EXT_image_sliced_view_of_3d DONE (anv, nvk, radv/gfx10+) diff --git a/src/virtio/vulkan/vn_common.c b/src/virtio/vulkan/vn_common.c index 2dddd7670b3..72101e71f3b 100644 --- a/src/virtio/vulkan/vn_common.c +++ b/src/virtio/vulkan/vn_common.c @@ -33,6 +33,7 @@ static const struct debug_control vn_debug_options[] = { { "log_ctx_info", VN_DEBUG_LOG_CTX_INFO }, { "cache", VN_DEBUG_CACHE }, { "no_sparse", VN_DEBUG_NO_SPARSE }, + { "gpl", VN_DEBUG_GPL }, { NULL, 0 }, /* clang-format on */ }; diff --git a/src/virtio/vulkan/vn_common.h b/src/virtio/vulkan/vn_common.h index 7c51c61a370..7deff7c4ded 100644 --- a/src/virtio/vulkan/vn_common.h +++ b/src/virtio/vulkan/vn_common.h @@ -106,6 +106,7 @@ enum vn_debug { VN_DEBUG_LOG_CTX_INFO = 1ull << 5, VN_DEBUG_CACHE = 1ull << 6, VN_DEBUG_NO_SPARSE = 1ull << 7, + VN_DEBUG_GPL = 1ull << 8, }; enum vn_perf { diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index bdf4813f711..ce32262d8af 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -153,6 +153,8 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) dynamic_rendering_unused_attachments; VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT fragment_shader_interlock; + VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT + graphics_pipeline_library; VkPhysicalDeviceImage2DViewOf3DFeaturesEXT image_2d_view_of_3d; VkPhysicalDeviceImageViewMinLodFeaturesEXT image_view_min_lod; VkPhysicalDeviceIndexTypeUint8FeaturesEXT index_type_uint8; @@ -249,6 +251,7 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev) VN_ADD_PNEXT_EXT(feats2, DEPTH_CLIP_ENABLE_FEATURES_EXT, local_feats.depth_clip_enable, exts->EXT_depth_clip_enable); VN_ADD_PNEXT_EXT(feats2, DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT, local_feats.dynamic_rendering_unused_attachments, exts->EXT_dynamic_rendering_unused_attachments); VN_ADD_PNEXT_EXT(feats2, FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, local_feats.fragment_shader_interlock, exts->EXT_fragment_shader_interlock); + VN_ADD_PNEXT_EXT(feats2, GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT, local_feats.graphics_pipeline_library, exts->EXT_graphics_pipeline_library); VN_ADD_PNEXT_EXT(feats2, IMAGE_2D_VIEW_OF_3D_FEATURES_EXT, local_feats.image_2d_view_of_3d, exts->EXT_image_2d_view_of_3d); VN_ADD_PNEXT_EXT(feats2, IMAGE_VIEW_MIN_LOD_FEATURES_EXT, local_feats.image_view_min_lod, exts->EXT_image_view_min_lod); VN_ADD_PNEXT_EXT(feats2, INDEX_TYPE_UINT8_FEATURES_EXT, local_feats.index_type_uint8, exts->EXT_index_type_uint8); @@ -421,6 +424,7 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev) /* EXT */ VN_ADD_PNEXT_EXT(props2, CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, props->conservative_rasterization, exts->EXT_conservative_rasterization); VN_ADD_PNEXT_EXT(props2, CUSTOM_BORDER_COLOR_PROPERTIES_EXT, props->custom_border_color, exts->EXT_custom_border_color); + VN_ADD_PNEXT_EXT(props2, GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT, props->graphics_pipeline_library, exts->EXT_graphics_pipeline_library); VN_ADD_PNEXT_EXT(props2, LINE_RASTERIZATION_PROPERTIES_EXT, props->line_rasterization, exts->EXT_line_rasterization); VN_ADD_PNEXT_EXT(props2, MULTI_DRAW_PROPERTIES_EXT, props->multi_draw, exts->EXT_multi_draw); VN_ADD_PNEXT_EXT(props2, PCI_BUS_INFO_PROPERTIES_EXT, props->pci_bus_info, exts->EXT_pci_bus_info); @@ -1077,6 +1081,7 @@ vn_physical_device_get_passthrough_extensions( .EXT_ycbcr_2plane_444_formats = true, /* KHR */ + .KHR_pipeline_library = true, .KHR_push_descriptor = true, .KHR_shader_clock = true, @@ -1091,6 +1096,7 @@ vn_physical_device_get_passthrough_extensions( .EXT_depth_clip_enable = true, .EXT_dynamic_rendering_unused_attachments = true, .EXT_fragment_shader_interlock = true, + .EXT_graphics_pipeline_library = VN_DEBUG(GPL), .EXT_image_2d_view_of_3d = true, .EXT_image_drm_format_modifier = true, .EXT_image_view_min_lod = true, @@ -1732,6 +1738,7 @@ vn_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, /* EXT */ CASE(CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, conservative_rasterization); CASE(CUSTOM_BORDER_COLOR_PROPERTIES_EXT, custom_border_color); + CASE(GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT, graphics_pipeline_library); CASE(LINE_RASTERIZATION_PROPERTIES_EXT, line_rasterization); CASE(MULTI_DRAW_PROPERTIES_EXT, multi_draw); CASE(PROVOKING_VERTEX_PROPERTIES_EXT, provoking_vertex); diff --git a/src/virtio/vulkan/vn_physical_device.h b/src/virtio/vulkan/vn_physical_device.h index fe3419f2acd..2b1ed856847 100644 --- a/src/virtio/vulkan/vn_physical_device.h +++ b/src/virtio/vulkan/vn_physical_device.h @@ -30,6 +30,8 @@ struct vn_physical_device_properties { VkPhysicalDeviceConservativeRasterizationPropertiesEXT conservative_rasterization; VkPhysicalDeviceCustomBorderColorPropertiesEXT custom_border_color; + VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT + graphics_pipeline_library; VkPhysicalDeviceLineRasterizationPropertiesEXT line_rasterization; VkPhysicalDeviceMultiDrawPropertiesEXT multi_draw; VkPhysicalDevicePCIBusInfoPropertiesEXT pci_bus_info;