protonscr

[d3d9] Codename: Panzers, Phase Two permanent queue sync

dxvkclosed d3d9not a bug
doitsujin/dxvk#3783 · opened 2024-01-03 by Blisto91 · updated 2024-02-05 · 1 comments · github
BBlisto91 2024-01-03 github

Game has a permanent queue sync that is interesting to check out.

Queue sync

Screenshot_20240103_202942

Interestingly running the game with d3d9.allowDirectBufferMapping = False ups the queue sync number to high double digits

With d3d9.allowDirectBufferMapping=False

Screenshot_20240103_203113

Extra note that d3d9.cachedDynamicBuffers = True helps CPU bound performance quite nicely in this game but the queue sync is still there.

with d3d9.cachedDynamicBuffers=True

Screenshot_20240103_203309

Software information

Codename: Panzers, Phase Two

System information

  • GPU: RX 6800
  • Driver: mesa main
  • Wine version: Proton Bleeding Edge
  • DXVK version: master

Apitrace file(s)

https://drive.proton.me/urls/96BWD685T4#fpUpd5rLvNL7

Log files

PANZERS_Phase_2_d3d9.log

KK0bin maintainer 2024-02-05 github

The game creates a render target and Locks it every frame. It doesn't actually use the render target for anything, at least in the apitrace.
Because it's a render target we have to assume the resource was written by the GPU, so in every lock call we end up waiting for the previous one.

Fixing this would require doing significantly more tracking, which isn't worth it. Besides that, the game always waits for an operation in the previous frame, so it's not that bad and has the side effect that it cuts down the latency.

Nothing extracted yet.