doitsujin / dxvk

Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine
zlib License
13.1k stars 841 forks source link

Dino D-Day corrupted output with Intel vendor id #3200

Open Evernow opened 1 year ago

Evernow commented 1 year ago

Software information

Game is Dino D-Day, a DirectX9 Source engine game: https://store.steampowered.com/app/70000/Dino_DDay/

The game if launched on my Intel Arc A770 without overriding the vendor ID produces a corrupted output as shown below

image

By setting d3d9.customVendorId to 10de it works perfectly.

System information

Apitrace file(s)

The game doesn't seem to launch with the apitrace files in the directory, I can try to capture one on Windows without an Arc GPU if desired.

Log files

With 10de as d3d9.customVendorId:

Blisto91 commented 1 year ago

Hm interesting. I've not been able to reproduce any corruption on my R9 380X by telling I'm on Intel. So the driver might be at least partly involved here.

doitsujin commented 1 year ago

can you run the game with Vulkan validation enabled and post a log?

DXVK_DEBUG=validation VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation are the relevant env vars, provided you have vulkan validation layers installed on your system.

Evernow commented 1 year ago

can you run the game with Vulkan validation enabled and post a log?

DXVK_DEBUG=validation VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation are the relevant env vars, provided you have vulkan validation layers installed on your system.

Trying to get this working, however even with lib32-vulkan-validation-layers installed from the Arch repos the DXVK logs say:

Validation layers not found `VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation`

Switching off Proton Experimental to Proton 7.0 gets rid of this warning in the dxgi log, but I do not see any additional logs:

dinodday_d3d9.log dinodday_dxgi.log steam-70000.tar.gz

Something I found while testing is that the issue doesn't occur if there is an overlay active such as mangohud or even the steam overlay if there is a notification.

doitsujin commented 1 year ago

Trying to get this working, however even with lib32-vulkan-validation-layers installed from the Arch repos the DXVK logs say:

Yes, this is normal since DXVK cannot know whether the validation layers are actually supported or not from the Windows side. Please just ignore that error.

Also, that message not appearing with 7.0 doesn't mean it works, it just means that DXVK is too old for DXVK_DEBUG=validation to actually do anything.

Evernow commented 1 year ago

Trying to get this working, however even with lib32-vulkan-validation-layers installed from the Arch repos the DXVK logs say:

Yes, this is normal since DXVK cannot know whether the validation layers are actually supported or not from the Windows side. Please just ignore that error.

Also, that message not appearing with 7.0 doesn't mean it works, it just means that DXVK is too old for DXVK_DEBUG=validation to actually do anything.

Ah, apologies then.

When I add VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation DXVK_DEBUG=validation PROTON_LOG=1 %command% to the launch options of the game, the game crashes instantly before reaching the main menu or showing the logo where the issue shows visually, with these files created in the game's directory: dinodday_d3d9.log dinodday_dxgi.log

This is without overriding the vendor id, can show the output when I make it be 10de if desired.

doitsujin commented 1 year ago
err:   Validation Error: [ VUID-VkFramebufferCreateInfo-pAttachments-00877 ] Object 0: handle = 0xe48dfca0, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x60bcc0b7 | vkCreateFramebuffer:  Framebuffer Attachment (0) conflicts with the image's IMAGE_USAGE flags (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT). The Vulkan spec states: If flags does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of pAttachments that is used as a color attachment or resolve attachment by renderPass must have been created with a usage value including VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkFramebufferCreateInfo-pAttachments-00877)

This would certainly explain artifacting, but DXVK does not use VkFramebuffer objects anymore so this must come from the Steam overlay.

Can you try disabling the Steam overlay and see if that changes anything? Would be extremely weird if that was in any way influenced by the vendor ID though....

Evernow commented 1 year ago

Can you try disabling the Steam overlay and see if that changes anything? Would be extremely weird if that was in any way influenced by the vendor ID though....

Running this with mangohud and Steam overlay disabled

With vendor id override or without it the game still crashes with validation enabled, difference is with the vendor override to 10de and without validation enabled the game runs without any artifacts

With validation enabled and vendor id to 10de: dinodday_d3d9.log dinodday_dxgi.log

With validation enabled without vendor id overwritten:

dinodday_d3d9.log dinodday_dxgi.log

Without validation and without vendor id overwritten:

dinodday_d3d9.log dinodday_dxgi.log

Without validation and with vendor id overwritten to 10de:

dinodday_d3d9.log dinodday_dxgi.log

Riesi commented 1 year ago

hello

Intel dxvk trace: https://drive.google.com/file/d/1JmnI-rRHs1adfonU9Qze5VDSdgDkZLk4/view?usp=sharing Intel wined3d trace: https://drive.google.com/file/d/1tfjuCbQeGl_lQe0ePJhQzZnoSiXwebMX/view?usp=sharing

Running this game on my Skylake iGPU doesnt seem to reproduce the issue at all: image

Riesi commented 1 year ago

It is to note that the game sets its working path to its ./bin directory, so adding apitrace dll would need to be done in there.