Commit Graph

8601 Commits

Author SHA1 Message Date
MechaCat02
fea4ef31ec [Audit] handle-lifecycle XELOGKERNEL probes (cvar-gated)
New cvar `audit_handle_lifecycle` (Auditing group, default false).
When enabled, emits one-line XELOGKERNEL traces tagged AUDIT-HLC at:
  NtCreateEvent return, NtSetEvent entry, KeSetEvent entry,
  NtWaitForSingleObjectEx entry + completion,
  EmulateCPInterruptDPC entry.

Observation-only: zero-overhead when cvar off (single branch + flag
read). Intended for handle disambiguation between xenia-rs and
canary under the Wine cross-build oracle.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-07-12 15:43:22 +02:00
MechaCat02
ce67514572 [Build] Linux→Windows cross-compile toolchain (clang-cl + xwin)
New CMake preset `cross-win-clangcl` for Ninja Multi-Config on
non-Windows hosts. Toolchain: clang-cl (MSVC-ABI), lld-link, xwin SDK/CRT
splat. Shader compilation routes through wine fxc.exe with FXC_PATH
env forwarding and unix→Windows path translation via `winepath -w`.
Plus per-file build fixes (constexpr→const, llvm-rc forward-slash,
zlib-ng AVX guard, /RTCsu MSVC-only). third_party/snappy bumped to
fabi/sylpheed-crossbuild for the target-aware POSIX-gate header.

Produces `xenia_canary.exe` (Debug MSVC) suitable for use as the
audit oracle under Wine for xenia-rs work. See
docs/CROSS_BUILD_SETUP.md for the full reproduction recipe.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-07-12 15:43:22 +02:00
Gliniak
22d91c86e8 [Kernel] Restored yield in XAudioGetVoiceCategoryVolumeChangeMask
Thanks to latest change there is no need to use hardcoded nanosleep, so we can go back to previous stuff.
Hopefully it will fix some random issues with audio introduced lately
2026-07-10 22:52:51 +02:00
oreyg
6e5b8324f4 [APU] Pace audio subsystem 2026-07-08 19:24:32 +02:00
The-Little-Wolf
d804cf828a [Xam/Locale] - Sketchy Implementation of XamGetLanguageTypefacePatch
- Sketchy Implementation of XamGetLanguageTypefacePatch
2026-07-08 11:44:40 +02:00
goldislead
d119505289 [GPU] Texture integer scaling fetches; 8_8_8_8_GAMMA resolve
Integer num_format fetches now get their scale CPU-side instead of trying to guess in the shader. This is authoritative; no cvar. Both translators now use texture_integer_scale_bits after signs/gamma and before exponent bias. This alone fixes black screens and a bunch of rendering bugs across at least several dozen titles.

This new information lives in the updated FormatInfo table, including fixed component widths.

Resolve also has two new fixes.

8_8_8_8_GAMMA EDRAM sources can now decode through the PWL curve while still in linear space, before MSAA resolve or format conversion, then re-encoded for gamma destinations. This is also now default enabled via gamma_decode_pwl_resolve and has improved blowout in at least 4 titles, with no obvious regressions thus far.

Full resolve can also now pack fixed destinations according to copy_dest_number.
2026-07-06 20:51:02 +02:00
The-Little-Wolf
573cce0fe2 [Xam/Locale] - Implement XTLGetLanguageV2
- Implement XTLGetLanguageV2
- Used by Internet Explorer
2026-07-04 20:57:20 +02:00
Gliniak
e45c25c4c9 [XAM] Added check for UserSetting max ID 2026-07-04 20:25:18 +02:00
Adrian
35c513bfa2 [XAM] Fixed UserData reading incorrect variant type 2026-07-04 14:47:33 +02:00
Adrian
2c94e46727 [GPU] Reduce log spam from D3D12 pipeline 2026-07-03 18:24:32 +02:00
Gliniak
9588ce244d [CPU/X64] Preserve NaN bit during float->double, double->float conversion
Probably this should be moved to ppc_emit_memory level instead of being x86-64 specific

Was AI used in this change: Yes
2026-06-29 22:50:14 +02:00
Michael Oliver
9781a75a22 [GPU] Avoid stale texture state after invalidation
Check shared memory validity before marking textures up to date and installing watches. If the backing range was invalidated, leave the texture outdated so it can be reloaded later.
2026-06-29 10:16:20 +02:00
The-Little-Wolf
a421f8da52 [Xam/Info] - Implement XGetOverlappedExtendedError
- Implement XGetOverlappedExtendedError
2026-06-29 09:16:56 +02:00
Margen67
8b948d503f [CI] Upgrade cache action to v6 2026-06-27 22:11:44 -07:00
Adrian
1e7c1f6773 [VFS] Fixed opening files with incompatible access flags on posix 2026-06-27 00:06:24 +02:00
Margen67
0b4e6c440e [xb] Add VS2026 to vs_generator_map 2026-06-24 23:24:42 -07:00
Margen67
dd858e234c [CI] Cleanup
Use new archive input to rework artifacts.
Add runs-on and llvm_version inputs and ubuntu_base output to Lint so it can be passed to the Linux job.
Remove broken config input.
Upgrade Windows to VS2026.
2026-06-23 23:23:45 -07:00
Gliniak
2771366b8b [XAM] Simplified loader_data structure.
- Removed launch_data_present replaced with empty check

Fixed regression introduced in 269ee61845
2026-06-23 20:58:28 +02:00
Gliniak
9c8e34b29e [Kernel] Moved kernel memory allocation to proper location.
- Moved few globals to kernel memory range to prevent overuse of SystemHeapAlloc
2026-06-22 22:34:03 +02:00
Michael Oliver
0f281b6cb6 [CPU] fix vector store tests 2026-06-22 10:03:14 +02:00
Gliniak
b268292046 [Kernel] Use single page to store all Vd pointers and structs
This is to prevent some titles from reaching out of memory crash
2026-06-21 17:52:09 +02:00
Adrian
e7d0e45095 [XAM] Fixed returning error in XamLoaderGetLaunchDataSize 2026-06-19 20:01:08 +02:00
bomabomabomaboma
d55670e40b [GPU] Rolls back ZPD cache erasure on guest BEGIN. Only affects kFast. 2026-06-19 08:02:34 +02:00
Adrian
269ee61845 [XAM] Fixed returning error in XamLoaderGetLaunchData
Fixed Assassin's Creed switching xex on boot.
2026-06-18 13:25:18 +02:00
Gliniak
72ce130971 [CPU] Xbox360 cache line is always 128 bytes
Fixes: 4E4D07E0 & 4E4D083D
2026-06-14 13:38:01 +02:00
Michael Oliver
30ac9d7be6 [CPU] fix correct partial vector stores
Replace the x64 STVL/STVR lowering with explicit byte stores that preserve the
guest-visible vector byte order.

The previous vector shuffle/blend path could write incorrect bytes for partial
vector stores, which broke optimized guest memcpy implementations using
stvlx/stvrx for unaligned heads and tails. In 4156081C this corrupted skinned
model render command data and eventually caused render-thread crashes.

Add regression coverage for StoreVectorLeft/StoreVectorRight across common
unaligned offsets, plus a memcpy-head style case matching the affected guest
instruction pattern.
2026-06-11 21:14:23 +02:00
The-Little-Wolf
2027f50b6e [Xam/User_profile] - Add missing filenames & device types
- Add missing XTileType filenames
- Add missing device types
- Add XamLoaderLaunchTitle/Ex Flags
- Add ExThreadCreate flags and logging (from nukernel)
- Add more logging to user_module
- Add missing XamReadTileEx param
2026-06-11 20:37:55 +02:00
Gliniak
49c700b9c5 [XMP] Return success for XMPGetMediaSources with 0 sources
- Renamed XMPDashInIt to XMPDashInit
- Added broadcast to XMPDashInit
- Renamed some unknown fields of XMP_SET_MEDIA_SOURCE_WORKSPACE
2026-06-06 10:59:38 +02:00
Gliniak
99fd19d025 [XAM] Limit XContentQueryVolumeDeviceType to XContent packages
Some checks failed
Orchestrator / Commit Message Validation (push) Has been skipped
Orchestrator / Lint (push) Successful in 1m23s
Orchestrator / Windows (x86-64) (push) Failing after 5m18s
Orchestrator / Linux (x86-64) (push) Failing after 22m34s
Orchestrator / Create Release (push) Has been skipped
- Changed mount path for XContent packages from Cdrom to Package_0
Normally it should generate specific value instead of 0, but for now 0 is enough
2026-06-05 16:13:31 +02:00
Gliniak
9478cda5d6 [Kernel] Fixed issue with titles not booting due to lack of title id 2026-06-03 22:45:54 +02:00
Adrian
be6e53e383 [XAM] Fixed missing CreateFolder in XamWriteGamerTile
Fixed Rez HD failing to get past main menus in unlocked state.
2026-06-02 20:36:25 +02:00
bomabomabomaboma
73945c06d7 [GPU] Simplify ZPD cvars 2026-06-02 20:09:50 +02:00
bomabomabomaboma
fbd620c22b [GPU] Implement ZPD occlusion queries
Implements EVENT_WRITE_ZPD handling across shared CommandProcessor, D3D12, and Vulkan backends.

This adds a shared report lifecycle. Reports can span submissions/render passes, split into multiple segments, and asynchronously retire. Reports can also survive same-slot reuse, which is critical for titles that aggressively recycle against a small pool.

RTV/FBO use their respective host occlusion queries, whereas ROV/FSI use counter buffers instead, with shader helpers that are called from the translated PS, accumulating surviving MSAA sample coverage into active slots. Regardless of approach, results are copied to small, dedicated readbacks and fed through shared retirement.

Fast mode writes speculative values and patches in resolved results later. Strict mode waits for real results with a small retire backstop so it doesn't spin forever when a report gets weird. Fake mode's fundamentals are unchanged, it just now uses XenosZPDReport memory helpers like all the modes do.

Also adds optional sample count saturation for instances when attenuation isn't a one-for-one with real hardware, an optional alternate fast behavior that preserves cached zeroes (that can improve flare-heavy titles but might regress occlusion culling), and normalization for upscaling.

QueryBatch is still unsupported other than a fake path that's enabled when a range is set via cvar.
2026-05-30 19:26:25 +02:00
Gliniak
29311ddcdd [APU] Replaced min-max with clamp for queued frames 2026-05-26 22:58:46 +02:00
Gliniak
c5113acb9c [CPU] XexModule: Removed unused class member 2026-05-26 22:56:37 +02:00
The-Little-Wolf
7a5cb96c2e [XAM/INFO] - IPTV Initialization Setting
- Allow for initializing IPTV
- Stub XamGetDvrStorage
- Stub XamSetDvrStorage
2026-05-26 19:36:34 +02:00
Gliniak
7e98ae6de3 [XMA] Invalidate output buffer if there is nothing to process
- Fixes 565507E4 hardlock on boot
2026-05-26 09:27:02 +02:00
oreyg
505697f980 [APU] XmaContextNew: refine output buffer invalidation 2026-05-25 11:54:18 +02:00
Gliniak
02a0d697cb [Base] Added option to recursively search for file 2026-05-24 22:35:40 +02:00
Adrian
c48e0f29e5 [XAM] Implemented XUserAwardGamerPicture 2026-05-24 20:18:46 +02:00
The-Little-Wolf
a7e13e195b [Xam/Content] - Implement XamContentResolveInternal
- Implement XamContentResolveInternal
2026-05-23 20:21:55 +02:00
oreyg
09dbe2cd36 [APU] XmaContextNew: do not invalidate output_buffer_valid prematurely 2026-05-21 20:54:10 +02:00
Adrian
b2aa8b200a [BASE] Use FlushAllSinks instead of inline loop 2026-05-21 07:43:48 +02:00
Gliniak
a11908fa76 [XAM] Enable storing IPTV name.
Still needs to be exposed in UI (optional)
2026-05-19 23:31:53 +02:00
Gliniak
072ef7eff7 [XAM] Implemented XamGetOnlineLanguageAndCountry 2026-05-19 22:37:14 +02:00
Gliniak
9ce91e55fe [UI] Listed extended languages 2026-05-19 22:03:54 +02:00
Gliniak
99ea6da18a [XConfig] Implementation of XConfig 2026-05-19 07:50:16 +02:00
The-Little-Wolf
f88bfbe41e [Xam/Content] - Implement XamContentCreateEnumeratorInternal
- Implement XamContentCreateEnumeratorInternal
2026-05-18 20:30:38 +02:00
Gliniak
ef67d1ca3f [SMC] Removed std::bind usage in favor of lambda 2026-05-18 19:52:12 +02:00
Gliniak
482629a3b1 [XAM] Fixed issue with different param count in XamFormatDateString and XamFormatTimeString
In older dashes filetime is in r4 then output buffer in r5
but on newer it's in r3 and r4
2026-05-17 17:34:39 +02:00