Commit Graph

816 Commits

Author SHA1 Message Date
NullVector 35ba01d696
Android: Start to fix up android for CI (#419) 2026-10-12 14:48:41 +10:30
NullVector b2cbc8866d
Android: Add a First-run setup, be able to download graphics driver a… (#418) 2026-10-12 14:48:29 +10:30
N3xoX1 eacc68191c
Scripts: fix missing :VCEnd label in shader header scripts (#417) 2026-10-11 23:02:01 +10:30
N3xoX1 c72f54cf2e
UI: new experimental look and feel (#416) 2026-10-11 23:01:45 +10:30
NullVector d200045196
Android: Add system and graphics settings (#414) 2026-10-11 23:01:25 +10:30
Bruno 493afb3c6f
Update macOS application icon (#415) 2026-10-11 22:14:45 +10:30
NullVector c4dbf526bc
Android: fix up forcing dark mode (#413) 2026-10-11 22:14:25 +10:30
NullVector e169491bd6
nxemu-os: add NetworkInstance instance in core and clean up interrupt_pipe_fd on Finalize (#412) 2026-10-11 22:14:11 +10:30
Bruno 8bc3dfbd50
Fix texture readbacks, incompatible copies and storage view caching (#411) 2026-10-11 22:13:57 +10:30
Bruno 7ec572edeb
Allow smaller main windows and reduce initial window width (#410) 2026-10-11 22:13:15 +10:30
N3xoX1 9f164e9bea
UI: stop about, controller and config from being re-sizeable (#409) 2026-10-11 22:12:36 +10:30
Richard 84570b3808
yuzu_video_core: add format alternatives for X8_D24_UNORM (#408)
Co-authored-by: Richard Caetano <25829688+Cor3Duo@users.noreply.github.com>
2026-10-11 22:12:17 +10:30
Richard 2a29431273
build: fix shader header scripts on multi-byte code pages (#407) 2026-10-11 22:10:18 +10:30
NullVector a71795a915
ui: so refreshing the device combo box no longer wipes the user's mappings back to defaults. (#406) 2026-10-11 22:09:54 +10:30
NullVector d1c5791fb0
Android: Jni was missing onOverlayButton (#405) 2026-10-10 21:24:36 +10:30
NullVector 45efeaf928
android: have OverlayLayoutActivity handle onWindowFocusChanged (#404) 2026-10-10 21:23:34 +10:30
NullVector 9ad3e3110d
Android: Add missing setStickValue function (#403) 2026-10-10 21:23:21 +10:30
NullVector 775b63bc77
android: Improve changing web theme (#402) 2026-10-10 20:50:19 +10:30
Bruno 3178a7f5ca
Improve multisample rendering paths (#395)
Handle multisample image conversions and resolves consistently. Reuse temporary resources and reduce repeated pipeline lookups.
2026-10-10 20:43:13 +10:30
N3xoX1 73c2d3500e
nxemu-os: NvMap::GetHandle should not use exceptions (#398) 2026-10-10 20:41:21 +10:30
N3xoX1 4def16fa22
Keep ROM scan state synchronized and Sciter DOM changes on the UI thread. (#399) 2026-10-10 20:40:23 +10:30
N3xoX1 73cdae1ff2
ui: change the app's logo (#400) 2026-10-10 20:39:36 +10:30
Bruno c32270c392
Fix guest states rendering (#391)
* Improve rendering accuracy

Handle a few guest states that were not rendered correctly.

* Refine buffer and shader handling
2026-10-10 00:57:26 +10:30
NullVector 25e78bd225
Android: do not set suboptimal on android (#394) 2026-10-10 00:35:33 +10:30
N3xoX1 ddbeaf3301
spec: Add DisplayConnection and WindowSystem to IRenderWindow (#388) 2026-10-10 00:32:00 +10:30
NullVector 07c61c9135
Android: remove touch pressed, just using the input overlay (#387) 2026-10-10 00:29:26 +10:30
N3xoX1 a304f5673c
lang: fix body > .footer (#385) 2026-10-10 00:29:02 +10:30
NullVector 02b8ad4b6e
Android: have IsVibrationEnabled use RunJNIOnFiber (#386) 2026-10-10 00:24:30 +10:30
N3xoX1 2b880938dc
yuzu_common: ignore fmt compile-time conditions that MSVC reports as C4127. (#389) 2026-10-10 00:22:33 +10:30
Bruno 57b81f46b5
Executable loading changes (#393)
Load ZBIC-compressed NSO modules with checked sizes and reads. Keep LZ4 support and ordinary ZSTD separate. Allow the embedded codec to build with AddressSanitizer.

Adapted from Eden PR #4482 by PavelBARABANOV and Eden contributors:
https://git.eden-emu.dev/eden-emu/eden/pulls/4482

The pinned ZBIC dependency comes from kinnay/zbic and retains its original notices.
2026-10-10 00:05:32 +10:30
Bruno 4a0bc1497c
Application data handling (#392)
Return checked application metadata and icons, handle early controller disconnects, and register limited StreamPlay interfaces for firmware 23 or newer.

NS and StreamPlay compatibility support adapted from Eden. Preserve its copyright and license notices.
2026-10-09 23:47:36 +10:30
Bruno 732d0c4cba
Improve graphics processing and resource management (#382)
Refine graphics processing and resource handling.
2026-10-09 23:33:59 +10:30
NullVector f208b8da46
Android: remove touch pressed, just using the input overlay (#384) 2026-10-09 10:17:13 +10:30
Bruno 243dac50fc
Improve rendering compatibility on macOS (#383)
Handle shaders the host cannot run as they are.
2026-10-09 10:01:06 +10:30
Bruno 3a25126d4f
Fix Super Mario Odyssey rendering corruption seen since #362 (#381)
Scene geometry was randomly replaced by large light triangles after loading on macOS. The corruption became frequent after #362.
2026-10-08 10:31:50 +10:30
N3xoX1 4c0e628dcc
lang: html should not use %% (#380) 2026-10-07 23:25:50 +10:30
Bruno e400c39ac6
Set all viewports and scissors when the viewport transform is disabled (#372)
Only viewport 0 and scissor 0 were set in this case. The pipeline uses every supported viewport, so the others kept old values. Fill them all with the surface clip.
2026-10-07 22:30:28 +10:30
Bruno 098eaa20d3
Share graphics pipelines between HLE macro keys and their twin (#369)
The HLE macro hint is part of the pipeline key, but it only changes the
shader code when a constant buffer value is replaced. When no value is
replaced, the pipeline is the same as the one without the hint, so it was
built twice.

Now the two keys share one pipeline in that case. Pipelines with a
replaced value are still built on their own.
2026-10-07 21:38:57 +10:30
Bruno 938e44d16a
Handle invalid texture handles when translating shaders (#368)
Games leave unused sampler slots with an invalid handle such as 0xFFFFFFFF.
The texture cache already binds a null image view for them, but the shader
environment read the texture type and format from memory past the texture
table, so the result depended on unrelated data and was stored in the
pipeline cache.
2026-10-07 21:38:08 +10:30
Bruno e30c654ef6
Fix macOS hang when closing the emulator after running a game (#366)
* Fix macOS hang when closing the emulator after running a game

On exit, the static g_time_zone_binary_romfs in nxemu-os still held a
loader-owned interface. Its destructor ran from exit() after the loader
module was destroyed, faulting on a dangling pointer. ResetTimeZoneBinary()
(called from ~TimeManager) now releases it while the loader is alive.

The fault turned into a permanent hang because dynarmic's macOS
MachHandler left its task-wide EXC_BAD_ACCESS port installed and its
detached pump thread running after the CPU module was unloaded. Any later
fault was sent to a port nobody served. The handler now saves and restores
the previous exception ports, destroys its receive right and joins the
pump thread on destruction.

* Restore signal handlers when the CPU module is unloaded on Linux/Android

The dynarmic POSIX handler (x86_64) and the NCE handlers (arm64) installed
SIGSEGV and related handlers from the CPU module and never removed them.
After the module is unloaded, a later fault would jump into unmapped code.
Save the previous handlers and restore them on teardown.
2026-10-07 21:35:57 +10:30
Bruno 0f6da343f4
Handle Vulkan graphics pipeline build failures (#364)
Publish completion separately from success, wake waiters after build failures and skip direct and indirect draws using an invalid pipeline. Restore rescaling constants when switching pipelines. Adapt Eden c51365dd91.
2026-10-07 21:34:35 +10:30
Bruno be889d661f
Fix NVN buffer descriptor mapping (#363)
Select global-memory buffers by their constant-buffer index and descriptor offset, rather than their position in the descriptor list. Preserve balanced GLASM conditionals and correct 64-bit storage exchange types. Keep existing address-load and range-check code. Adapt Eden fe2591888d.
2026-10-07 21:33:43 +10:30
Bruno 7b7dc386c8
Fix distant ARM64 memory fallback branches (#362)
Use an inverse local conditional branch followed by an unconditional branch for unbound or distant targets. Keep the original one-instruction form for bound near targets and preserve registers and NZCV. Adapt Eden 57c538a73d.
2026-10-07 21:32:58 +10:30
Bruno 97e12e0498
Fix composite framebuffer lifetime and conditional buffer retirement (#341)
Own deferred framebuffer and fence data, consume composition on the GPU worker, and cancel pending work safely during layer removal and shutdown. Wait outside the VI lock only when a framebuffer transition or deferred presentation is needed. Preserve acquired static layers and handle single-slot producer pressure without reusing released buffers. Retire completed requests promptly and avoid locking for empty waits.
2026-10-07 21:31:50 +10:30
Bruno 08da19bd2b
Fix stale viewport and scissor after surface clip change (#371)
Mark viewports dirty when the surface clip changes, and refresh scissors whenever viewports are updated. Both depend on the surface clip and the window origin.
2026-10-07 13:14:01 +10:30
Bruno 857b057471
Fix MapBufferEx regression introduced by #290 (#367)
The page_size check was too restrictive: an explicit big-page request on
an nvmap handle that is not big-page aligned failed instead of falling
back to small pages, which made system applets abort with fatal error
0x272.
2026-10-07 13:10:22 +10:30
Bruno da49c4c6e4
Flip the viewport for lower-left origin when the viewport transform is disabled (#373)
The normal viewport path already flips Y when the window origin is lower left. The disabled-transform path did not, so the image was upside down in that case.
2026-10-07 13:09:30 +10:30
Bruno 362dff4ba8
Fix stale stencil back face state (#370)
Always update both the front and back cached values. With one-sided stencil, the back cache now gets the front value, because both faces are set on the GPU.
2026-10-07 13:06:58 +10:30
Bruno 7d9129941b
Fix line rasterization and alpha multisample state (#374)
The line check was inverted, so the line state was set on every pipeline except lines. Detect lines from the output of the last stage before rasterization, and only use line modes the device supports. Line smoothing is ignored on multisampled targets, as in OpenGL.

Only enable alpha to one when the device supports it. Only enable alpha to coverage and alpha to one when the fragment shader writes color 0, and never together with smooth lines, which Vulkan does not allow.

Also use a line strip output in the generated layer passthrough geometry shader for line lists. It used a triangle strip and read a vertex that does not exist.
2026-10-07 12:20:37 +10:30
Bruno 59cee41375
Enable CPU/HLE synchronization by default (#375)
The option was off by default. Users can still turn it off in the settings.
2026-10-07 12:19:39 +10:30