[XBOXVMP] Real OG XBOX NVidia GPU exposes 3 access ranges, so retrieve them.

CORE-19011

Fix a "bug" I introduced in commit 61012eb54.
VideoPortGetAccessRanges() expects the caller to specify at least the
total number of ranges the hardware exposes, otherwise it fails with
ERROR_MORE_DATA. (Tested also with the help of Windows' videoprt.sys.)

On real original XBOX there are three:
```
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation NV2A [XGPU] [10de:02a0] (rev a1)
    Subsystem: Unknown [0000:0000]
    Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 03
    Memory at fd000000 (32-bit, non-prefetchable) [size=16M]
    Memory at f0000000 (32-bit, prefetchable) [size=128M]
    Memory at 00000000 (32-bit, prefetchable) [size=512K]
```

Thanks to Stanislav and Daniel for tests on the real XBOX.
This commit is contained in:
Hermès Bélusca-Maïto 2023-06-28 15:37:55 +02:00
parent f135d23f4c
commit 61c77d1f87
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0

View file

@ -62,7 +62,8 @@ XboxVmpFindAdapter(
{
PXBOXVMP_DEVICE_EXTENSION XboxVmpDeviceExtension;
VP_STATUS Status;
VIDEO_ACCESS_RANGE AccessRanges[2];
/* 3 access ranges: for MMIO, VRAM, and Indirect memory access IO ports */
VIDEO_ACCESS_RANGE AccessRanges[3];
USHORT VendorId = 0x10DE; /* NVIDIA Corporation */
USHORT DeviceId = 0x02A0; /* NV2A XGPU */
ULONG Slot = 0;