This instruction is used by Injustice: Gods Among Us and Project Zero
Also improved robustness of rendering to be less prone to crashing when a game tries to draw with broken shaders
The optimization for colorbuffer resolution introduced in PR #706 is now enabled. This optimization changes the resolution of certain framebuffer textures, which may conflict with the texture resolution rules set by some graphic packs. As a result, if a graphic pack that specifies texture resolution rules is in use, the optimization will automatically be turned off to prevent any issues.
To circumvent this, graphic packs can now include the setting "colorbufferOptimizationAware = true" in their rules.txt. This setting indicates that the pack has been updated to handle the resolution changes introduced by the optimization. Cemu will allow the optimization to remain enabled if resolution packs have this flag set.
"Intel legacy mode" was a special mode to workaround various Intel OpenGL driver limitations during the earlier years of Cemu. It's been unmaintained for years and no longer serves a purpose.
If we ever bring back compatibility with ancient Intel GPUs it should be done in a more structured way than a blunt yes/no flag.
Besides a general cleanup:
- Remove deprecated resource destruction queues
- Move functionality from renderer into Latte base classes to deduplicate code
Graphic packs can overwrite the format of a texture (e.g. for higher bitdepth to lessen banding) but the code for this wasn't correctly working anymore.
- Fixes overwrite format being ignored for texture views on Vulkan backend
- Fixes overwrite format not being used for texture views on OpenGL
Format aliasing is complicated enough as it is, even without overwrites, so this adds a new rule to make behavior more well defined: If two textures share memory but only one uses an overwrite format, then they are no longer synchronized and are considered separate textures.
Bonus fixes for OpenGL:
- Use fbo 0 instead of -1 as the default. This silences some warnings in debug output
- On OpenGL, bind new framebuffers on handle generation so they are considered created
This reverts commit 8f1cd4f925.
We received reports from users stuck with Vulkan drivers from 2019. (E.g. Kepler on Windows). So let's not unnecessarily increase the Vulkan requirement for now and postpone this to after the next stable release
* script changes - no arguments
* script changes with 2 arguments
* script changes with > 2 arguments
* script conversions with 1 argument - pt. 1
* script conversions with 1 argument - pt. 2
* script conversions with 1 argument - pt. 3
* script conversions with 1 argument - pt. 4
* script conversions with 1 argument - pt. 5
Pointer format hunting
* Fixed pointer format
* script conversions with 1 argument - final
* fixed conversion in non utf-8 file
* fixed conversion with capital letter
* actually fixed conversion with capital letter
* fixed another capital lettering issue
* Added conversions with LR removed
* removed LR from logs
* Converted logs that previously contained LR
* converted log that originally specified string length
* fixed log with commas in main text
* fixed multi-line log
* Fixed more logs with commas in main text
* Fixed unformatted pointer
* added conversion with float value
* converted lines with double parameters
* converted missed line
* corrected argument formatting
Co-authored-by: Crementif <26669564+Crementif@users.noreply.github.com>
* Fixed misspellings of "unhandled"
unhandeled -> unhandled
Co-authored-by: Crementif <26669564+Crementif@users.noreply.github.com>
---------
Co-authored-by: Crementif <26669564+Crementif@users.noreply.github.com>
* Implement GDB stub debugger
Can be enabled by using the "--enable-gdbstub" option (and the debugger GUI, although that's untested) which'll pause any game you launch at start-up. Will start at port 1337 although it'll eventually be user-editable. The code is a bit weirdly sorted and also just needs a general cleanup, so expect that eventually too. And uses egyptian braces but formatting was easier to do at the end, so that's also something to do.
It has been tested to work with IDA Pro, Clion and the standalone interface for now, but I plan on writing some instructions in the PR to follow for people who want to use this. Memory breakpoints aren't possible yet, only execution breakpoints.
This code was aimed to be decoupled from the existing debugger to be able to be ported to the Wii U for an equal debugging experience. That's also why it uses the Cafe OS's thread sleep and resuming functions whenever possible instead of using recompiler/interpreter controls.
* Add memory writing and floating point registers support
* Reformat code a bit
* Format code to adhere to Cemu's coding style
* Rework GDB Stub settings in GUI
* Small styling fixes
* Rework execution breakpoints
Should work better in some edge cases now. But this should also allow for adding access breakpoints since it's now more separated.
* Implement access breakpoints
* Fix some issues with breakpoints
* Fix includes for Linux
* Fix unnecessary include
* Tweaks for Linux compatibility
* Use std::thread instead of std::jthread to fix MacOS support
* Enable GDB read/write breakpoints on x86 only
* Fix compilation for GCC compilers at least
The thread type varies on some platforms, so supporting this is hell... but let's get it to compile on MacOS first.
* Disable them for MacOS due to lack of ptrace
---------
Co-authored-by: Exzap <13877693+Exzap@users.noreply.github.com>
By mistake we would read affected textures back after every single drawcall. As an optimization if the same texture gets drawn to multiple times we'll try to only read it back once at the end of the sequence.