From 0197924d63439b9355609615e7e64ac5cd4de910 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Sat, 11 May 2024 14:28:51 -0700 Subject: [PATCH] venus: directly use vk drm and pci props in renderer info We don't have to fill sType or pNext, and the default renderer info has been zero-init already. Signed-off-by: Yiwei Zhang Tested-by: Oskar Viljasaar Reviewed-by: Oskar Viljasaar Part-of: --- src/virtio/vulkan/vn_physical_device.c | 37 ++++++++----------------- src/virtio/vulkan/vn_renderer.h | 12 ++------ src/virtio/vulkan/vn_renderer_virtgpu.c | 26 +++++++++-------- src/virtio/vulkan/vn_renderer_vtest.c | 7 ----- 4 files changed, 27 insertions(+), 55 deletions(-) diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index fcc026437ba..02b6a047053 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -1843,36 +1843,21 @@ vn_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, /* clang-format on */ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT: { - VkPhysicalDeviceDrmPropertiesEXT *out_props = (void *)out; - const struct vn_renderer_info *info = - &physical_dev->instance->renderer->info; - - out_props->hasPrimary = info->drm.has_primary; - out_props->primaryMajor = info->drm.primary_major; - out_props->primaryMinor = info->drm.primary_minor; - out_props->hasRender = info->drm.has_render; - out_props->renderMajor = info->drm.render_major; - out_props->renderMinor = info->drm.render_minor; + const VkPhysicalDeviceDrmPropertiesEXT *drm = + &physical_dev->instance->renderer->info.drm.props; + vk_copy_struct_guts(out, (VkBaseInStructure *)drm, sizeof(*drm)); break; } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT: + 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) { - VkPhysicalDevicePCIBusInfoPropertiesEXT *out_props = (void *)out; - const struct vn_renderer_info *info = - &physical_dev->instance->renderer->info; - - out_props->pciDomain = info->pci.domain; - out_props->pciBus = info->pci.bus; - out_props->pciDevice = info->pci.device; - out_props->pciFunction = info->pci.function; - } else { - assert(VN_DEBUG(VTEST)); - vk_copy_struct_guts(out, - (VkBaseInStructure *)&in_props->pci_bus_info, - sizeof(in_props->pci_bus_info)); - } + const struct vn_renderer_info *info = + &physical_dev->instance->renderer->info; + const VkPhysicalDevicePCIBusInfoPropertiesEXT *pci = + info->pci.has_bus_info ? &info->pci.props + : &in_props->pci_bus_info; + vk_copy_struct_guts(out, (VkBaseInStructure *)pci, sizeof(*pci)); break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID: { VkPhysicalDevicePresentationPropertiesANDROID *out_props = (void *)out; diff --git a/src/virtio/vulkan/vn_renderer.h b/src/virtio/vulkan/vn_renderer.h index 430769c38b7..05b790019e9 100644 --- a/src/virtio/vulkan/vn_renderer.h +++ b/src/virtio/vulkan/vn_renderer.h @@ -42,12 +42,7 @@ struct vn_renderer_sync { struct vn_renderer_info { struct { - bool has_primary; - int primary_major; - int primary_minor; - bool has_render; - int render_major; - int render_minor; + VkPhysicalDeviceDrmPropertiesEXT props; } drm; struct { @@ -55,10 +50,7 @@ struct vn_renderer_info { uint16_t device_id; bool has_bus_info; - uint16_t domain; - uint8_t bus; - uint8_t device; - uint8_t function; + VkPhysicalDevicePCIBusInfoPropertiesEXT props; } pci; bool has_dma_buf_import; diff --git a/src/virtio/vulkan/vn_renderer_virtgpu.c b/src/virtio/vulkan/vn_renderer_virtgpu.c index 8c001244f9a..3ec69938414 100644 --- a/src/virtio/vulkan/vn_renderer_virtgpu.c +++ b/src/virtio/vulkan/vn_renderer_virtgpu.c @@ -1348,24 +1348,26 @@ virtgpu_init_renderer_info(struct virtgpu *gpu) { struct vn_renderer_info *info = &gpu->base.info; - info->drm.has_primary = gpu->has_primary; - info->drm.primary_major = gpu->primary_major; - info->drm.primary_minor = gpu->primary_minor; - info->drm.has_render = true; - info->drm.render_major = gpu->render_major; - info->drm.render_minor = gpu->render_minor; + info->drm.props = (VkPhysicalDeviceDrmPropertiesEXT){ + .hasPrimary = gpu->has_primary, + .hasRender = true, + .primaryMajor = gpu->primary_major, + .primaryMinor = gpu->primary_minor, + .renderMajor = gpu->render_major, + .renderMinor = gpu->render_minor, + }; info->pci.vendor_id = VIRTGPU_PCI_VENDOR_ID; info->pci.device_id = VIRTGPU_PCI_DEVICE_ID; if (gpu->bustype == DRM_BUS_PCI) { info->pci.has_bus_info = true; - info->pci.domain = gpu->pci_bus_info.domain; - info->pci.bus = gpu->pci_bus_info.bus; - info->pci.device = gpu->pci_bus_info.dev; - info->pci.function = gpu->pci_bus_info.func; - } else { - info->pci.has_bus_info = false; + info->pci.props = (VkPhysicalDevicePCIBusInfoPropertiesEXT){ + .pciDomain = gpu->pci_bus_info.domain, + .pciBus = gpu->pci_bus_info.bus, + .pciDevice = gpu->pci_bus_info.dev, + .pciFunction = gpu->pci_bus_info.func, + }; } info->has_dma_buf_import = true; diff --git a/src/virtio/vulkan/vn_renderer_vtest.c b/src/virtio/vulkan/vn_renderer_vtest.c index 12e558659b1..d932ea83aaa 100644 --- a/src/virtio/vulkan/vn_renderer_vtest.c +++ b/src/virtio/vulkan/vn_renderer_vtest.c @@ -925,13 +925,6 @@ vtest_init_renderer_info(struct vtest *vtest) { struct vn_renderer_info *info = &vtest->base.info; - info->drm.has_primary = false; - info->drm.primary_major = 0; - info->drm.primary_minor = 0; - info->drm.has_render = false; - info->drm.render_major = 0; - info->drm.render_minor = 0; - info->pci.vendor_id = VTEST_PCI_VENDOR_ID; info->pci.device_id = VTEST_PCI_DEVICE_ID;