158 Commits

Author SHA1 Message Date
Exzap
5f825a1fa8 Latte: Always allow views with the same format as base texture
Fixes crash/assert in VC N64 titles
2024-06-02 21:39:40 +02:00
Exzap
da8fd5b7c7 nn_save: Refactor and modernize code 2024-05-29 00:07:37 +02:00
Exzap
a059338890
Add initial NTAG and NFC implementation 2024-05-22 04:45:10 +02:00
goeiecool9999
523a1652df
OpenGL: Restore ProgramBinary cache for GL shaders (#1209) 2024-05-22 04:23:33 +02:00
GaryOderNichts
84e78088fb PPCCoreCallback: Add support for stack args if GPR limit is reached 2024-05-18 20:37:37 +02:00
Exzap
a16c37f0c5 coreinit: Rework thread creation
New implementation is much closer to console behavior. For example we didn't align the stack which would cause crashes in the Miiverse applet
2024-05-04 07:05:59 +02:00
goeiecool9999
5be98da0ac
OpenGL: Fix a crash when GL_VERSION is null (#1187) 2024-04-27 15:49:49 +02:00
goeiecool9999
84cad8b280
Vulkan: Remove unecessary present fence (#1166) 2024-04-11 06:41:57 +02:00
Exzap
fa8bab2f39 Latte: Add support for LOOP_START_NO_AL shader instruction
This instruction is used by Injustice: Gods Among Us and Project Zero

Also improved robustness of rendering to be less prone to crashing when a game tries to draw with broken shaders
2024-04-03 01:56:49 +02:00
Exzap
60adc38205 Latte: Add support for more fence conditions
MEM_OP_GREATER is required by Injustice: Gods Among Us
2024-04-03 01:56:49 +02:00
goeiecool9999
5230fcab37
Debugger: Fix infinite loop in symbol storage (#1134) 2024-03-27 11:14:01 +01:00
Exzap
4b7d2f88ae Latte: Enable colorbuffer optimization if gfx packs are aware
The optimization for colorbuffer resolution introduced in PR #706 is now enabled. This optimization changes the resolution of certain framebuffer textures, which may conflict with the texture resolution rules set by some graphic packs. As a result, if a graphic pack that specifies texture resolution rules is in use, the optimization will automatically be turned off to prevent any issues.

To circumvent this, graphic packs can now include the setting "colorbufferOptimizationAware = true" in their rules.txt. This setting indicates that the pack has been updated to handle the resolution changes introduced by the optimization. Cemu will allow the optimization to remain enabled if resolution packs have this flag set.
2024-03-25 21:35:38 +01:00
goeiecool9999
17060752b6
Vulkan: Several swapchain fixes and refactors (#1132) 2024-03-24 10:57:08 +01:00
goeiecool9999
42d14eec96
Minor code improvements (#1124) 2024-03-18 09:18:02 +01:00
goeiecool9999
eaa82817dd
Update thread names (#1120) 2024-03-15 23:06:48 +01:00
Exzap
731713de3a OpenGL: Remove "-legacy" flag
"Intel legacy mode" was a special mode to workaround various Intel OpenGL driver limitations during the earlier years of Cemu. It's been unmaintained for years and no longer serves a purpose.

If we ever bring back compatibility with ancient Intel GPUs it should be done in a more structured way than a blunt yes/no flag.
2024-03-14 03:11:04 +01:00
Exzap
193767e6cc Latte+Vulkan: Code cleanup
Besides a general cleanup:
- Remove deprecated resource destruction queues
- Move functionality from renderer into Latte base classes to deduplicate code
2024-03-14 01:10:52 +01:00
Exzap
bc04662525 Latte+GL+VK: Improve handling of gfx pack texture overwrite format
Graphic packs can overwrite the format of a texture (e.g. for higher bitdepth to lessen banding) but the code for this wasn't correctly working anymore.

- Fixes overwrite format being ignored for texture views on Vulkan backend
- Fixes overwrite format not being used for texture views on OpenGL

Format aliasing is complicated enough as it is, even without overwrites, so this adds a new rule to make behavior more well defined: If two textures share memory but only one uses an overwrite format, then they are no longer synchronized and are considered separate textures.

Bonus fixes for OpenGL:
- Use fbo 0 instead of -1 as the default. This silences some warnings in debug output
- On OpenGL, bind new framebuffers on handle generation so they are considered created
2024-03-13 02:41:42 +01:00
Exzap
8bc444bb97 Latte: Derive framebuffer size from correct mip of depth buffer 2024-03-12 16:16:52 +01:00
Exzap
6fa77feba3 Latte: Fix regression in dd7cb74 2024-03-12 05:53:31 +01:00
Exzap
a50e25300d Vulkan: Remove unused code path for texture copies
In 2020 we switched to drawcalls for texture copies replacing the copy-via-buffer path. It's not been used since so lets remove it
2024-03-11 23:01:37 +01:00
Exzap
1f9b89116f Vulkan: Fix crash during shutdown if shaders are still compiling
Make sure the async shader compiler threads are stopped before the shaders are deleted
2024-03-11 21:57:37 +01:00
Exzap
dd7cb74cd2 Latte: Small refactor and clean up for texture size code 2024-03-11 21:57:37 +01:00
goeiecool9999
e1435066ee
OpenGL: Fix crash related to wxWidgets handling of vsync (#1112) 2024-03-11 00:57:31 +01:00
Exzap
d9e8ca2c83 Revert "Vulkan: Update some code to use VK_KHR_synchronization2"
This reverts commit 8f1cd4f9255e16aeddb2e72d35a47f37e1e478bc.

We received reports from users stuck with Vulkan drivers from 2019. (E.g. Kepler on Windows). So let's not unnecessarily increase the Vulkan requirement for now and postpone this to after the next stable release
2024-03-09 02:38:08 +01:00
Exzap
ea68f787eb Vulkan: For MSAA surface copies make the target MSAA too
Fixes #1108
2024-03-08 14:45:02 +01:00
Exzap
9f9bc9865f Vulkan: Avoid calling vkCmdClearColorImage() on compressed textures
This is not allowed according to the spec and can crash drivers. Fixes #1100
2024-03-08 14:43:40 +01:00
Exzap
b8d81283e8 Vulkan: Remove unnecessary index buffer for backbuffer drawcall 2024-03-08 14:39:46 +01:00
Exzap
8f1cd4f925 Vulkan: Update some code to use VK_KHR_synchronization2 2024-03-08 14:39:46 +01:00
Exzap
72ce4838ea Latte: Optimize uniform register array size for known shaders 2024-02-20 10:57:05 +01:00
Exzap
96bbd3bd25 Latte: Avoid assert in texture view check 2024-02-20 10:57:05 +01:00
Mike Lothian
72aacbdcec Vulkan: Don't use glslang internal headers
Signed-off-by: Mike Lothian <mike@fireburn.co.uk>
2024-01-19 04:58:08 +01:00
Exzap
9b0a1d53dc Latte: Fix syntax error in generated GLSL 2024-01-14 23:40:29 +01:00
GaryOderNichts
4405116324
GDBStub: Support watchpoints on linux (#1030)
* GDBStub: Support watchpoints on linux
* GDBStub: Use `TCP_NODELAY`
2023-12-23 15:25:01 -08:00
Exzap
d2ba4e65c5 Latte: 1D views are compatible with 1D textures 2023-12-13 18:10:10 +01:00
Exzap
2167143c17 Latte: Support for SAMPLE_LB 2023-12-13 12:45:20 +01:00
Exzap
df282ab230 Latte: Clean up OpenGL relics in shared render code 2023-12-13 12:45:20 +01:00
Exzap
646835346c Latte: Refactor legacy OpenGL code for shader binding 2023-12-13 12:45:20 +01:00
Exzap
dee764473d Latte: Small refactor for GLSL texture coord handling
Also adds support for 2D textures coordinates with source as 0.0 or 1.0 literals instead of GPRs. Seen in shaders generated by CafeGLSL
2023-12-10 08:30:52 +01:00
Exzap
e7fa8ec0c6 Vulkan: Properly shut down compilation threads 2023-12-10 08:30:52 +01:00
Exzap
9398c0ca6b Latte: Simplify and fix texture copy 2023-12-10 08:30:52 +01:00
GaryOderNichts
5047c4d083
GDBStub: Fix checkSum string to int conversion (#1029) 2023-11-27 12:21:52 +01:00
Exzap
0d71885c88 nn_fp: Full rework of friend service 2023-10-17 05:26:30 +02:00
goeiecool9999
d4a2a8e8de
Vulkan: Cleanup image barrier code (#988) 2023-10-16 07:33:12 +02:00
Exzap
29c823fa1f Latte: Fix uniform size limit being too low 2023-10-02 19:05:44 +02:00
Exzap
757d458161 Compatibility with fmtlib 10.1.x 2023-10-02 18:53:00 +02:00
Exzap
ff9d180154 Code cleanup 2023-10-01 11:46:26 +02:00
Exzap
8bb7ce098c
Bump CI clang version to 15 + workaround for unsafe fiber optimizations (#982) 2023-09-29 17:17:28 +02:00
Exzap
abce406ee8 Refactor more wstring instances to utf8-encoded string 2023-09-29 06:48:10 +02:00
Exzap
f9f6206929 Vulkan: Add profiler for Vulkan API CPU cost
Disabled by default. Set VULKAN_API_CPU_BENCHMARK to 1 to enable
2023-09-29 06:48:10 +02:00