diff options
author | Yiwei Zhang <zzyiwei@chromium.org> | 2022-01-29 00:09:14 +0000 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-02-11 21:16:42 +0000 |
commit | a76d1e0e74130616f8093836198e1715984e162e (patch) | |
tree | ecee429dc5e9fd983653ab865504ff01036e2d17 | |
parent | ddba7337c758714ebb26cb7483b83c303b4553bb (diff) |
venus: init renderer_info at renderer creation (part 2)
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Ryan Neph <ryanneph@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14658>
-rw-r--r-- | src/virtio/vulkan/vn_instance.c | 51 | ||||
-rw-r--r-- | src/virtio/vulkan/vn_instance.h | 1 | ||||
-rw-r--r-- | src/virtio/vulkan/vn_physical_device.c | 21 | ||||
-rw-r--r-- | src/virtio/vulkan/vn_queue.c | 2 | ||||
-rw-r--r-- | 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) |