[Bug 52508] New: EnumDisplayDevices() fails in obscure ways on 32-bit arch when 64-bit Vulkan is present but 32-bit is missing
WineHQ Bugzilla
wine-bugs at winehq.org
Tue Feb 1 17:54:01 CST 2022
https://bugs.winehq.org/show_bug.cgi?id=52508
Bug ID: 52508
Summary: EnumDisplayDevices() fails in obscure ways on 32-bit
arch when 64-bit Vulkan is present but 32-bit is
missing
Product: Wine
Version: 7.1
Hardware: x86-64
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: user32
Assignee: wine-bugs at winehq.org
Reporter: z.figura12 at gmail.com
CC: jacek at codeweavers.com, zzhang at codeweavers.com
Distribution: ---
FWIW, this is easy to trigger by running 32-bit ddraw:ddraw1.
I'm fine with calling this case "user error", but the problem is, it's not that
hard to be missing Vulkan drivers for one architecture, while debugging this
took way too long. It'd be nice to at least have some way of printing a
message.
The basic problem is that when Vulkan is present we retrieve the PCI IDs from
it, but when it's absent we set them to zero. As a result we end up creating
two different sets of registry entries, but only the 64-bit one gets populated
via initialize_display_settings(). EnumDisplayDevices() tries to access it and
finds the GPU entries empty.
This does lead me to ask: can we avoid querying GPUs in each process? Can we
just let explorer.exe manage them and get our information from there?
CC'ing Jacek and Zhiyi as both having worked closely with this code.
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list