Skip to content

PS3Native Release V5

Choose a tag to compare

@thecrixux thecrixux released this 21 Sep 12:52
a090c52

PS3Native Experimental Community Build

DIS Frame Generation + Latest RPCS3 Upstream

⚠️ Experimental Community Pre-release

This is an unofficial community build intended for testing and feedback.
It combines the latest PS3Native Android development work, the experimental DIS Frame Generation implementation, and recent RPCS3 upstream changes.

Expect regressions or device-specific issues.


🚀 Major New Feature: DIS Frame Generation

A new DIS (Dense Inverse Search) Optical Flow frame generation engine is now included.

Unlike the Lossless Scaling implementation, DIS:

  • Does not require Lossless.dll
  • Is included directly in the application
  • Works on a fresh installation
  • Uses a Vulkan compute-based optical flow pipeline
  • Shares PS3Native's existing frame generation pacing system

The implementation is based on the DIS optical flow algorithm originally developed by Till Kroeger and the OpenCV DISOpticalFlow implementation, with Vulkan work derived from the implementation by qwertypower / DEVAR Entertainment and the WinNative port.

DIS Quality Presets

Three DIS quality modes are available:

  • Fast
  • Balanced
  • Quality

Higher settings increase the optical flow resolution and processing cost.


🎮 Frame Generation Engine Selector

Users can now choose between:

  • Lossless Scaling Frame Generation
  • DIS Frame Generation

Lossless Scaling keeps its existing flow-scale controls, while DIS uses its own quality selector.

DIS does not require an external DLL.


⚡ Frame Generation Pacing Improvements

Frame generation timing and pacing have received major improvements.

Changes include:

  • New windowed frame-time estimator
  • 128-entry timing history
  • Approximately one second of source-frame sampling
  • Improved handling of frame-time spikes
  • Hitch clipping
  • More stable frame generation scheduling
  • Better source/output refresh-rate matching
  • Near-integer frame ratio snapping
  • Declared source refresh-rate support using guest vblank information
  • Persistent cost-backoff logic
  • Additional frame generation telemetry

These changes are intended to improve scenarios such as:

  • 30 FPS → 60 Hz
  • 60 FPS → 120 Hz
  • High-refresh-rate Android displays

and reduce cases where generated frames could temporarily collapse or become unstable.


🧠 DIS Vulkan Pipeline Improvements

The DIS implementation includes a full Vulkan compute pipeline containing multiple stages for optical flow generation and frame interpolation.

Additional improvements include:

  • Runtime GLSL shader compilation
  • Multiple DIS compute shaders
  • Full swapchain-resolution processing
  • Improved resource lifetime management
  • GPU synchronization before rebuilding the DIS chain
  • Safer resource recreation
  • Memory binding validation
  • Increased internal DIS frame slots
  • Cleanup of unused internal state
  • Improved shader compilation logging
  • Improved status reporting
  • Correct DIS configuration refresh when switching engines

🖥️ Vulkan Frame Generation Support

Vulkan device configuration now requests additional features required by frame generation when supported.

Changes include:

  • VK_IMAGE_USAGE_TRANSFER_SRC_BIT support for swapchain images
  • Additional storage image format support
  • RG32F
  • R16F
  • Improved swapchain compatibility with Frame Generation

🔄 Latest RPCS3 Upstream Integration

This build integrates recent RPCS3 upstream development beyond the previous PS3Native sync point.


🎨 Vulkan Pipeline Cache Improvements

RPCS3's newer shared Vulkan pipeline cache system is included.

Changes include:

  • Shared Vulkan pipeline cache between pipeline compilation paths
  • Pipeline cache support for graphics pipelines
  • Pipeline cache support for compute pipelines
  • Improved shader pipeline reuse
  • Reduced duplication between Vulkan shader compilation paths
  • Updated Vulkan interpreter pipeline handling

The new upstream Vulkan pipeline-cache implementation has also been adapted to PS3Native's Android dynamic Vulkan loader.


🧩 Vulkan Shader Interpreter Improvements

Recent RPCS3 Vulkan shader interpreter work is included.

Changes include:

  • Expanded interpreter seed variants
  • Additional common shader format coverage
  • Removal of the old interpreter-specific private pipeline cache
  • Improved use of the common Vulkan pipeline cache
  • Pipeline linking improvements
  • Flat shading cleanup

🎮 RSX Improvements

Multiple recent RSX fixes and optimizations are included.

Notable changes include:

  • Improved render-target reuse during surface splitting
  • Fixes for flush prediction when using surface-cache targets with the blit engine
  • Additional render-target handling improvements
  • Vulkan synchronization improvements
  • Continued programmable blending improvements
  • Render-target and attachment handling fixes
  • RSX memory-safety fixes

🧮 ARM64 / SPU LLVM Fixes

Important SPU LLVM updates from RPCS3 are included.

Most notably:

  • Fixed float-to-integer saturation behavior on ARM64
  • Corrected CFLTS saturation behavior
  • Fix applies to both approximate and accurate xfloat paths

This is particularly relevant to Android ARM64 devices.

Additional SPU LLVM improvements include:

  • Cache/debug handling improvements
  • Removal of unreachable test_state / spu-null paths
  • Additional recompilation and optimization fixes

📂 File System Improvements

Recent RPCS3 file-system fixes are included, including:

  • sysFsReaddir fixes
  • Improved directory enumeration behavior
  • Additional VFS fixes

💿 ISO Loading Improvements

ISO handling includes several recent fixes:

  • Improved ISO validation
  • Better handling of missing ISO members
  • Safer logical EOF handling
  • Improved recovery from unreadable directory metadata
  • Additional malformed-image protections

📦 PKG Installation Improvements

Package handling includes additional validation and security improvements:

  • Path traversal protection
  • Directory entry validation
  • Improved malformed table handling
  • Safer allocation validation
  • Additional malformed PKG protections

🏆 Trophy Improvements

Recent RPCS3 trophy-system improvements are included, such as:

  • Trophy manager updates
  • Trophy overlay fixes
  • Additional trophy handling improvements

🚀 Startup and Performance Improvements

Additional upstream improvements include:

  • Fix for slow startup when BPM is enabled
  • Shader/pipeline cache improvements
  • RSX synchronization improvements
  • Reduced unnecessary SPU LLVM work
  • Various upstream performance and stability fixes

📱 Android Integration Updates

Several Android-specific compatibility changes were required to integrate the latest RPCS3 code.

RPCS3 Callback Architecture Migration

RPCS3 recently moved emulator callbacks away from the old Emulator-owned callback interface.

PS3Native has been updated from:

Emu.GetCallbacks() / Emu.SetCallbacks()

to the new upstream:

g_emu_callbacks

This keeps the Android frontend compatible with the latest RPCS3 architecture.

Android Vulkan Dynamic Loader Compatibility

New Vulkan calls introduced by upstream RPCS3 have been adapted to PS3Native's Android dynamic Vulkan loader.

This includes the new shared pipeline cache functions:

  • vkCreatePipelineCache
  • vkDestroyPipelineCache

using PS3Native's VK_GET_SYMBOL(...) system.


📲 Existing Android Development Improvements Included

This build also contains the recent PS3Native Android development work already present in the android-refresh branch.

Firmware Installation

  • Real-time firmware installation progress
  • Real-time PPU precompilation progress
  • Fixed Android callback/main-thread deadlock
  • Device screen remains awake during firmware installation and compilation

Android UI

  • Improved narrow-screen layouts
  • Better portrait-mode support
  • Improved settings layouts
  • Improved game-detail layouts
  • Safer handling of display cutouts and gesture areas
  • Navigation and layout improvements

Android ARM64 Performance

  • ARMv8.2-A optimizations
  • DotProd support
  • FP16 support
  • -O3 optimizations
  • CPU feature detection
  • Dynamic PPU precompile concurrency based on available RAM
  • Timer and RSX thread parking optimizations

Themes / UI

  • Old Steam-inspired theme
  • Improved dark-theme ComboBox readability

🧪 Testing Requested

Because this build combines experimental Frame Generation code with very recent RPCS3 upstream changes, community testing is highly appreciated.

Please include the following when reporting an issue:

  • Device
  • SoC / GPU
  • Android version
  • GPU driver
  • Game and Title ID
  • PS3Native settings
  • Frame Generation engine
  • DIS quality mode if applicable
  • Steps to reproduce
  • Logs whenever possible

Particularly useful tests:

  • Frame Generation disabled
  • Lossless Scaling FG
  • DIS Fast
  • DIS Balanced
  • DIS Quality
  • 30 → 60 FPS
  • 60 → 120 FPS
  • Switching FG engines
  • Vulkan-heavy games
  • Games sensitive to render-target handling
  • Long gameplay sessions
  • Surface recreation / app switching

Build Information

Branch: experimental-dis-rpcs3-20260921

Android compatibility integration: 1d12b2dc8

✅ Release build successfully compiled and verified.