Commit graph

228 commits

Author SHA1 Message Date
MaranBr
c725641f13
[video_core] Fix fast buffers without performance loss (#2605)
Fixes games that have some elements flickering on the screen, such as Kirby Star Allies and others, without impacting performance.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2605
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Co-authored-by: MaranBr <maranbr@outlook.com>
Co-committed-by: MaranBr <maranbr@outlook.com>
2025-09-28 07:29:19 +02:00
MaranBr
19eb8272b1
[video_core] Fix a bug in buffer cache that caused flickering in some games when using fast buffering (#2584)
This fixes a bug in the buffer cache that caused flickering in some games when using fast buffering. This fixes Kirby Star Allies, Yoshi's Crafted World, and possibly many others.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2584
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Co-authored-by: MaranBr <maranbr@outlook.com>
Co-committed-by: MaranBr <maranbr@outlook.com>
2025-09-26 05:13:08 +02: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
crueter
f1e74f6855
[meta] remove MicroProfile (#185)
Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/185
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
2025-08-06 07:48:11 +02:00
Maufeat
77a8f7b6a7
[vk, hle] fix storage buffer cache, unstubbed TryPopFriendInvitation (#129)
This fixes Jamboree + unstubes friend invitation channel which spammed a lot while testing jamboree.

Culprit was: #2

Co-authored-by: Maufeat <sahyno1996@gmail.com>
Co-authored-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/129
Co-authored-by: Maufeat <maufeat@eden-emu.dev>
Co-committed-by: Maufeat <maufeat@eden-emu.dev>
2025-07-27 02:37:29 +02:00
Ghost
c47f6615d3
[vk, opengl] Prevent GPU draw call if CBUF binding fails (cbuf0 error handling) (#2)
Add defensive checks to cancel draw calls early if any graphics storage buffer (CBUF) fails to bind properly.

- Modified BindGraphicsStorageBuffer to return false on invalid buffer ID.,
- ConfigureImpl (both OpenGL and Vulkan) now propagates binding failure.,
- Pipeline::Configure returns false if CBUF binding fails.,
- PrepareDraw cancels rendering if pipeline configuration fails.,

This avoids undefined GPU behavior, draw corruption, or crashes caused by uninitialized or invalid constant buffer (CBUF0) access, particularly in games with faulty or missing shader bindings.
Eden Collaborator: <edencollaborator@eden-emu.org>
Authored-by: CamilleLaVey <camillelavey@eden-emu.org>
Signed-off-by: Bix <bix@bixed.xyz>

Co-authored-by: Bix <114880614+Bixbr@users.noreply.github.com>
Co-authored-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2
Co-authored-by: Ghost <>
Co-committed-by: Ghost <>
2025-07-13 19:27:39 +02:00
CamilleLaVey
cd394fc40f revert [android] Snapdragon 865 patches (#23)
revert [android] Snapdragon 865 patches (#23)

Co-authored-by: Aleksandr Popovich <alekpopo@pm.me>
Reviewed-on: https://git.bixed.xyz/Bix/eden/pulls/23

Reverted due to heavy performance hits on Android with higher specifications, will be adjusted to be included in a specific build for older A6XX devices, as 855, 860, 865, 870, meanwhile it does fix critical issues with certain games crashing due to memory and VRAM usage, hits performance on SoC that can do it without this special flags.
2025-07-12 20:10:40 +02:00
crueter
444109c251 [android] Snapdragon 865 patches (#23)
Co-authored-by: Aleksandr Popovich <alekpopo@pm.me>
Reviewed-on: https://git.bixed.xyz/Bix/eden/pulls/23
2025-07-06 18:20:21 +00:00
Gamer64
a002730d68
[VK] Rework SPIRV Shader Optimization (#238)
The actual SPIRV Shader Optimization option doesn't seem to do anything as long as it isn't vinculed, so let's rework it to make it work

Co-authored-by: Gamer64 <76565986+Gamer64ytb@users.noreply.github.com>
Co-authored-by: echosys <echosys@noreply.localhost>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/238
2025-07-03 01:13:33 +00:00
CamilleLaVey
fa600b88b1 revert 91a662431c (#240)
revert [Texture_cache] Better memory handling for devices with lower memory allocations (#233)

Means games like Minecraft Dungeons, Sea of Stars, Luigi Mansion 2, Astroneer, Alan Wake, etc are now playable.
It also cleans up the recent abi.cpp and bindless texture commits a bit.
Everything is in #ifdef ANDROID - The biggest change is CACHING_PAGEBITS = 12.
Without that the way the buffercache grows and joins buffers can cause Android to run out of memory (as you end up with just one big buffer that needs to be copied every time it grows)
Also patches up ffmpeg issues.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/233
Co-authored-by: JPikachu <jpikachu.eden@gmail.com>
Co-committed-by: JPikachu <jpikachu.eden@gmail.com>

Had showed some regressions on devices with higher specifications, will be refined to return as a toggle in a later commit.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/240
2025-06-30 12:57:21 +00:00
JPikachu
91a662431c [Texture_cache] Better memory handling for devices with lower memory allocations (#233)
Means games like Minecraft Dungeons, Sea of Stars, Luigi Mansion 2, Astroneer, Alan Wake, etc are now playable.
It also cleans up the recent abi.cpp and bindless texture commits a bit.
Everything is in #ifdef ANDROID - The biggest change is CACHING_PAGEBITS = 12.
Without that the way the buffercache grows and joins buffers can cause Android to run out of memory (as you end up with just one big buffer that needs to be copied every time it grows)
Also patches up ffmpeg issues.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/233
Co-authored-by: JPikachu <jpikachu.eden@gmail.com>
Co-committed-by: JPikachu <jpikachu.eden@gmail.com>
2025-06-29 17:14:23 +00:00
liamwhite
5f2369bba6 general: workarounds for SMMU syncing issues (#12749) 2024-02-27 15:42:15 +01:00
liamwhite
c98e01cee8 buffer_cache: avoid overflow in usage tracker (#13166) 2024-02-27 15:39:11 +01:00
Matías Locatti
40497ab00f Merge pull request #10529 from liamwhite/critical-spacing
caches: make critical reclamation less eager and possible in more cases
2024-02-20 23:19:27 -03:00
Liam
02430ed002 buffer_cache: use mapped range with large vertex buffer size 2024-02-13 08:27:33 -05:00
Liam
e882f6c1c3 caches: make critical reclamation less eager and possible in more cases 2024-02-11 13:41:13 -05:00
Fernando Sahmkow
758d895408 Common: Rename SplitRangeSet to OverlapRangeSet 2024-02-05 23:01:17 +01:00
Fernando Sahmkow
80d505b5cf Buffer Cache: Refactor to use Range sets instead 2024-02-05 11:06:52 +01:00
Fernando Sahmkow
4d97c54676 VideoCore: Move Slot Vector to Common 2024-02-04 20:01:47 +01:00
Fernando Sahmkow
241c64e43b Core: Eliminate core/memory dependancies. 2024-01-18 21:12:30 -05:00
Fernando Sahmkow
b206089ea7 Core: Clang format and other small issues. 2024-01-18 21:12:30 -05:00
Fernando Sahmkow
9db159da71 SMMU: Initial adaptation to video_core. 2024-01-18 21:12:30 -05:00
Viktor Szépe
e895ebb546 Fix typos in video_core 2024-01-07 22:44:55 +00:00
liamwhite
4504ee7f28 Revert "video_core: use interval map for page count tracking" 2023-12-17 18:59:49 -05:00
Liam
7fa76caf80 video_core: use interval map for page count tracking 2023-12-14 21:54:36 -05:00
liamwhite
95ad671ce9 Merge pull request #12194 from liamwhite/fruit-company
video_core: fix mac compile
2023-11-29 12:33:41 -05:00
Ameer J
a9e011c9c2 Merge branch 'master' into ssbo-align 2023-11-26 21:08:53 -05:00
Liam
bd250e303f video_core: fix mac compile 2023-11-26 20:04:06 -05:00
Fernando S
896ae72dbf Merge pull request #11535 from GPUCode/upload_cmdbuf
renderer_vulkan: Introduce separate cmd buffer for uploads
2023-11-26 18:33:05 +01:00
Fernando Sahmkow
6bf827f4e9 Buffer Cache: Eliminate clears on Indirect buffers 2023-11-18 19:26:14 +01:00
GPUCode
4b853ff5cf renderer_vulkan: Introduce separate cmd buffer for uploads 2023-11-12 20:27:39 +01:00
Ameer J
b49639e786 shader_recompiler: Align SSBO offsets in GlobalMemory functions 2023-10-31 20:14:18 -04:00
Ameer J
f4848349b5 buffer_cache: Apply storage buffer alignment only to the offset 2023-10-31 20:10:54 -04:00
Ameer J
e538b932de shader_recompiler: Align SSBO offsets to meet host requirements
Co-Authored-By: Billy Laws <blaws05@gmail.com>
2023-10-31 20:10:54 -04:00
Kelebek1
5d26c3791b Add missing dowhile loops around FindBuffer calls 2023-10-23 15:08:56 +01:00
liamwhite
97c9b2eda6 Merge pull request #11349 from vonchenplus/buffer_cache_crash
video_core: Fix moltenvk crash on macos
2023-10-17 11:48:44 -04:00
Kelebek1
294ffa29cc Mark a buffer GPU modified after the buffers are confirmed, do not double synch them 2023-10-05 00:19:11 +01: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
47d921e04d Buffer Cache: fix discard writes. 2023-08-27 03:45:43 +02:00
Feng Chen
ce0c210173 video_core: set vertex buffer num to 16, because mvk have when using more than 16 2023-08-23 23:22:55 +08:00
GPUCode
7e9f75453f buffer_cache: Increase number of texture buffers 2023-07-15 23:09:58 +03:00
Kelebek1
42638691b5 Use spans over guest memory where possible instead of copying data. 2023-07-02 23:09:48 +01:00
Fernando Sahmkow
4f68a8f45a Memory Tracking: Optimize tracking to only use atomic writes when contested with the host GPU 2023-06-28 21:32:45 +02:00
Fernando Sahmkow
7ae0cdbb09 MemoryTracking: Initial setup of atomic writes. 2023-06-28 19:34:21 +02:00
Kelebek1
c7430e51e3 Remove memory allocations in some hot paths 2023-06-22 08:05:10 +01:00
Kelebek1
547e837f78 Synchronize vertex buffer even when it doesn't require binding 2023-06-17 17:47:00 -04:00
Morph
9da90de908 buffer_cache_base: Specify buffer type in HostBindings
Avoid reinterpret-casting from void pointer since the type is already known at compile time.
2023-06-13 00:59:42 -04:00
Kelebek1
ac23abacac Combine vertex/transform feedback buffer binding into a single call 2023-06-08 12:13:27 +01:00