nouveau: implement PIPE_PCI caps

and also use the already fetched device_id instead of refetching it.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30455>
This commit is contained in:
Karol Herbst
2024-08-01 00:04:09 +02:00
committed by Marge Bot
parent eac61faf84
commit 1454347c85
3 changed files with 23 additions and 30 deletions

View File

@@ -201,10 +201,6 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY:
case PIPE_CAP_SURFACE_REINTERPRET_BLOCKS:
case PIPE_CAP_QUERY_BUFFER_OBJECT:
case PIPE_CAP_PCI_GROUP:
case PIPE_CAP_PCI_BUS:
case PIPE_CAP_PCI_DEVICE:
case PIPE_CAP_PCI_FUNCTION:
case PIPE_CAP_FRAMEBUFFER_NO_ATTACHMENT:
case PIPE_CAP_ROBUST_BUFFER_ACCESS_BEHAVIOR:
case PIPE_CAP_CULL_DISTANCE:
@@ -253,20 +249,23 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_IMAGE_STORE_FORMATTED:
return 0;
case PIPE_CAP_PCI_GROUP:
return dev->info.pci.domain;
case PIPE_CAP_PCI_BUS:
return dev->info.pci.bus;
case PIPE_CAP_PCI_DEVICE:
return dev->info.pci.dev;
case PIPE_CAP_PCI_FUNCTION:
return dev->info.pci.func;
case PIPE_CAP_MAX_GS_INVOCATIONS:
return 32;
case PIPE_CAP_MAX_SHADER_BUFFER_SIZE_UINT:
return 1 << 27;
case PIPE_CAP_VENDOR_ID:
return 0x10de;
case PIPE_CAP_DEVICE_ID: {
uint64_t device_id;
if (nouveau_getparam(dev, NOUVEAU_GETPARAM_PCI_DEVICE, &device_id)) {
NOUVEAU_ERR("NOUVEAU_GETPARAM_PCI_DEVICE failed.\n");
return -1;
}
return device_id;
}
case PIPE_CAP_DEVICE_ID:
return dev->info.device_id;
case PIPE_CAP_ACCELERATED:
return 1;
case PIPE_CAP_VIDEO_MEMORY:

View File

@@ -275,10 +275,13 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return class_3d >= NVA3_3D_CLASS;
case PIPE_CAP_PCI_GROUP:
return dev->info.pci.domain;
case PIPE_CAP_PCI_BUS:
return dev->info.pci.bus;
case PIPE_CAP_PCI_DEVICE:
return dev->info.pci.dev;
case PIPE_CAP_PCI_FUNCTION:
return 0;
return dev->info.pci.func;
case PIPE_CAP_MULTISAMPLE_Z_RESOLVE: /* potentially supported on some hw */
case PIPE_CAP_INTEGER_MULTIPLY_32X16: /* could be done */
@@ -289,14 +292,8 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_VENDOR_ID:
return 0x10de;
case PIPE_CAP_DEVICE_ID: {
uint64_t device_id;
if (nouveau_getparam(dev, NOUVEAU_GETPARAM_PCI_DEVICE, &device_id)) {
NOUVEAU_ERR("NOUVEAU_GETPARAM_PCI_DEVICE failed.\n");
return -1;
}
return device_id;
}
case PIPE_CAP_DEVICE_ID:
return dev->info.device_id;
case PIPE_CAP_ACCELERATED:
return 1;
case PIPE_CAP_VIDEO_MEMORY:

View File

@@ -340,10 +340,13 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
return 0;
case PIPE_CAP_PCI_GROUP:
return dev->info.pci.domain;
case PIPE_CAP_PCI_BUS:
return dev->info.pci.bus;
case PIPE_CAP_PCI_DEVICE:
return dev->info.pci.dev;
case PIPE_CAP_PCI_FUNCTION:
return 0;
return dev->info.pci.func;
case PIPE_CAP_OPENCL_INTEGER_FUNCTIONS: /* could be done */
case PIPE_CAP_INTEGER_MULTIPLY_32X16: /* could be done */
@@ -355,14 +358,8 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
case PIPE_CAP_VENDOR_ID:
return 0x10de;
case PIPE_CAP_DEVICE_ID: {
uint64_t device_id;
if (nouveau_getparam(dev, NOUVEAU_GETPARAM_PCI_DEVICE, &device_id)) {
NOUVEAU_ERR("NOUVEAU_GETPARAM_PCI_DEVICE failed.\n");
return -1;
}
return device_id;
}
case PIPE_CAP_DEVICE_ID:
return dev->info.device_id;
case PIPE_CAP_ACCELERATED:
return 1;
case PIPE_CAP_VIDEO_MEMORY: