github Coder787-source/KytyPlus v5.1

latest release: KytyPlus-2026-10-26-636bc95
2 hours ago

KytyPlus v5.1

Two changes aimed at the same class of failure: running out of graphics memory, and a shader
that a Mac driver simply refuses to build.

Making room for a large texture (issue #17)

  • A cached texture is now evicted to fit a new one, instead of the allocation being refused.
    The periodic collector was gated on usage thresholds and freed at most 10, 20 or 40 images per
    pass, so a title asking for one big allocation at a scene transition could be refused while
    hundreds of stale textures sat in the cache. Inserting an image now checks what the device
    reports as free, and evicts least-recently-used textures until the request fits with headroom.
  • The headroom is deliberate. The driver still needs memory for its own page tables and
    staging, so the target is not the last byte of the heap; aiming at that trades this failure for
    a worse one later in the same frame.
  • The previous release could only trim buffers from this point, because image creation happens
    while the texture cache lock is held and calling the collector from there would have deadlocked.
    The eviction now runs where the lock is already held, which is what makes it possible at all.
  • This is still containment. If nothing is reclaimable the run ends as before, and nothing here
    explains why memory fills up. On an 8 GB card a title that genuinely needs more will now thrash
    rather than abort, which gets further but is not a fix.

Apple Silicon: vertex shaders that use lane operations (issue #18)

  • Metal cannot compile a subgroup operation into a vertex, tessellation or geometry function at
    all
    - not a missing feature, a hard refusal - and a Unity title on an M1 was dying at pipeline
    creation because the recompiler emitted gl_SubgroupInvocationID and friends there. Those stages
    now emit as a wave of one lane: the lane index is zero, a shuffle returns the value in hand, a
    ballot reports only the invoking lane, and the subgroup barrier is dropped.
  • Pixel and compute shaders are unchanged, since Metal supports subgroups in both. Windows and
    Linux are unaffected by construction - the fallback is compiled in only for Apple.
  • This is a degradation, not an emulation. A title that genuinely exchanges data between
    vertex invocations will render incorrectly where it used to stop running. That is the only
    option Metal leaves, and rendering something is the better failure.

Known issues

  • Device-memory exhaustion is still the open problem. The vkQueueSubmit variant of it is not
    addressed by this release, and the eviction here has not been run against Demon's Souls - no
    copy of it is installed here, so the next report from that title is the real test.
  • The upscaler options in the launcher currently do nothing. FSR method, quality and render
    scale are read from the configuration but have no call sites in the present path, so output is a
    single blit at the window size. Claims about upscaled resolutions should not be made yet.
  • PS5 packages that are encrypted still cannot be installed, unchanged: retail package keys are
    not available, so only packages carrying the plain or debug marker get through.

Don't miss a new KytyPlus release

NewReleases is sending notifications on new releases.