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;

Reply via email to