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

frametrim: add backend for D3D9 API #926

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

werman
Copy link
Contributor

@werman werman commented Jul 30, 2024

Limitations, by importance:

  • Resource ::Lock/::Unlock should match in the rendering frame,
    otherwise unmatched function would be called several times
    during looping.
  • State block doesn't capture shaders constants in setup frames.
  • Not all useless memory writes are eliminated, only discards of
    vertex and index buffers, so in some cases the trimmed result
    may have a large size.

Misc:

  • keep_all_states option isn't implemented.

Tested on:

Game Replay Loop Comment
Dead Space 3 takes a bit more space than it could have
A Hat in Time
Resident Evil 6
Timeshift
The Last Remnant
Call of Duty 4
Call of Duty 2 Mismatch in ::Lock/::Unlock in the rendering frame
Far Cry 2
War of The Ring takes a bit more space than it could have
KoA Reckoning
Super Meat Boy
Guild 2
C&C 3 Kanes Wrath 🟡 minor corruption in some icons due to offscreen render in prev frames
Oblivion 🟡 part of water is missing due to some offscreen setup
Brawlhalla trace is much larger than expected
The Slormancer 🟡 some UI is missing due to prev frame offscreen setup

werman and others added 6 commits July 30, 2024 12:33
Would be useful to e.g. show removed calls as comments.

Signed-off-by: Danylo Piliaiev <[email protected]>
Would make possible to remap pointers.

Signed-off-by: Danylo Piliaiev <[email protected]>
A lot of time spent in it while it is not used anywhere.

Signed-off-by: Danylo Piliaiev <[email protected]>
Limitations, by importance:
- Resource ::Lock/::Unlock should match in the rendering frame,
  otherwise unmatched function would be called several times
  during looping.
- State block doesn't capture shaders constants in setup frames.
- Not all useless memory writes are eliminated, only discards of
  vertex and index buffers, so in some cases the trimmed result
  may have a large size.

Misc:
- keep_all_states option isn't implemented.

Signed-off-by: Danylo Piliaiev <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants