Lioncash
677a8b208d
video_core: Resolve more variable shadowing scenarios
Resolves variable shadowing scenarios up to the end of the OpenGL code
to make it nicer to review. The rest will be resolved in a following
commit.
5 years ago
Lioncash
34ec64233a
macro-interpreter: Resolve -Wself-assign-field warning
This was assigning the field to itself, which is a no-op. The size
doesn't change between its initial assignment and this one, so this is a
safe change to make.
5 years ago
David Marcec
6ce5f3120b
Macro HLE support
6 years ago
David Marcec
411f5527d4
Mark parameters as const
6 years ago
David Marcec
b032ebdfee
Implement macro JIT
6 years ago
Fernando Sahmkow
90e5694230
VideoCore/Engines: Refactor Engines CallMethod.
6 years ago
namkazy
fc37672f26
apply replay logic to all writes. remove replay from MacroInterpreter::Send ( @fincs )
6 years ago
namkazy
7051dc1902
maxwell_3d: update comments for shadow ram usage
6 years ago
Nguyen Dac Nam
01af036c1f
marco_interpreter: write hw value when shadow ram requested
6 years ago
Lioncash
125caf5d6e
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
ba02d564f8
Video Core: initial Implementation of InstanceDraw Packaging
6 years ago
ReinUsesLisp
5f309b88db
Revert "Revert #2466" and stub FirmwareCall 4
6 years ago
ReinUsesLisp
701dedcfad
maxwell_3d: Avoid moving macro_params
6 years ago
Fernando Sahmkow
913b7a6872
GPU: Add a microprofile for macro interpreter
7 years ago
Fernando Sahmkow
911fafb967
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
9ef45f00bf
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
00e7190e29
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
1efdb4897e
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
fdd649e2ef
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
abea6fa90c
gpu: Rewrite GPU command list processing with DmaPusher class.
- More accurate impl., fixes Undertale (among other games).
7 years ago
bunnei
033b46253e
macro_interpreter: Implement AddWithCarry and SubtractWithBorrow.
- Used by Undertale.
7 years ago
bunnei
de0ab806df
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
7a5eda5914
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
8191273a3d
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
8475496630
general: Convert assertion macros over to be fmt-compatible
8 years ago
Subv
1ec8d2123d
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