Mesa (main): venus: init renderer_info at renderer creation (part 2)

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Feb 11 21:25:55 UTC 2022


Module: Mesa
Branch: main
Commit: a76d1e0e74130616f8093836198e1715984e162e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a76d1e0e74130616f8093836198e1715984e162e

Author: Yiwei Zhang <zzyiwei at chromium.org>
Date:   Sat Jan 29 00:09:14 2022 +0000

venus: init renderer_info at renderer creation (part 2)

Signed-off-by: Yiwei Zhang <zzyiwei at chromium.org>
Reviewed-by: Chia-I Wu <olvaffe at gmail.com>
Reviewed-by: Ryan Neph <ryanneph at google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14658>

---

 src/virtio/vulkan/vn_instance.c        | 51 +++++++++++++++-------------------
 src/virtio/vulkan/vn_instance.h        |  1 -
 src/virtio/vulkan/vn_physical_device.c | 21 +++++++-------
 src/virtio/vulkan/vn_queue.c           |  2 +-
 src/virtio/vulkan/vn_renderer.h        |  7 -----
 5 files changed, 34 insertions(+), 48 deletions(-)

diff --git a/src/virtio/vulkan/vn_instance.c b/src/virtio/vulkan/vn_instance.c
index 1093d1e1d27..9ba98e340f8 100644
--- a/src/virtio/vulkan/vn_instance.c
+++ b/src/virtio/vulkan/vn_instance.c
@@ -104,7 +104,7 @@ vn_instance_init_renderer_versions(struct vn_instance *instance)
 
    /* instance version for internal use is capped */
    instance_version = MIN3(instance_version, instance->renderer_api_version,
-                           instance->renderer_info.vk_xml_version);
+                           instance->renderer->info.vk_xml_version);
    assert(instance_version >= VN_MIN_RENDERER_VERSION);
 
    instance->renderer_version = instance_version;
@@ -177,7 +177,7 @@ vn_instance_get_reply_shmem_locked(struct vn_instance *instance,
 static VkResult
 vn_instance_init_experimental_features(struct vn_instance *instance)
 {
-   if (instance->renderer_info.vk_mesa_venus_protocol_spec_version !=
+   if (instance->renderer->info.vk_mesa_venus_protocol_spec_version !=
        100000) {
       if (VN_DEBUG(INIT))
          vn_log(instance, "renderer supports no experimental features");
@@ -240,26 +240,25 @@ vn_instance_init_renderer(struct vn_instance *instance)
    if (result != VK_SUCCESS)
       return result;
 
-   vn_renderer_get_info(instance->renderer, &instance->renderer_info);
-
+   struct vn_renderer_info *renderer_info = &instance->renderer->info;
    uint32_t version = vn_info_wire_format_version();
-   if (instance->renderer_info.wire_format_version != version) {
+   if (renderer_info->wire_format_version != version) {
       if (VN_DEBUG(INIT)) {
          vn_log(instance, "wire format version %d != %d",
-                instance->renderer_info.wire_format_version, version);
+                renderer_info->wire_format_version, version);
       }
       return VK_ERROR_INITIALIZATION_FAILED;
    }
 
    version = vn_info_vk_xml_version();
-   if (instance->renderer_info.vk_xml_version > version)
-      instance->renderer_info.vk_xml_version = version;
-   if (instance->renderer_info.vk_xml_version < VN_MIN_RENDERER_VERSION) {
+   if (renderer_info->vk_xml_version > version)
+      renderer_info->vk_xml_version = version;
+   if (renderer_info->vk_xml_version < VN_MIN_RENDERER_VERSION) {
       if (VN_DEBUG(INIT)) {
          vn_log(instance, "vk xml version %d.%d.%d < %d.%d.%d",
-                VK_VERSION_MAJOR(instance->renderer_info.vk_xml_version),
-                VK_VERSION_MINOR(instance->renderer_info.vk_xml_version),
-                VK_VERSION_PATCH(instance->renderer_info.vk_xml_version),
+                VK_VERSION_MAJOR(renderer_info->vk_xml_version),
+                VK_VERSION_MINOR(renderer_info->vk_xml_version),
+                VK_VERSION_PATCH(renderer_info->vk_xml_version),
                 VK_VERSION_MAJOR(VN_MIN_RENDERER_VERSION),
                 VK_VERSION_MINOR(VN_MIN_RENDERER_VERSION),
                 VK_VERSION_PATCH(VN_MIN_RENDERER_VERSION));
@@ -269,34 +268,30 @@ vn_instance_init_renderer(struct vn_instance *instance)
 
    const struct vn_info_extension *ext =
       vn_info_extension_get("VK_EXT_command_serialization");
-   if (instance->renderer_info.vk_ext_command_serialization_spec_version >
+   if (renderer_info->vk_ext_command_serialization_spec_version >
        ext->spec_version) {
-      instance->renderer_info.vk_ext_command_serialization_spec_version =
+      renderer_info->vk_ext_command_serialization_spec_version =
          ext->spec_version;
    }
 
    ext = vn_info_extension_get("VK_MESA_venus_protocol");
-   if (instance->renderer_info.vk_mesa_venus_protocol_spec_version >
-       ext->spec_version) {
-      instance->renderer_info.vk_mesa_venus_protocol_spec_version =
-         ext->spec_version;
-   }
+   if (renderer_info->vk_mesa_venus_protocol_spec_version > ext->spec_version)
+      renderer_info->vk_mesa_venus_protocol_spec_version = ext->spec_version;
 
    if (VN_DEBUG(INIT)) {
       vn_log(instance, "connected to renderer");
       vn_log(instance, "wire format version %d",
-             instance->renderer_info.wire_format_version);
+             renderer_info->wire_format_version);
       vn_log(instance, "vk xml version %d.%d.%d",
-             VK_VERSION_MAJOR(instance->renderer_info.vk_xml_version),
-             VK_VERSION_MINOR(instance->renderer_info.vk_xml_version),
-             VK_VERSION_PATCH(instance->renderer_info.vk_xml_version));
-      vn_log(
-         instance, "VK_EXT_command_serialization spec version %d",
-         instance->renderer_info.vk_ext_command_serialization_spec_version);
+             VK_VERSION_MAJOR(renderer_info->vk_xml_version),
+             VK_VERSION_MINOR(renderer_info->vk_xml_version),
+             VK_VERSION_PATCH(renderer_info->vk_xml_version));
+      vn_log(instance, "VK_EXT_command_serialization spec version %d",
+             renderer_info->vk_ext_command_serialization_spec_version);
       vn_log(instance, "VK_MESA_venus_protocol spec version %d",
-             instance->renderer_info.vk_mesa_venus_protocol_spec_version);
+             renderer_info->vk_mesa_venus_protocol_spec_version);
       vn_log(instance, "supports blob id 0: %d",
-             instance->renderer_info.supports_blob_id_0);
+             renderer_info->supports_blob_id_0);
    }
 
    return VK_SUCCESS;
diff --git a/src/virtio/vulkan/vn_instance.h b/src/virtio/vulkan/vn_instance.h
index ac3978a67ad..78cf1ed0b42 100644
--- a/src/virtio/vulkan/vn_instance.h
+++ b/src/virtio/vulkan/vn_instance.h
@@ -38,7 +38,6 @@ struct vn_instance {
    struct driOptionCache available_dri_options;
 
    struct vn_renderer *renderer;
-   struct vn_renderer_info renderer_info;
 
    struct vn_renderer_shmem_pool reply_shmem_pool;
 
diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c
index 3851c886972..e546107805a 100644
--- a/src/virtio/vulkan/vn_physical_device.c
+++ b/src/virtio/vulkan/vn_physical_device.c
@@ -669,7 +669,7 @@ vn_physical_device_init_properties(struct vn_physical_device *physical_dev)
    } else {
       /* cap the advertised api version */
       uint32_t version = MIN3(props->apiVersion, VN_MAX_API_VERSION,
-                              instance->renderer_info.vk_xml_version);
+                              instance->renderer->info.vk_xml_version);
       if (VK_VERSION_PATCH(version) > VK_VERSION_PATCH(props->apiVersion)) {
          version = version - VK_VERSION_PATCH(version) +
                    VK_VERSION_PATCH(props->apiVersion);
@@ -745,7 +745,7 @@ vn_physical_device_init_memory_properties(
       instance, vn_physical_device_to_handle(physical_dev),
       &physical_dev->memory_properties);
 
-   if (!instance->renderer_info.has_cache_management) {
+   if (!instance->renderer->info.has_cache_management) {
       VkPhysicalDeviceMemoryProperties *props =
          &physical_dev->memory_properties.memoryProperties;
       const uint32_t host_flags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
@@ -781,7 +781,7 @@ vn_physical_device_init_external_memory(
     * the extension.
     */
 
-   if (!physical_dev->instance->renderer_info.has_dma_buf_import)
+   if (!physical_dev->instance->renderer->info.has_dma_buf_import)
       return;
 
    /* TODO We assume the renderer uses dma-bufs here.  This should be
@@ -870,7 +870,6 @@ vn_physical_device_get_native_extensions(
    struct vk_device_extension_table *exts)
 {
    const struct vn_instance *instance = physical_dev->instance;
-   const struct vn_renderer_info *renderer_info = &instance->renderer_info;
    const struct vk_device_extension_table *renderer_exts =
       &physical_dev->renderer_extensions;
 
@@ -878,7 +877,7 @@ vn_physical_device_get_native_extensions(
 
    /* see vn_physical_device_init_external_memory */
    const bool can_external_mem = renderer_exts->EXT_external_memory_dma_buf &&
-                                 renderer_info->has_dma_buf_import;
+                                 instance->renderer->info.has_dma_buf_import;
 
 #ifdef ANDROID
    if (can_external_mem && renderer_exts->EXT_image_drm_format_modifier &&
@@ -1102,7 +1101,7 @@ vn_physical_device_init_renderer_version(
    /* device version for internal use is capped */
    physical_dev->renderer_version =
       MIN3(props.apiVersion, instance->renderer_api_version,
-           instance->renderer_info.vk_xml_version);
+           instance->renderer->info.vk_xml_version);
 
    return VK_SUCCESS;
 }
@@ -2027,15 +2026,15 @@ vn_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
          break;
       case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:
          /* this is used by WSI */
-         if (physical_dev->instance->renderer_info.pci.has_bus_info) {
+         if (physical_dev->instance->renderer->info.pci.has_bus_info) {
             u.pci_bus_info->pciDomain =
-               physical_dev->instance->renderer_info.pci.domain;
+               physical_dev->instance->renderer->info.pci.domain;
             u.pci_bus_info->pciBus =
-               physical_dev->instance->renderer_info.pci.bus;
+               physical_dev->instance->renderer->info.pci.bus;
             u.pci_bus_info->pciDevice =
-               physical_dev->instance->renderer_info.pci.device;
+               physical_dev->instance->renderer->info.pci.device;
             u.pci_bus_info->pciFunction =
-               physical_dev->instance->renderer_info.pci.function;
+               physical_dev->instance->renderer->info.pci.function;
          }
          break;
       case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT:
diff --git a/src/virtio/vulkan/vn_queue.c b/src/virtio/vulkan/vn_queue.c
index a319b7b6f5e..2be04a159cf 100644
--- a/src/virtio/vulkan/vn_queue.c
+++ b/src/virtio/vulkan/vn_queue.c
@@ -377,7 +377,7 @@ vn_QueueSubmit(VkQueue _queue,
 
    if (wsi_mem) {
       /* XXX this is always false and kills the performance */
-      if (dev->instance->renderer_info.has_implicit_fencing) {
+      if (dev->instance->renderer->info.has_implicit_fencing) {
          vn_renderer_submit(dev->renderer, &(const struct vn_renderer_submit){
                                               .bos = &wsi_mem->base_bo,
                                               .bo_count = 1,
diff --git a/src/virtio/vulkan/vn_renderer.h b/src/virtio/vulkan/vn_renderer.h
index 4ac6d9c22e0..e34f14cbef0 100644
--- a/src/virtio/vulkan/vn_renderer.h
+++ b/src/virtio/vulkan/vn_renderer.h
@@ -251,13 +251,6 @@ vn_renderer_destroy(struct vn_renderer *renderer,
    renderer->ops.destroy(renderer, alloc);
 }
 
-static inline void
-vn_renderer_get_info(struct vn_renderer *renderer,
-                     struct vn_renderer_info *info)
-{
-   *info = renderer->info;
-}
-
 static inline VkResult
 vn_renderer_submit(struct vn_renderer *renderer,
                    const struct vn_renderer_submit *submit)



More information about the mesa-commit mailing list