doitsujin / dxvk

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

[d3d11] Total War Troy rendering issue #1885

Open Leopard1907 opened 3 years ago

Leopard1907 commented 3 years ago

Game has a rendering issue. It has these weird looking cloud ( possibly?) shadow outlines on campaign map. Zooming in and out at campaign map affects visibility of it but that is hard to not notice it. Game has this issue with DXVK ( didn't try native d3d11 but i assume it doesn't have this) since it was released at August 2020. Since game updates over time didn't change anything on that regard, i assume that is a DXVK issue.

Ekran Görüntüsü - 2021-01-05 01-16-36 Ekran Görüntüsü - 2021-01-05 01-17-26

Software information

A Total War Saga:Troy Setting used: High preset, 4X AA and 16x AF

System information

Apitrace file(s)

Apitrace didn't work with it. I have captured two rdc's.

https://drive.google.com/file/d/16UJ5OF2kD4PiydOg1CzE3nnYmQGQHwNX/view?usp=sharing

https://drive.google.com/file/d/1gNoB4-kjIvsMWNwkSRfoiYlpef6mbWYR/view?usp=sharing

Log files

doitsujin commented 3 years ago

Is this even a bug that doesn't happen on Windows?

CME42 commented 3 years ago

It's not reproducible on windows. it seems like the game tries to sample from a multisampled depth buffer when things go wrong: Bildschirmfoto von 2021-01-12 11-48-03

There are also some validation errors:

VUID-vkCmdDispatch-None-02699(ERROR / SPEC): msgNum: -439258052 - Validation Error: [ VUID-vkCmdDispatch-None-02699 ] Object 0: handle = 0x64810000006481, type = VK_OBJECT_TYPE_DESCRIPTOR_SET; | MessageID = 0xe5d1743c | VkDescriptorSet 0x64810000006481[] encountered the following validation error at vkCmdDispatch() time: Descriptor in binding #3 index 0 requires bound image to have VK_SAMPLE_COUNT_1_BIT but got VK_SAMPLE_COUNT_4_BIT. The Vulkan spec states: Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets, must be valid if they are statically used by the VkPipeline bound to the pipeline bind point used by this command (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-vkCmdDispatch-None-02699)
    Objects: 1
        [0] 0x64810000006481, type: 23, name: NULL
VUID-vkCmdDraw-None-02699(ERROR / SPEC): msgNum: 369680064 - Validation Error: [ VUID-vkCmdDraw-None-02699 ] Object 0: handle = 0x64980000006498, type = VK_OBJECT_TYPE_DESCRIPTOR_SET; | MessageID = 0x1608dec0 | VkDescriptorSet 0x64980000006498[] encountered the following validation error at vkCmdDraw() time: Descriptor in binding #5 index 0 requires bound image to have VK_SAMPLE_COUNT_1_BIT but got VK_SAMPLE_COUNT_4_BIT. The Vulkan spec states: Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets, must be valid if they are statically used by the VkPipeline bound to the pipeline bind point used by this command (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-vkCmdDraw-None-02699)
    Objects: 1

I managed to create a nsight dump on windows and created an apitrace out of it, you can download it here: https://drive.google.com/file/d/1aE7NocpJLa5tR5ZwHvlF7pDwg7lg8wYB/view?usp=sharing

doitsujin commented 3 years ago

So it's a game bug; unfortunately there's no viable way to work around this.

doitsujin commented 3 years ago

Fixed an actual DXVK bug exposed by the game in b19293430a7e73c06cdec0e742468f0028b6d674, but I don't think this is related to the rendering issues.