summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYiwei Zhang <zzyiwei@chromium.org>2022-01-29 00:09:14 +0000
committerMarge Bot <emma+marge@anholt.net>2022-02-11 21:16:42 +0000
commita76d1e0e74130616f8093836198e1715984e162e (patch)
treeecee429dc5e9fd983653ab865504ff01036e2d17
parentddba7337c758714ebb26cb7483b83c303b4553bb (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.c51
-rw-r--r--src/virtio/vulkan/vn_instance.h1
-rw-r--r--src/virtio/vulkan/vn_physical_device.c21
-rw-r--r--src/virtio/vulkan/vn_queue.c2
-rw-r--r--src/virtio/vulkan/vn_renderer.h7
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)