Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Saints Rows 3 at 1 fps!! #2473

Closed
SaintsWalker23 opened this issue Feb 1, 2022 · 35 comments · Fixed by #3158
Closed

Saints Rows 3 at 1 fps!! #2473

SaintsWalker23 opened this issue Feb 1, 2022 · 35 comments · Fixed by #3158

Comments

@SaintsWalker23
Copy link

Saints Row 3 runs smoothly for several minutes with DXVK, around 50 fps, but always at some point the fps drops to 1. And I have to close the game.

I would like some solution, I'm still a beginner with DXVK.
Is there any setting to alleviate this?
Versions of DXVK used (1.8.1 and 1.9) 1.9 has been the most durable until the fps starts to drop.

forgive my bad english.

@Leopard1907
Copy link
Contributor

Don't ignore the issue template.

You lack hw info, logs, software info etc.

@SaintsWalker23
Copy link
Author

Não ignore o modelo de problema.

Você não tem informações de hw, logs, informações de software etc.

hi, thanks for replying.

the log is here
but I have no idea where to get the other information you asked for.

Log:
info: Game: SaintsRowTheThird.exe
info: DXVK: v1.8.1
info: Found config file: dxvk.conf
info: Effective configuration:
info: d3d9.presentInterval = 0
info: d3d9.maxAvailableMemory = 128
info: Built-in extension providers:
info: Win32 WSI
info: OpenVR
info: OpenXR
info: OpenVR: could not open registry key, status 2
warn: OpenVR: Failed to locate module
info: Enabled instance extensions:
info: VK_KHR_get_surface_capabilities2
info: VK_KHR_surface
info: VK_KHR_win32_surface
warn: D3D9: VK_FORMAT_D16_UNORM_S8_UINT -> VK_FORMAT_D24_UNORM_S8_UINT
info: Intel(R) UHD Graphics 620:
info: Driver: 0.402.1472
info: Vulkan: 1.2.177
info: Memory Heap[0]:
info: Size: 1979 MiB
info: Flags: 0x1
info: Memory Type[0]: Property Flags = 0x1
info: Memory Type[1]: Property Flags = 0x7
info: Memory Type[2]: Property Flags = 0xf
info: Process set as DPI aware
info: Device properties:
info: Device name: : Intel(R) UHD Graphics 620
info: Driver version : 0.402.1472
info: Enabled device extensions:
info: VK_EXT_4444_formats
info: VK_EXT_custom_border_color
info: VK_EXT_depth_clip_enable
info: VK_EXT_extended_dynamic_state
info: VK_EXT_full_screen_exclusive
info: VK_EXT_host_query_reset
info: VK_EXT_robustness2
info: VK_EXT_shader_demote_to_helper_invocation
info: VK_EXT_shader_stencil_export
info: VK_EXT_shader_viewport_index_layer
info: VK_EXT_transform_feedback
info: VK_EXT_vertex_attribute_divisor
info: VK_KHR_create_renderpass2
info: VK_KHR_depth_stencil_resolve
info: VK_KHR_draw_indirect_count
info: VK_KHR_driver_properties
info: VK_KHR_image_format_list
info: VK_KHR_sampler_mirror_clamp_to_edge
info: VK_KHR_shader_float_controls
info: VK_KHR_swapchain
info: Device features:
info: robustBufferAccess : 1
info: fullDrawIndexUint32 : 1
info: imageCubeArray : 1
info: independentBlend : 1
info: geometryShader : 1
info: tessellationShader : 0
info: sampleRateShading : 1
info: dualSrcBlend : 0
info: logicOp : 0
info: multiDrawIndirect : 0
info: drawIndirectFirstInstance : 0
info: depthClamp : 1
info: depthBiasClamp : 1
info: fillModeNonSolid : 1
info: depthBounds : 0
info: multiViewport : 1
info: samplerAnisotropy : 1
info: textureCompressionBC : 1
info: occlusionQueryPrecise : 1
info: pipelineStatisticsQuery : 1
info: vertexPipelineStoresAndAtomics : 1
info: fragmentStoresAndAtomics : 0
info: shaderImageGatherExtended : 0
info: shaderStorageImageExtendedFormats : 1
info: shaderStorageImageReadWithoutFormat : 0
info: shaderStorageImageWriteWithoutFormat : 1
info: shaderClipDistance : 1
info: shaderCullDistance : 1
info: shaderFloat64 : 0
info: shaderInt64 : 0
info: variableMultisampleRate : 0
info: VK_EXT_4444_formats
info: formatA4R4G4B4 : 1
info: formatA4B4G4R4 : 0
info: VK_EXT_custom_border_color
info: customBorderColors : 1
info: customBorderColorWithoutFormat : 1
info: VK_EXT_depth_clip_enable
info: depthClipEnable : 1
info: VK_EXT_extended_dynamic_state
info: extendedDynamicState : 1
info: VK_EXT_host_query_reset
info: hostQueryReset : 1
info: VK_EXT_memory_priority
info: memoryPriority : 0
info: VK_EXT_robustness2
info: robustBufferAccess2 : 0
info: robustImageAccess2 : 0
info: nullDescriptor : 1
info: VK_EXT_shader_demote_to_helper_invocation
info: shaderDemoteToHelperInvocation : 1
info: VK_EXT_transform_feedback
info: transformFeedback : 0
info: geometryStreams : 0
info: VK_EXT_vertex_attribute_divisor
info: vertexAttributeInstanceRateDivisor : 1
info: vertexAttributeInstanceRateZeroDivisor : 1
info: Queue families:
info: Graphics : 0
info: Transfer : 0
warn: DXVK: State cache version not supported
warn: DXVK: Creating new state cache file
info: DXVK: Using 2 compiler threads
info: D3D9DeviceEx::ResetSwapChain:
info: Requested Presentation Parameters
info: - Width: 800
info: - Height: 600
info: - Format: D3D9Format::X8R8G8B8
info: - Auto Depth Stencil: true
info: ^ Format: D3D9Format::D24S8
info: - Windowed: false
info: Presenter: Actual swap chain properties:
info: Format: VK_FORMAT_R8G8B8A8_UNORM
info: Present mode: VK_PRESENT_MODE_IMMEDIATE_KHR
info: Buffer size: 800x600
info: Image count: 3
info: Exclusive FS: 0
info: Setting display mode: 800x600@0
info: Presenter: Actual swap chain properties:
info: Format: VK_FORMAT_R8G8B8A8_UNORM
info: Present mode: VK_PRESENT_MODE_IMMEDIATE_KHR
info: Buffer size: 800x600
info: Image count: 3
info: Exclusive FS: 0
warn: D3D9DeviceEx::SetRenderState: Unhandled render state D3DRS_MULTISAMPLEANTIALIAS

@gabriele2000
Copy link

gabriele2000 commented Feb 2, 2022

info: Driver version : 0.402.1472

Very strange driver version, are you on Windows or Linux?
If you're on linux install the intel drivers, including vulkan drivers

@SaintsWalker23
Copy link
Author

informações: Versão do driver: 0.402.1472

Versão do driver muito estranha, você está no Windows ou Linux? Se você estiver no linux, instale os drivers intel, incluindo drivers vulkan

Thanks for replying!
OS: Windows 10
Driver: Intel uhd 620

I've been using the dxvk 1.5.1 version and so far it's a little stable.

@Blisto91
Copy link
Contributor

Blisto91 commented Jun 1, 2022

@SaintsWalker23 Is it correct you are using the directx 9 graphics?
Does it change anything if you use directx 10/11 instead?

In dx9 mode does it help if you make a file called dxvk.conf next to the games .exe with this?

d3d9.memoryTrackTest = True

Or maybe

d3d9.maxAvailableMemory = 2048
d3d9.memoryTrackTest = True

To verify that the game picks up the conf file you can also add dxvk.hud = 1 and see that the hud shows up ingame.

@Blisto91
Copy link
Contributor

Blisto91 commented Jul 6, 2022

@SaintsWalker23 Friendly ping

@K0bin
Copy link
Collaborator

K0bin commented Jul 24, 2022

Closing due to the lack of feedback.

@K0bin K0bin closed this as completed Jul 24, 2022
@rtentser
Copy link

Have pretty similar issue both on linux with proton-ge 7.43 and on windows with dxvk 2.0.

DirectX 9 with dxvk gives better performance (after shader stutter) than native dx9/dx11. It's about steady 100+ fps on linux and 60+ fps on windows (2560x1440, ultra graphics). But after a while (about half an hour in game, but it differs every time), the performance degrades to 5-6 fps, which makes game unplayable. Exit to main menu fixes it in both OS.

My GPU is rx 6600, CPU is r5 2600. The game seems to be CPU-limited with dx9/dx11, dxvk fixes it. Can't test on linux right now, can test on windows. Maybe amd related (i've read some protondb reports, no mentions of similar problem, all of them from nvidia users iirc).

d3d9.memoryTrackTest = True

There was some changes in 2.0, can it still help?

@rtentser
Copy link

d3d9.memoryTrackTest = True

Didn't help

d3d9.maxAvailableMemory = 2048
d3d9.memoryTrackTest = True

Didn't help too

@Blisto91
Copy link
Contributor

I'll see if i can reproduce here when i have time.

@K0bin
Copy link
Collaborator

K0bin commented Dec 29, 2022

Please make an apitrace. @rtentser

@K0bin K0bin reopened this Dec 29, 2022
@K0bin
Copy link
Collaborator

K0bin commented Dec 29, 2022

Also, please clarify whether you're using D3D9 or D3D11 and whether or not you're talking about the remaster.

@rtentser
Copy link

It's original steam version, not a remaster. It's dx9 problem, dx11 runs more stable, but performance is worse, it's cpu limited

I'll make apitrace later

@rtentser
Copy link

Now copy those DLL files into the same folder as the game's .EXE.
Launch the game and try to reproduce your issue as fast as possible, then exit the game after that (using ALT+F4 is fine).

I can only reproduce the issue with dxvk libraries, will apitrace help?

@K0bin
Copy link
Collaborator

K0bin commented Dec 29, 2022

It might. Just make sure its long enough.

@rtentser
Copy link

How long?

@SaintsWalker23
Copy link
Author

Thanks for the answers, and sorry for taking so long to reply.
I finished the game a long time ago. I just used some old versions of dvk and it stopped crashing.

Of course, this was a specific and isolated solution for this Saints 3 case. For other games I wasn't so successful.

@Blisto91
Copy link
Contributor

@SaintsWalker23 Which is the latest version of dxvk where the issue doesn't occur?

@rtentser If you want to trace together with dxvk on Windows you can put the apitrace dll's next to the games exe and then use the env var APITRACE_FORCE_MODULE_PATH pointing to a another folder where the dxvk dll's are located.

@rtentser
Copy link

rtentser commented Dec 29, 2022

With apitrace the game starts to 9 fps in main menu. So, i didn't play much. Second file is probably a launcher

Without env var: link
With env var pointing to dxvk: link

@K0bin
Copy link
Collaborator

K0bin commented Dec 29, 2022

That hoster limits download speed to 30 KB/s for free users. Can you please upload it to some site that doesn't take hours to download?

Besides that, the first link seems to be dead.

@SaintsWalker23
Copy link
Author

@Blisto91 the most stable version I used for me in saints rows 3 was: dxvk-1.5.2
remembering that I'm using the game's directx 11

@rtentser
Copy link

That hoster limits download speed to 30 KB/s for free users

Pretty strange, i've used it without logging in, always fast experience. But it was a long time ago

dxvk: link
no-dxvk: link

@rtentser
Copy link

remembering that I'm using the game's directx 11

DirectX 11 stable, but slow

@Blisto91
Copy link
Contributor

Mkay i've manged to reproduce both with wined3d and dxvk on Linux.

@rtentser Did you manage to reproduce this on Windows with dxvk but not without?

@rtentser
Copy link

rtentser commented Dec 30, 2022

Yes, i've played for a while with native dx9, didn't reproduce the problem

@rtentser
Copy link

Just played it without dxvk for a couple of hours, no issue

@K0bin
Copy link
Collaborator

K0bin commented Dec 30, 2022

@rtentser What GPU and driver are you using?

@rtentser
Copy link

RX 6600
On windows it's AMD Software: Adrenalin Edition 22.11.2
On linux it was probably mesa 22.3.1, i was on manjaro unstable

@K0bin
Copy link
Collaborator

K0bin commented Dec 30, 2022

And it happened on both Windows and Linux?

@rtentser
Copy link

Yes
Linux has better performance on dx9, but still, after a while the issue happened, performance became about 6 fps
@Blisto91 reproduced it on linux, i guess

@K0bin
Copy link
Collaborator

K0bin commented Dec 30, 2022

I cannot reproduce this. I've played for around 20 minutes and it ran at >100fps 4k with 8x MSAA the entire time.

@rtentser
Copy link

It happens for me after about half an hour. Sometimes earlier

@Blisto91
Copy link
Contributor

Blisto91 commented Dec 30, 2022

Just posting the trace i made which i and another can reproduce the issue with.

https://mega.nz/file/50IyWCKL#fqBnmnS8qLsH_g6zhlKbGIpCt56ClIP9voICctyJrtE

Edit: New shorter trace that gets straight to the point.

@K0bin
Copy link
Collaborator

K0bin commented Dec 30, 2022

The game decides to render 400 million points for some reason.

40,000 points * 10,000 instances


505383999 @1 IDirect3DDevice9Ex::SetStreamSourceFreq(this = 0xf49a260, StreamNumber = 1, Setting = 2147483649) = D3D_OK

505384001 @1 IDirect3DDevice9Ex::SetStreamSourceFreq(this = 0xf49a260, StreamNumber = 0, Setting = 1073751824) = D3D_OK

505384012 @1 IDirect3DDevice9Ex::DrawPrimitive(this = 0xf49a260, PrimitiveType = D3DPT_POINTLIST, StartVertex = 0, PrimitiveCount = 40000) = D3D_OK

EDIT: This draw is responsible for rain drop particles. The running theory is that D3D9 doesn't do instancing for non-indexed draws. The docs about this are really confusing so this probably requires tests.

@K0bin
Copy link
Collaborator

K0bin commented Jan 13, 2023

Turns out my theory was correct. That PR will fix it.

The game is really stupid though. It sets up instancing and then basically requires that to not work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants