97 Commits
Author SHA1 Message Date
XeniOS 632971092f [Metal] Remove backend telemetry 2026-06-19 10:21:44 +09:00
XeniOS 19ec1b2c40 [GPU/Metal] Keep shared memory tracked by default 2026-06-19 10:16:21 +09:00
XeniOS d197963cdc [GPU/Metal] Remove dead edram_load path and telemetry-only upload classification
Backend diet series, manifest items 1+3 (scratch/metal_backend_diet_manifest.md):

- GetOrCreateEdramLoadLibrary/GetOrCreateEdramLoadPipeline and their header
  declarations, member maps, and cleanup-only drains: the embedded
  edram_load_vs/ps MSL pipeline had no draw or resolve path caller anywhere
  in src/ (the hazard design doc had already flagged it dead; caveat
  updated to 'removed'). 302 lines.

- The telemetry-only re-derivation of the texture upload-compatibility
  classification in the texture cache (the third redundant computation of
  the route classification): its only outputs fed
  RecordTextureUploadCompatibility/ComputeBlocker; the real upload
  decisions (use_blit_upload/direct_uploads/repack) are computed elsewhere
  and untouched. The texture_upload_classification telemetry line now
  prints zeros; the recorders and their print plumbing stay for now (their
  removal is bundled with live telemetry formatting and belongs to the
  telemetry-extraction commit). 62 lines.

366 deletions, no behavior change on any draw/upload path.
2026-06-19 10:16:20 +09:00
XeniOS 7d08acae1a [Docs] Update hazard model design for implemented phases 2-4 and rollout order 2026-06-19 10:16:09 +09:00
Claude 546cf6bac8 [GPU/Metal] Implement hazard model phase 1: untracked shared memory with explicit fence edges
Wires the previously-unconsumed metal_backend_hazard_model cvars per
docs/metal_hazard_model_design.md and Apple's Game Porting Toolkit 4
synchronization guidance (producer stage = previous usage, consumer
stage = new usage; MTLFence orders encoders across command buffers on
one queue, so the standalone-command-buffer edges are fence-coverable
and events stay unnecessary on a single queue).

With metal_backend_hazard_model set, the shared-memory buffer is
created HazardTrackingModeUntracked - removing the driver's per-encoder
dependency analysis for the hottest buffer in the backend - and
ordering comes from explicit edges:

- Upload blit encoders update the shared-memory fence at end when they
  encoded copies (Blit producer); render encoders wait on creation
  before the Vertex/Object/Mesh stages (vertex+index fetch consumers),
  texture-cache untile compute encoders wait on creation (guest-source
  reads), and blit read dependencies wait unconditionally.
- The memexport DMA index copy splits the shared upload encoder when it
  already holds copies, since untracked buffers have no intra-encoder
  write-to-read ordering in a blit encoder.
- Direct host resolve dispatches wait before and update after their
  unscaled shared-memory destination writes (Dispatch producer).
- Memexport render writes keep their existing unconditional fence
  update at encoder end.

metal_backend_hazard_model_validate emits the same edges while driver
tracking stays on, for per-title soak testing with zero behavior
change; both modes report edge counts on the telemetry hazard_model
line. The residency-set side of the model (queue-resident shared
memory/EDRAM/bindless heaps/texture pool heaps with covered-resource
useResource/useHeap skips) already exists and is documented as such.

https://claude.ai/code/session_01H7PSbmf3he3m3kEcBEcJ4V
2026-06-19 10:15:46 +09:00
Claude bbe4822ad5 [GPU/Metal] Move native MSL pipeline creation off the draw thread and parallelize MSL translation
The native MSL path is the permanent renderer (MSC remains as the
correctness-parity baseline), so it gets the same treatment the MSC
helper pipelines just received:

- Native mesh (point/rect/quad list) and native tessellation pipelines
  are now created on the pipeline creation threads from inputs captured
  in the cache placeholder, including the EnsureNativeMslTranslationReady
  calls that previously ran the full translate+metallib compile on the
  draw thread per first use. Draws skip silently while pending and only
  log on genuine failure. NativeMeshPipelineState publishes through an
  atomic pipeline pointer like the other helper states; native and MSC
  tessellation share the request type and dispatch on the native_msl
  flag.

- Native MSL translation no longer serializes every creation thread on
  one global mutex around the single shared MslShaderTranslator:
  translation uses per-thread translators and disassembly scratch under
  the same per-shader striped locks as the DXBC path, and the
  install/compile step is covered by the stripe so the same translation
  is never built twice in parallel. The now-unused global
  shader_translation_mutex_ is removed.

- The command processor's draw-thread ucode analysis goes through a
  stripe-locked AnalyzeShaderUcode helper so it cannot race prewarm
  creation threads analyzing the same shader with the shared scratch
  buffer.

Safe to defer per draw because ConfigureNativeMslVariant is write-once:
the texture-sign variant is frozen on the translation before the getter
runs, so background translation cannot pick up a different variant.

Also relocate the hazard model design doc to docs/ (scratch/ is
gitignored) and point the metal_backend_hazard_model cvar text at it.
The doc records what is already implemented (heap-collapsed residency,
serial-gated batched useResource), the complete shared-memory buffer
consumer inventory with required fence edges, and the shadow-validated
rollout the cvars exist for.

https://claude.ai/code/session_01H7PSbmf3he3m3kEcBEcJ4V
2026-06-19 10:15:46 +09:00
Herman S. a34897f0a3 [APU] Upgrade to SDL3 2026-05-27 09:58:46 +09:00
Herman S. 719be21416 [APP/UI] Convert Qt to wxWidgets based native UI 2026-05-07 12:09:11 +09:00
Herman S. cfddfc4990 [Docs] Update build instructions / add macOS 2026-04-27 15:58:18 +09:00
Herman S. f0a2f1ffc5 [Build] Replace VULKAN_SDK toolchain with glslang / SPIRV-Tools 2026-04-22 16:17:56 +09:00
Herman S. 559007a741 [Build] Fix cross-compile Qt issues 2026-04-18 12:13:40 +09:00
Herman S. b15e6d7898 [Build] Fix python min version change lost in the merge 2026-04-18 12:13:39 +09:00
Herman S. 440c037404 [Build] Upgrade Qt to 6.10.1 2026-01-08 19:36:24 +09:00
Herman S. ed47ceb7a9 Revert "Require Python 3.10+"
This reverts commit 79e1a2b866.
2025-11-23 17:12:56 +09:00
Herman S. 1e02b83b3d Merge remote-tracking branch 'upstream/canary_experimental' into edge 2025-11-23 12:42:28 +09:00
Margen67 79e1a2b866 Require Python 3.10+
3.9 is EOL.
2025-11-20 03:53:41 -08:00
Herman S. 28e89a8a4d [UI] Implement achievement notification sound using Qt media player 2025-11-11 15:31:13 +09:00
Herman S. d4506204c7 [Build] Add support for building with VS2026 preview 2025-11-11 11:18:10 +09:00
Herman S. 774d3e9565 [Build] Upgrade to clang 21 2025-11-11 09:26:58 +09:00
Herman S. 4350091117 [Build] Remove gtk deps 2025-10-17 00:58:37 +09:00
Herman S. b53a620937 [Docs] Update building docs for Qt 2025-10-08 14:03:09 +09:00
Herman S. 213dcc2675 [UI] Convert to Qt 2025-10-04 12:22:24 +09:00
Herman S. b11d194c44 Xenia Canary -> Xenia Edge 2025-09-21 21:15:44 +09:00
Margen67 0b81604633 [xb] Remove useless version check
The version is already checked in xenia-build.
Add an actually useful 64-bit check.
2025-07-28 11:02:01 -07:00
Margen67 4b9509391a [3PP] Upgrade snappy to 1.2.2 2025-07-27 02:46:43 -07:00