Commit graph

365 commits

Author SHA1 Message Date
ed4b011cad fix more vulkan issues and remove vertex input (#117)
Co-authored-by: swurl <swurl@swurl.xyz>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/117
Co-authored-by: Aleksandr Popovich <alekpopo@pm.me>
Co-committed-by: Aleksandr Popovich <alekpopo@pm.me>
2025-05-19 21:28:16 +00:00
89c06a7383
fix vk extension removal
Signed-off-by: swurl <swurl@swurl.xyz>
2025-05-19 15:21:43 -04:00
049cc54f4c fixes vulkan issues and android settings (#105)
- removes provoking vertex, vertex input, dynamic state if not supported
- moves dynamic state to be a 0-3 slider and vertex input its own checkbox
- the rich presence was disabled on linux.
- there were duplicate settings in "edens veil"?
- weird behavior of the vertex input checkbox on per game setting
- adds xenoblade 2 to the d24 conversion control function
- adds the flush logs by line setting to android.
- adds the memory layout setting to android
- Adds the option to show building shaders on the android overlay.

Signed-off-by: Aleksandr Popovich <alekpopo@pm.me>
Co-authored-by: swurl <swurl@swurl.xyz>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/105
Co-authored-by: Aleksandr Popovich <alekpopo@pm.me>
Co-committed-by: Aleksandr Popovich <alekpopo@pm.me>
2025-05-17 20:22:25 +00:00
7e943732bf fix a large variety of issues (#101)
- GLASM/SPIR-V mixup on Android
- potential greenscreen fix (thx suyu)
- save memory layout and add 10gb/12gb options
- potential samsung gaming hub fix
- fix layout of controller UI
- fix default settings to sensible defaults.
- note to TotK that you should increase memory layout
- Error checking for Windows linking
- fix an IDE error
- improved migration system w/threading and busy indicator
- disabled citron migration for now
- replaced some user-facing legacy strings with eden
- Added 10GB and 12GB DRAM layouts
- Fix Android black screen issues
- add discord link & update FAQ/Quickstart
- update links in about page
- add back rich presence
- add Don't show again for desktop pre alpha banner
- add citron warning to android and polaris to desktop

Signed-off-by: swurl <swurl@swurl.xyz>
Co-authored-by: Pavel Barabanov <pavelbarabanov94@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/101
Co-authored-by: swurl <swurl@swurl.xyz>
Co-committed-by: swurl <swurl@swurl.xyz>
2025-05-11 23:58:25 +00:00
aa333e6fb1 Vulkan 1.4 and New Extensions (#93)
- Add descriptor_indexing, VIDS, provoking_vertex
- Fix up EDS
- Implement VK 1.4

Co-authored-by: JPikachu <jpikachu.eden@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/93
Co-authored-by: swurl <swurl@swurl.xyz>
Co-committed-by: swurl <swurl@swurl.xyz>
2025-05-09 14:19:51 +00:00
f786802b9b User Data Migration from Citron, Sudachi, and Yuzu (#91)
Includes citron, sudachi, yuzu

currently broken, because the eden dir is always made early?

Signed-off-by: swurl <swurl@swurl.xyz>

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/91
Co-authored-by: swurl <swurl@swurl.xyz>
Co-committed-by: swurl <swurl@swurl.xyz>
2025-05-08 22:16:07 +00:00
edendev
b01e20414f Readd Revert Problematic Commits 2025-05-04 08:24:54 +00:00
edendev
4181b53e19 revert Remove problematic commits
revert Remove problematic commits
2025-05-04 08:17:03 +00:00
b689d74bc9 Remove problematic commits 2025-05-03 16:01:11 -03:00
Briar
559eb0a488 renderer_vulkan: Use raw surface handles and improve release logic (#75)
Should fix or at least lessen the crashes when leaving runtime emulation on both Android / PC
Also, may have improved the time required to leave the game

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/75
Co-authored-by: Briar <205427297+icy-briar@users.noreply.github.com>
Co-committed-by: Briar <205427297+icy-briar@users.noreply.github.com>
2025-05-02 18:42:58 +00:00
7bd606bece Merge https://git.eden-emu.dev/eden-emu/eden 2025-04-30 16:19:06 -03:00
4cf41673ba Fix some issues in RAII 2025-04-30 03:57:11 -03:00
JPikachu
e57b12d020 vulkan_device: Fully disable dynamic state extensions/features when dyna_state = 0
If the user selects dynamic state = 0, force-disable all Vulkan dynamic state extensions and related struct fields.
This ensures compatibility with drivers and simplifies shader pipeline logic.

Also logs all removals for clarity.
2025-04-30 06:34:49 +00:00
04578ac5b6 fix syntax
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-30 06:34:49 +00:00
JPikachu
6abdda8072 vulkan_device: Remove must_emulate_scaled_formats = false for all Qualcomm and Arm processes 2025-04-30 06:34:49 +00:00
JPikachu
0de8f866db vulkan_device: Dynamically control scaled format emulation based on dynamic state setting fixing the "0" option
If the setting dyna_state is set to 0 (dynamic state disabled), must_emulate_scaled_formats is forced "true" for proper rendering.
If dyna_state is set to 1, 2, or 3 (dynamic state enabled), must_emulate_scaled_formats is forced "false" for proper dyna-state use.

This change applies globally after all device-specific quirks and is logged clearly at boot for easier debugging.
2025-04-30 06:34:49 +00:00
0b35e89ab9 Some RAII fixes 2025-04-28 16:27:54 -03:00
a58799aca7 Initial RAII implementation 2025-04-28 16:27:42 -03:00
b695ca5a2a Revert some wip changes 2025-04-28 16:14:42 -03:00
JPikachu
c64c404a2f Enable ExtendedDynamicState 3 2025-04-23 19:01:56 +01:00
edendev
e96383615b Fixed typo 2025-04-22 21:02:48 -07:00
edendev
8823f12f18 Enable ExtendedDynamicState 2 and other features 2025-04-22 20:59:02 -07:00
edendev
5080513a5e Enable ExtendedDynamicState 1 across platforms 2025-04-22 18:22:25 -07:00
Zephyron
728de0406e vulkan: Improve memory allocation robustness
Enhances the Vulkan memory allocator with better OOM handling and memory
alignment:

* Add memory recovery by cleaning up empty allocations before failing
* Implement proper fallback to non-device-local memory
* Simplify memory alignment handling for different vendors
* Add better error logging for allocation failures
* Add IsEmpty() helper to track unused allocations
* Fix alignment requirements for Adreno (4KB) vs other vendors

These changes improve the robustness of memory allocation, particularly
in low-memory situations, and streamline vendor-specific alignment
requirements.
2025-04-19 17:19:16 -03:00
Zephyron
389327d3f0 vulkan: Add Samsung driver workarounds
Add workarounds for Samsung Xclipse GPUs:

- Disable extendedDynamicState3ColorBlendEquation as it is broken in Samsung
  drivers, similar to AMD drivers
- Add Samsung's proprietary driver to the validated driver list for clock
  boosting
- Fix log message to indicate both AMD and Samsung drivers have broken
  color blend equation support

Remove stray logical OR operator from validated_driver condition.
2025-04-14 12:17:19 -03:00
e26a256a44 Fix Zephyron commits 2025-04-13 00:23:18 -03:00
Zephyron
777111dfb4 feat(video_core): Fix Linux compilation issues in Hybrid Memory Manager
- Added missing <thread> header for std::thread usage
- Added <fcntl.h> for O_CLOEXEC and O_NONBLOCK definitions
- Fixed struct initialization order in uffdio_copy to match declaration order

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:42:39 -03:00
Zephyron
34693001aa Add Windows support to Hybrid Memory Manager
This commit adds Windows-specific implementation of the fault-managed memory
system, providing similar functionality to the existing Linux/Android implementation.

Key changes:
- Added Windows-specific memory management using VirtualAlloc/VirtualFree
- Implemented Windows vectored exception handler for page fault handling
- Added proper memory protection and page fault handling on Windows
- Updated memory snapshot functionality to work on Windows
- Added proper cleanup of Windows-specific resources
- Fixed type conversion issues in memory management code
- Added proper error handling for Windows memory operations
- Fixed VRAM Memory Layout Mode to allow up to 12Gb

The implementation uses Windows-specific APIs:
- VirtualAlloc/VirtualFree for memory management
- AddVectoredExceptionHandler for page fault handling
- VirtualProtect for memory protection management

This change maintains feature parity with the Linux/Android implementation
while using Windows-native APIs for better performance and reliability.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:42:24 -03:00
Zephyron
9615e910f9 feat(video_core): Implement HybridMemory for advanced Vulkan memory management
Adds a new cross-platform memory management system with enhanced capabilities:
- Fault-managed memory allocation for Linux/Android platforms
- Memory snapshot and differential snapshot support
- Predictive memory reuse tracking for optimized access patterns
- Vulkan compute buffer integration
- User-configurable settings for enabling features

The system integrates with the existing Vulkan renderer to provide more
efficient memory handling, especially for compute-intensive workloads.

Co-authored-by: boss.sfc <boss.sfc@citron-emu.org>
Co-committed-by: boss.sfc <boss.sfc@citron-emu.org>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-04-12 23:41:26 -03:00
9cef9f5dce Update fmt to allow for v11
Signed-off-by: swurl <swurl@swurl.xyz>
2025-04-10 01:11:22 +02:00
darktux
492d3856e8 Vulkan validation error fix.
Different image usage flags between image creation and image view
creation.
2025-04-04 03:40:48 +02:00
darktux
edff3d4adb Radeon gpu profiler detection support 2025-04-04 03:40:47 +02:00
yuzubot
f2aa821f94 "Merge Tagged PR 13178" 2024-03-03 13:02:49 +00:00
Narr the Reg
615cc06ca4 Merge pull request #13001 from liamwhite/scaled-availability
vulkan_device: don't use fixed cap for memory limits
2024-02-22 11:31:17 -06:00
Narr the Reg
091abdc5cb Merge pull request #13075 from liamwhite/mali-having-a-bad-time
shader_recompiler: throw on missing geometry streams in geometry shaders
2024-02-22 11:30:26 -06: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
Liam
749f0564ae shader_recompiler: throw on missing geometry streams in geometry shaders 2024-02-19 00:34:00 -05:00
Liam
a956f0f4f8 vulkan_device: don't use fixed cap for memory limits 2024-02-18 18:59:13 -05:00
Moonlacer
31200d0c7a Add Samsung Proprietary Driver ID to Reorder Pass
For RDNA-based Samsung Xclipse GPUs
2024-02-01 17:53:26 -06:00
liamwhite
bc857b4b5a Merge pull request #12439 from FireBurn/vkresult
Simplify VkResult lookup
2024-01-29 09:08:32 -05:00
Matías Locatti
fa47a39052 Demote Mesa dozen to the bottom of the device list 2024-01-24 23:36:14 -03:00
Mike Lothian
0a3c09f2f6 Simplify VkResult lookup 2024-01-22 03:10:43 +00:00
Viktor Szépe
e895ebb546 Fix typos in video_core 2024-01-07 22:44:55 +00:00
liamwhite
aec8115476 Merge pull request #12449 from liamwhite/debug-utils
renderer_vulkan: skip SetObjectNameEXT on unsupported driver
2023-12-26 11:45:39 -05:00
Liam
072c63ec91 renderer_vulkan: skip SetObjectNameEXT on unsupported driver 2023-12-23 11:08:02 -05:00
Liam
188916635a renderer_vulkan: demote format assert to error log 2023-12-23 11:04:02 -05:00
liamwhite
154009b915 Merge pull request #12414 from jbeich/vk274
externals: update Vulkan-Headers to v1.3.274
2023-12-20 12:46:50 -05:00
Fernando S
18b7ed6453 Merge pull request #12403 from liamwhite/clipdistance
shader_recompiler: use minimal clip distance array
2023-12-20 18:45:20 +01:00
Jan Beich
af5d54b6c8 vulkan_common: unbreak build with Vulkan-Headers 1.3.274
src/video_core/vulkan_common/vulkan_wrapper.cpp:293:13: error: enumeration value 'VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR' not handled in switch [-Werror,-Wswitch]
    switch (result) {
            ^~~~~~
2023-12-20 01:12:41 +01:00
Liam
6611ba122b shader_recompiler: ignore clip distances beyond driver support level 2023-12-18 22:25:14 -05:00