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
vk: Resource management improvements #5988
Conversation
kd-11
commented
May 17, 2019
•
edited
edited
- Bumps max allocated draw call resources up to 16k from 4k to avoid easily running out of resources mid-frame in heavy scenes.
- Use a simple FIFO queue for frame data handling. In future, this can easily be expanded to use a present scheduler thread for frame-pacing support.
- The frame FIFO allows better management of descriptor pools; allowing them to be reset on acquisition of a frame context object that is guaranteed to have finished referencing it. This avoids a use-after-free situation that causes visual flicker on AMD hardware on some games like Infamous.
- Also fixes a broken optimization check (inFamous [NPUA80480] crashes on Vulkan after #5565 #5600)
Fixed exploding vertices on AMD gpu's: |
I see slight fps improvement in P5 in Shibuya streets (master 8143 = 30-35FPS, PR = 38-44 FPS) and bigger one in inFamous at the safehouse (master 8143 = 40-47FPS, PR = 55-60FPS). No other improvements or regressions. |
performance in draw call limited starting scene in R&C ToD decreased from 12.5 to 10.5 fps |
400% scaling works again in NHL 16 👍 |
@isJuhn Can't have both; either we get flickering or we get a lower performance if we exceed allocation. I'm surprised ToD is exhausing 16k draw calls. |
@kd-11 after retesting with everything else closed the difference isn't as large as in my first test, 13-13.5 -> ~12 fps. what exactly do you mean by exhausting 16k draw calls? in the debug overlay it says there is only ~7700 draw calls. |
Still can't play at 300% (4K) with NCAA Football 10, previously worked prior to PR #5977 |
@isJuhn That number is the number of batches, not individual draw invocations. Its kinda my fault really, I need to rewrite the dispatcher to not rely on descriptors too much. A streaming approach should work, I can use push constants to set up the draw uid. |
- Use a simple queue to avoid redundant checks over all the contexts - Poll queue if RSX pipe is idle - Only check the queue when the frame context is dirty (after a queue operation) - Reset descriptors at the start of the frame context to avoid having to synchronize mid-frame - Fully synchronize if a descriptor reset is required mid-frame (spec compliance; also fixes flickering verts on some hardware)
…iagnostic message for OOM
- The 'max' index should take the first assigned ID; fixes problems with divisors
This commit on my system (Win10, i7 7700, gtx1060 3gb) causes a lot of stuttering with NiNoKuni (Fps still show 30 but the game stutters as hell), any reason why? |
Framepacing probably; especially if your "RSX load" shows constant 99% and the game never checks for pending submissions. |
Do I have to open a new issue about this, or were you already aware and working on it? |
Just open an issue as I already started on another task. |
the last commit that was merged into master fixes my issues with NCAA Football 10. Fully playable at 4K again :D |
less fps with this build |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Open a proper issue tracker if you have issues. Don't spam closed threads. |