summaryrefslogtreecommitdiffstats
path: root/src/intel/vulkan/anv_device.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/intel/vulkan/anv_device.c')
-rw-r--r--src/intel/vulkan/anv_device.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index a2551452eb1..54d353e400f 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -309,9 +309,10 @@ anv_physical_device_free_disk_cache(struct anv_physical_device *device)
static VkResult
anv_physical_device_init(struct anv_physical_device *device,
struct anv_instance *instance,
- const char *primary_path,
- const char *path)
+ drmDevicePtr drm_device)
{
+ const char *primary_path = drm_device->nodes[DRM_NODE_PRIMARY];
+ const char *path = drm_device->nodes[DRM_NODE_RENDER];
VkResult result;
int fd;
int master_fd = -1;
@@ -342,6 +343,11 @@ anv_physical_device_init(struct anv_physical_device *device,
device->no_hw = true;
}
+ device->pci_info.domain = drm_device->businfo.pci->domain;
+ device->pci_info.bus = drm_device->businfo.pci->bus;
+ device->pci_info.device = drm_device->businfo.pci->dev;
+ device->pci_info.function = drm_device->businfo.pci->func;
+
device->name = gen_get_device_name(device->chipset_id);
if (!gen_get_device_info(device->chipset_id, &device->info)) {
result = vk_error(VK_ERROR_INCOMPATIBLE_DRIVER);
@@ -729,9 +735,7 @@ anv_enumerate_devices(struct anv_instance *instance)
devices[i]->deviceinfo.pci->vendor_id == 0x8086) {
result = anv_physical_device_init(&instance->physicalDevice,
- instance,
- devices[i]->nodes[DRM_NODE_PRIMARY],
- devices[i]->nodes[DRM_NODE_RENDER]);
+ instance, devices[i]);
if (result != VK_ERROR_INCOMPATIBLE_DRIVER)
break;
}
@@ -1180,6 +1184,16 @@ void anv_GetPhysicalDeviceProperties2(
break;
}
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT: {
+ VkPhysicalDevicePCIBusInfoPropertiesEXT *properties =
+ (VkPhysicalDevicePCIBusInfoPropertiesEXT *)ext;
+ properties->pciDomain = pdevice->pci_info.domain;
+ properties->pciBus = pdevice->pci_info.bus;
+ properties->pciDevice = pdevice->pci_info.device;
+ properties->pciFunction = pdevice->pci_info.function;
+ break;
+ }
+
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES: {
VkPhysicalDevicePointClippingProperties *properties =
(VkPhysicalDevicePointClippingProperties *) ext;