MaranBr
af554c0baa
[video_core] Fix Maxwell3D register processing to always mark dirty flags ( #3712 )
...
Removed the early return in ProcessDirtyRegisters to ensure all dependent dirty flags are set even if the register value hasn't changed.
This fixes flickering and vertex explosions on the Hero's Path in The Legend of Zelda: Breath of the Wild, fixes the teleport bug in The Legend of Zelda: Tears of the Kingdom, fixes the grey Luigi in Luigi's Mansion 3, and may also improve rendering in other games that rely on redundant register writes.
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3712
Reviewed-by: Lizzie <lizzie@eden-emu.dev >
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
Co-authored-by: MaranBr <maranbr@outlook.com >
Co-committed-by: MaranBr <maranbr@outlook.com >
2026-03-17 19:53:28 +01:00
lizzie
c70b857c4f
[video_core/engines] Macro HLE inline ( #3653 )
...
Should slightly boost perf on android, Desktop is mainly unaffected (for now)
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3653
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
Reviewed-by: DraVee <chimera@dravee.dev >
Co-authored-by: lizzie <lizzie@eden-emu.dev >
Co-committed-by: lizzie <lizzie@eden-emu.dev >
2026-03-06 15:04:38 +01:00
CamilleLaVey
51cc1bc6be
[scheduler, dma, maxwell] Reduce CPU stalls in the GPU command processing pipeline through multiple targeted optimizations ( #3296 )
...
- Scheduler: Reduced lock scope to allow parallel command preparation across channels
- DmaPusher: Added command prefetching (16-command lookahead) to improve cache hit rate
- Maxwell3D: Pre-allocated macro parameter vectors to eliminate dynamic allocations and unrolls dirty register tracking loop for better cache locality
- MacroEngine: Added last-executed macro cache to skip hash table lookups on hot path
Co-authored-by: lizzie <lizzie@eden-emu.dev >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3296
Reviewed-by: Maufeat <sahyno1996@gmail.com >
Reviewed-by: DraVee <dravee@eden-emu.dev >
Co-authored-by: CamilleLaVey <camillelavey99@gmail.com >
Co-committed-by: CamilleLaVey <camillelavey99@gmail.com >
2026-01-18 03:45:18 +01:00
lizzie
83a28dc251
[common, core] remove uneeded memory indirection overhead at startup ( #3306 )
...
for core stuff:
just remove unique ptrs that dont need any pointer stability at all (afterall its an allocation within an allocation so yeah)
for fibers:
Main reasoning behind this is because virtualBuffer<> is stupidly fucking expensive and it also clutters my fstat view
ALSO mmap is a syscall, syscalls are bad for performance or whatever
ALSO std::vector<> is better suited for handling this kind of "fixed size thing where its like big but not THAT big" (512 KiB isn't going to kill your memory usage for each fiber...)
for core.cpp stuff
- inlines stuff into std::optional<> as opposed to std::unique_ptr<> (because yknow, we are making the Impl from an unique_ptr, allocating within an allocation is unnecessary)
- reorganizes the structures a bit so padding doesnt screw us up (it's not perfect but eh saves a measly 44 bytes)
- removes unused/dead code
- uses std::vector<> instead of std::deque<>
no perf impact expected, maybe some initialisation boost but very minimal impact nonethless
lto gets rid of most calls anyways - the heavy issue is with shared_ptr and the cache coherency from the atomics... but i clumped them together because well, they kinda do not suffer from cache coherency - hopefully not a mistake
this balloons the size of Impl to about 1.67 MB - which is fine because we throw it in the stack anyways
REST OF INTERFACES: most of them ballooned in size as well, but overhead is ok since its an allocation within an alloc, no stack is used (when it comes to storing these i mean)
Signed-off-by: lizzie lizzie@eden-emu.dev
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3306
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
Co-authored-by: lizzie <lizzie@eden-emu.dev >
Co-committed-by: lizzie <lizzie@eden-emu.dev >
2026-01-16 23:39:16 +01:00
lizzie
191e4c75a1
[meta] fix license headers ( #2547 )
...
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2547
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
Co-authored-by: lizzie <lizzie@eden-emu.dev >
Co-committed-by: lizzie <lizzie@eden-emu.dev >
2025-09-21 21:58:59 +02:00
lizzie
9d2681ecc9
[cmake] enable clang-cl and WoA builds ( #348 )
...
Compilation and CMake fixes for both Windows on ARM and clang-cl, meaning Windows can now be built on both MSVC and clang on both amd64 and aarch64.
Compiling on clang is *dramatically* faster so this should be useful for CI.
Co-authored-by: crueter <crueter@eden-emu.dev >
Co-authored-by: crueter <crueter@crueter.xyz >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/348
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
Reviewed-by: crueter <crueter@eden-emu.dev >
Co-authored-by: lizzie <lizzie@eden-emu.dev >
Co-committed-by: lizzie <lizzie@eden-emu.dev >
2025-09-09 20:47:49 +02:00
FearlessTobi
4d55e58ee4
scope_exit: Make constexpr
...
Allows the use of the macro in constexpr-contexts.
Also avoids some potential problems when nesting braces inside it.
2024-02-19 16:00:46 +01:00
Fernando Sahmkow
241c64e43b
Core: Eliminate core/memory dependancies.
2024-01-18 21:12:30 -05:00
Ameer J
d5b1a5f27d
OpenGL: Add GL_PRIMITIVES_GENERATED and GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN queries
2023-12-19 17:32:31 -05:00
Fernando Sahmkow
6bf827f4e9
Buffer Cache: Eliminate clears on Indirect buffers
2023-11-18 19:26:14 +01:00
Fernando Sahmkow
170c82ae7f
Query Cache: Fix guest side sample counting
2023-09-23 23:05:30 +02:00
Fernando Sahmkow
93cd3d8efd
Query Cache: address issues
2023-09-23 23:05:30 +02:00
Fernando Sahmkow
5ea12207f3
Query Cachge: Fully rework Vulkan's query cache
2023-09-23 23:05:29 +02:00
Fernando Sahmkow
a571250875
Maxwell3D: Improve Index buffer size estimation.
2023-08-27 22:14:37 +02:00
Kelebek1
42638691b5
Use spans over guest memory where possible instead of copying data.
2023-07-02 23:09:48 +01:00
bunnei
ac32fd08e9
android: video_core: Disable some problematic things on GPU Normal.
2023-06-03 00:06:00 -07:00
Fernando Sahmkow
3595172637
Maxwell3D: only update parameters on High
2023-04-29 00:18:21 +02:00
Liam
b84bab419c
maxwell_3d: fix out of bounds array access in size estimation
2023-04-22 10:35:26 -04:00
bunnei
59199a3db3
Merge pull request #9802 from Kelebek1/wait_data_cache
...
Re-add the invalidate_texture_data_cache register
2023-02-16 12:27:24 -08:00
Kelebek1
2d86d111fa
Reimplement the invalidate_texture_data_cache register
2023-02-14 19:34:10 +00:00
arades79
60a68839ee
remove static from pointer sized or smaller types for aesthetics, change constexpr static to static constexpr for consistency
...
Signed-off-by: arades79 <scravers@protonmail.com >
2023-02-14 12:35:39 -05:00
arades79
adcef452e0
add static lifetime to constexpr values to force compile time evaluation where possible
...
Signed-off-by: arades79 <scravers@protonmail.com >
2023-02-14 12:33:11 -05:00
liamwhite
1bd93d9f3b
Merge pull request #9556 from vonchenplus/draw_texture
...
video_core: Implement maxwell3d draw texture method
2023-01-19 14:58:53 -05:00
Kelebek1
1b8f2ddbe7
Demote maxwell3d Firmware4 call log to debug
2023-01-18 01:59:11 +00:00
Fernando Sahmkow
8eafb91af0
video_core: Cache GPU internal writes.
2023-01-05 05:23:39 -05:00
Feng Chen
79268b94de
video_core: Implement maxwell3d draw texture method
2023-01-05 12:41:28 +08:00
Fernando Sahmkow
1fdf24a081
Video_core: Address feedback
2023-01-04 14:39:42 -05:00
Fernando Sahmkow
ea140a70fa
Rasterizer: Setup skeleton for Host Conditional rendering
2023-01-01 16:43:58 -05:00
Fernando Sahmkow
67a706d812
Vulkan: Implement Dynamic State 3
2023-01-01 16:43:58 -05:00
Fernando Sahmkow
af68dc011b
Vulkan Implement Dynamic State 2 LogicOp and PatchVertices
2023-01-01 16:43:58 -05:00
Fernando Sahmkow
4bf1ee5bdc
DMAPusher: Improve collection of non executing methods
2023-01-01 16:43:57 -05:00
Fernando Sahmkow
d2643a61c3
Revert Buffer cache changes and setup additional macros.
2023-01-01 16:43:57 -05:00
Fernando Sahmkow
12a76465b9
MacroHLE: Reduce massive calculations on sizing estimation.
2023-01-01 16:43:57 -05:00
Fernando Sahmkow
7842543573
MacroHLE: Add HLE replacement for base vertex and base instance.
2023-01-01 16:43:57 -05:00
Fernando Sahmkow
209ce46a9f
MacroHLE: Add Index Buffer size estimation.
2023-01-01 16:43:57 -05:00
Fernando Sahmkow
b4fcb0b2b2
MacroHLE: Refactor MacroHLE system.
2023-01-01 16:43:57 -05:00
Fernando Sahmkow
b5b0ec9429
MacroHLE: Implement DrawIndexedIndirect & DrawArraysIndirect.
2023-01-01 16:43:57 -05:00
Fernando S
b9ebc10680
Merge pull request #9401 from vonchenplus/draw_manager
...
video_core: Implement maxwell3d draw manager and split draw logic
2022-12-08 12:41:39 +01:00
Feng Chen
ad05d9fe1e
video_core: Implement maxwell3d draw manager and split draw logic
2022-12-08 10:12:19 +08:00
liamwhite
22c925b1b4
Merge pull request #9360 from Kelebek1/R-E-S-P-E-C-T
...
Respect render mode override
2022-12-05 22:17:22 -05:00
liamwhite
dc25fddedb
Merge pull request #9353 from vonchenplus/draw_indexed
...
video_core: Fine tuning the index drawing judgment logic
2022-12-03 10:43:34 -05:00
Feng Chen
f7e82d2fd6
video_core: Fine tuning the index drawing judgment logic
2022-12-01 19:14:58 +08:00
Kelebek1
bb10e5e6eb
Respect render mode override
2022-11-30 01:43:36 +00:00
Lioncash
0d9c723df4
engines: Remove unnecessary casts
...
In a few cases we have some casts that can be trivially removed.
2022-11-29 08:38:46 -05:00
liamwhite
0f9aee1f8a
Merge pull request #9288 from vonchenplus/deferred_draw
...
video_core: Fine tune maxwell drawing trigger mechanism
2022-11-26 09:35:45 -05:00
Fernando Sahmkow
b3708b0a5b
GPU: Fix buffer cache issue, engine upload not inlining memory in multiline and pessismistic invalidation.
2022-11-24 20:57:16 +01:00
FengChen
607a965c57
video_core: Optimize maxwell drawing trigger mechanism
2022-11-22 17:53:26 +08:00
Liam
e219606128
maxwell3d: full HLE for multi-layer clears
2022-11-17 08:31:43 -05:00
Kelebek1
a5b76126e1
Fix regs regression with OpenGL two-sided stencil, and re-add data invalidation reg
2022-11-11 04:04:36 +00:00
FengChen
3e0cc4fd75
video_core: Fix drawing trigger mechanism regression
2022-10-31 21:57:38 +08:00