win32u: Use struct pci_id in struct gdi_gpu.

This commit is contained in:
Rémi Bernon 2024-04-22 18:16:07 +02:00 committed by Alexandre Julliard
parent 79f3573d8f
commit 62c60a9e10
4 changed files with 24 additions and 30 deletions

View file

@ -85,14 +85,6 @@ static const char guid_devinterface_monitorA[] = "{E6F07B5F-EE97-4A90-B076-33F57
#define NEXT_DEVMODEW(mode) ((DEVMODEW *)((char *)((mode) + 1) + (mode)->dmDriverExtra))
struct pci_id
{
UINT16 vendor;
UINT16 device;
UINT16 subsystem;
UINT16 revision;
};
struct gpu
{
LONG refcount;
@ -1193,21 +1185,15 @@ static BOOL write_gpu_to_registry( const struct gpu *gpu, const struct pci_id *p
static void add_gpu( const struct gdi_gpu *gpu, void *param )
{
const struct pci_id pci_id =
{
.vendor = gpu->vendor_id,
.device = gpu->device_id,
.subsystem = gpu->subsys_id,
.revision = gpu->revision_id,
};
const struct pci_id *pci_id = &gpu->pci_id;
struct device_manager_ctx *ctx = param;
char buffer[4096];
KEY_VALUE_PARTIAL_INFORMATION *value = (void *)buffer;
unsigned int i;
HKEY hkey, subkey;
TRACE( "%s %04X %04X %08X %02X\n", debugstr_w(gpu->name),
gpu->vendor_id, gpu->device_id, gpu->subsys_id, gpu->revision_id );
TRACE( "%s %04X %04X %08X %02X\n", debugstr_w( gpu->name ), pci_id->vendor, pci_id->device,
pci_id->subsystem, pci_id->revision );
if (!enum_key && !(enum_key = reg_create_ascii_key( NULL, enum_keyA, 0, NULL )))
return;
@ -1225,7 +1211,7 @@ static void add_gpu( const struct gdi_gpu *gpu, void *param )
ctx->gpu.vulkan_uuid = gpu->vulkan_uuid;
snprintf( ctx->gpu.path, sizeof(ctx->gpu.path), "PCI\\VEN_%04X&DEV_%04X&SUBSYS_%08X&REV_%02X\\%08X",
gpu->vendor_id, gpu->device_id, gpu->subsys_id, gpu->revision_id, ctx->gpu.index );
pci_id->vendor, pci_id->device, pci_id->subsystem, pci_id->revision, ctx->gpu.index );
if (!(hkey = reg_create_ascii_key( enum_key, ctx->gpu.path, 0, NULL ))) return;
if ((subkey = reg_create_ascii_key( hkey, "Device Parameters", 0, NULL )))
@ -1265,7 +1251,7 @@ static void add_gpu( const struct gdi_gpu *gpu, void *param )
NtClose( hkey );
if (!write_gpu_to_registry( &ctx->gpu, &pci_id, gpu->memory_size ))
if (!write_gpu_to_registry( &ctx->gpu, pci_id, gpu->memory_size ))
WARN( "Failed to write gpu to registry\n" );
else
ctx->gpu_count++;

View file

@ -1142,10 +1142,13 @@ BOOL macdrv_UpdateDisplayDevices( const struct gdi_device_manager *device_manage
struct gdi_gpu gdi_gpu =
{
.id = gpu->id,
.vendor_id = gpu->vendor_id,
.device_id = gpu->device_id,
.subsys_id = gpu->subsys_id,
.revision_id = gpu->revision_id,
.pci_id =
{
.vendor = gpu->vendor_id,
.device = gpu->device_id,
.subsystem = gpu->subsys_id,
.revision = gpu->revision_id,
},
};
RtlUTF8ToUnicodeN(gdi_gpu.name, sizeof(gdi_gpu.name), &len, gpu->name, strlen(gpu->name));
device_manager->add_gpu(&gdi_gpu, param);

View file

@ -737,8 +737,8 @@ static BOOL get_gpu_properties_from_vulkan( struct gdi_gpu *gpu, const XRRProvid
/* Ignore Khronos vendor IDs */
if (properties2.properties.vendorID < 0x10000)
{
gpu->vendor_id = properties2.properties.vendorID;
gpu->device_id = properties2.properties.deviceID;
gpu->pci_id.vendor = properties2.properties.vendorID;
gpu->pci_id.device = properties2.properties.deviceID;
}
RtlUTF8ToUnicodeN( gpu->name, sizeof(gpu->name), &len, properties2.properties.deviceName,
strlen( properties2.properties.deviceName ) + 1 );

View file

@ -237,14 +237,19 @@ static inline ULONG window_surface_release( struct window_surface *surface )
/* display manager interface, used to initialize display device registry data */
struct pci_id
{
UINT16 vendor;
UINT16 device;
UINT16 subsystem;
UINT16 revision;
};
struct gdi_gpu
{
ULONG_PTR id;
WCHAR name[128]; /* name */
UINT vendor_id; /* PCI ID */
UINT device_id;
UINT subsys_id;
UINT revision_id;
WCHAR name[128];
struct pci_id pci_id;
GUID vulkan_uuid; /* Vulkan device UUID */
ULONGLONG memory_size;
};