https://bugs.winehq.org/show_bug.cgi?id=55061
Boris Carvajal boris2.9@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |boris2.9@gmail.com
--- Comment #14 from Boris Carvajal boris2.9@gmail.com --- I've bisected the problem to the code introduced in this commit:
3a3c7cbd209e23cc6ee88299b3ba877ab20a767f - winex11.drv: Retrieve PCI IDs and device name from Vulkan.
The first obvious change I could detect was that now some 'gpu.device_id' variable was set to 0x8086 (Intel vendor ID) instead of the old value that it was simply 0. So I hard-coded a "device_id = 0;" and guess what, StarCraft ran with clear graphics.
It seems the game lowers the graphics on purpose or just has broken logic in the presence of an Intel GPU. After further investigation I found this bug also happening natively on Windows and Mac systems:
https://us.forums.blizzard.com/en/starcraft/t/sc-remastered-looks-blurry-on-... https://us.forums.blizzard.com/en/starcraft/t/blurry-buildingsunits-on-intel... https://us.forums.blizzard.com/en/starcraft/t/scr-hd-graphics-bug-with-intel... https://community.intel.com/t5/Graphics/I-also-cannot-play-4K-Starcraft-rema...
I think you also have an Intel processor with integrated graphics in addition to a dedicated GPU (if that's not the case I'm lost), which is queried using Vulkan at app startup and in some way it's interfering even if not used at all.
I'm using PRIME offloading so my setup may be different than yours, here are a few workarounds that worked for me:
- Create 'VideoPciVendorID' and 'VideoPciDeviceID' keys (https://wiki.winehq.org/Useful_Registry_Keys) with a known value from (wine-src/dlls/wined3d/wined3d_private.h) not Intel of course. For example, save this file and apply it with 'reg import customid.reg' or using regedit. This will report a Radeon RX 480 to StarCraft.
--- customid.reg --- Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Wine\AppDefaults\StarCraft.exe\Direct3D] "VideoPciDeviceID"=dword:000067df "VideoPciVendorID"=dword:00001002 --------------------
- Another way is to export the environment var VK_ICD_FILENAMES with a specific driver, e.g. VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json so that only the dedicated GPU is exposed. An empty VK_ICD_FILENAMES="" could also work but then you can't use vulkan/DXVK.
- When using DXVK you need to set 'dxgi.customVendorId' option, you can use 'dxvk.conf' or export DXVK_CONFIG, e.g. DXVK_CONFIG="dxgi.customDeviceId = 67df; dxgi.customVendorId = 1002"
Good luck.