Skip to content

Latest commit

 

History

History
95 lines (74 loc) · 4.02 KB

File metadata and controls

95 lines (74 loc) · 4.02 KB

ReXGlue runtime

ReRevvedRecomp uses ReXGlue as its only runtime and GPU foundation. The root CMake project consumes the installed package from the sibling rexglue-sdk checkout. The driver never modifies that checkout.

Maintained baseline

The maintained fork adds the diagnostic trace and capture support used by this title. Its exact repository, commit, and installed package version are pinned in rexglue-sdk.lock.json. The manifest pins the compatible SDK interface version and the xenos GPU plugin.

The guest baseline is the retail default.xex at version 0.0.0.2 plus the matching private/default.xexp title update. ReXGlue applies that patch during code generation and launch, producing the maintained executable version 0.0.3.2 (game version 1.3, title ID 545407E5, media ID 7DC1293B). The matching version 1.3 files under private/Resource/Common/ are also required. All of these retail inputs remain ignored and are not distributed by this repository.

The accepted package configures, generates guest code, and builds the Release title. The deployment contains both rexruntime.dll and rexgpu-xenos.dll.

Runtime boundary

The supported launch uses the xenos plugin and the D3D12 ROV render-target path. That path reaches a usable game menu. Some GFx-composed content, including the title logo and some menu graphics, is absent. This is a runtime correctness boundary, not a build failure.

The settled guest behavior belongs in scaleform-gfx.md.

Presentation contract

The guest and ReXGlue both report a 1280x720 presentation. The front-buffer texture is a tiled 1280x720 k_8_8_8_8 texture. An intermediate D3D viewport may differ from scanout dimensions; the measured ReXGlue fetch remains 1280x720.

The title passes VdSwap a kernel-output command buffer. The kernel writes fetch constant 0 and a PM4_XE_SWAP packet, and ReXGlue executes that packet. The D3D12 path is:

  1. Copy-mode IssueDraw calls IssueCopy.
  2. The render-target cache derives the resolve destination, copies EDRAM into shared memory, and marks the destination range as GPU-written.
  3. Shared-memory watches invalidate overlapping texture data.
  4. RequestSwapTexture decodes fetch constant 0 and LoadTextureData refreshes the tiled texture from shared memory.
  5. IssueSwap applies the selected gamma ramp and submits the guest output to the presenter.

A GPU resolve must expose its destination to overlapping texture aliases. CPU writeback is needed only when guest CPU code must read the result. ReXGlue's graphics and VdSwap implementations retain their Xenia lineage.

Build and validation

The supported Windows build requires LLVM 18 or newer, Visual Studio 2022 Build Tools with the C++ workload and Windows SDK, CMake 3.25 or newer, Ninja, and Python 3.11 or newer. Keep the maintained SDK as a sibling checkout:

<workspace>/
|-- ReRevvedRecomp/
`-- rexglue-sdk/
cd <repo>; .\tools\rexglue.ps1 -SelfTest
cd <repo>; .\tools\rexglue.ps1 -Stage Codegen
cd <repo>; .\tools\rexglue.ps1 -Stage Build

The driver roots operations at the repository, locates Visual Studio 2022, checks the sibling checkout and installed package against the lock, and consumes only that package. Generated guest code lives under generated/default/. Build output, user data, caches, and logs are ignored.

A successful build proves compilation only. A runtime claim requires a captured milestone or an owner-observed visible result. -ProbeSeconds <n> bounds a smoke test. -Interactive waits for normal game exit.

Dependency and scope rules

  • Keep the SDK as a sibling checkout, never a submodule.
  • Update the SDK lock whenever the accepted fork commit changes.
  • Keep private/default.xex, private/default.xexp, and extracted version 1.3 assets ignored.
  • Begin visual validation with D3D12 ROV until another path is proven.
  • Treat import coverage and code generation as feasibility signals, not runtime correctness.
  • Preserve ReXGlue's BSD-3-Clause notices in combined distributions.