David Marcec
74e48d2a98
Macro HLE support
6 years ago
David Marcec
cb42f51dc1
Mark parameters as const
6 years ago
David Marcec
05eeb7de3d
Implement macro JIT
6 years ago
Fernando Sahmkow
b916b58702
VideoCore/Engines: Refactor Engines CallMethod.
6 years ago
namkazy
fa1b60cc8c
apply replay logic to all writes. remove replay from MacroInterpreter::Send ( @fincs )
6 years ago
namkazy
854fb1ed2b
maxwell_3d: update comments for shadow ram usage
6 years ago
Nguyen Dac Nam
03a6cfea40
marco_interpreter: write hw value when shadow ram requested
6 years ago
Lioncash
2be8e9de58
video_core/macro_interpreter: Make definitions of most private enums/unions hidden
This allows the implementation of these types to change without
requiring a rebuild of everything that includes the macro interpreter
header.
6 years ago
Fernando Sahmkow
b61203a547
Video Core: initial Implementation of InstanceDraw Packaging
6 years ago
ReinUsesLisp
4f0213d0c7
Revert "Revert #2466" and stub FirmwareCall 4
6 years ago
ReinUsesLisp
9ad95eb74a
maxwell_3d: Avoid moving macro_params
6 years ago
Fernando Sahmkow
09d818732f
GPU: Add a microprofile for macro interpreter
7 years ago
Fernando Sahmkow
891060f8f2
Revert #2466
This reverts a tested behavior on delay slots not exiting if the exit
flag is set. Currently new tests are required in order to ensure this
behavior.
7 years ago
Sebastian Valle
0315253319
GPU/MMEInterpreter: Ignore the 'exit' flag when it's executed inside a delay slot.
It seems instructions marked with the 'exit' flag will not cause an exit when executed within a delay slot.
This was hwtested by fincs.
7 years ago
Lioncash
a812485b94
video_core/macro_interpreter: Remove assertion within FetchParameter()
We can just use .at(), which essentially does the same thing, but with
less code.
7 years ago
Lioncash
d2143cb59c
video_core/macro_interpreter: Simplify GetRegister()
Given we already ensure nothing can set the zeroth register in
SetRegister(), we don't need to check if the index is zero and special
case it. We can just access the register normally, since it's already
going to be zero.
We can also replace the assertion with .at() to perform the equivalent
behavior inline as part of the API.
7 years ago
David Marcec
1dfb0a513a
Fixed uninitialized memory due to missing returns in canary
Functions which are suppose to crash on non canary builds usually don't return anything which lead to uninitialized memory being used.
7 years ago
bunnei
f8b215e361
gpu: Rewrite GPU command list processing with DmaPusher class.
- More accurate impl., fixes Undertale (among other games).
7 years ago
bunnei
e48ea86186
macro_interpreter: Implement AddWithCarry and SubtractWithBorrow.
- Used by Undertale.
7 years ago
bunnei
42b74a5e41
maxwell_3d: Restructure macro upload to use a single macro code memory.
- Fixes an issue where macros could be skipped.
- Fixes rendering of distant objects in Super Mario Odyssey.
7 years ago
Frederic L
c76f4b6aec
global: Use std::optional instead of boost::optional ( #1578 )
* get rid of boost::optional
* Remove optional references
* Use std::reference_wrapper for optional references
* Fix clang format
* Fix clang format part 2
* Adressed feedback
* Fix clang format and MacOS build
7 years ago
Subv
3aebf087c1
MacroInterpreter: Avoid left shifting negative values.
The branch target is signed, so multiply by 4 instead of left shifting by 2
8 years ago
Lioncash
324ee31fc3
general: Convert assertion macros over to be fmt-compatible
8 years ago
Subv
7fe4f9491e
GPU: Implemented a gpu macro interpreter.
The Ryujinx macro interpreter and envydis were used as reference.
Macros are programs that are uploaded by the games during boot and can later be called by writing to their method id in a GPU command buffer.
8 years ago