• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

SPIRV-Cross/H09-Jan-2021-9,4397,030

atlas/H09-Jan-2021-848679

custom-textures/H09-Jan-2021-2,3891,937

glsl/H09-Jan-2021-39,38038,880

khronos/include/vulkan/H09-Jan-2021-14,27911,658

renderer/H09-Jan-2021-3,6143,058

stb/H09-Jan-2021-7,6665,569

util/H09-Jan-2021-2,9672,039

volk/H09-Jan-2021-2,5042,380

vulkan/H09-Jan-2021-17,25413,344

.clang-formatH A D09-Jan-20215.8 KiB165111

COPYINGH A D09-Jan-2021742 84

README.mdH A D09-Jan-20212.1 KiB6243

format_all.shH A D09-Jan-2021196 85

main.cppH A D09-Jan-202116.4 KiB749638

README.md

1# Parallel PSX
2
3This is a Vulkan implementation of the PlayStation 1 (PSX) graphics chip.
4The aim is to be best-in-class for visual quality as well as accuracy for a HW rendered plugin.
5
6Main features:
7
8 - Internal upscaling
9 - Multisample anti-aliasing
10 - Adaptive smoothing, which aims to make 2D elements smooth, and 3D elements crisp and sharp
11 - Full mask bit emulation
12 - Full framebuffer emulation
13 - Standalone API for easy integration in other emulators
14 - RSX dump playback support (can be dumped from Beetle PSX)
15 - PGXP integration (sub-pixel precision and perspective correctness)
16
17## Hardware and drivers tested on
18
19 - nVidia Linux (375.xx)
20 - AMDGPU-PRO 16.30
21 - Mesa Intel, Broadwell GPU (seems to fully work if you build very latest driver from source!)
22 - Mesa Radeon (RADV, missing some features for full mask bit emulation)
23
24## Overview
25
26This project consists of three modules.
27
28### Vulkan backend
29
30This is an implementation of a higher-level API which retains most of Vulkan's ways to slash out driver overhead while
31being convenient to use. This API was designed to be reusable and might be hoisted out to its own project eventually.
32
33### Framebuffer Atlas
34
35A key component is having the ability to track various access to the PSX framebuffer (1024x512).
36The atlas tracks hazards on 8x8 blocks and when hazards are found, Vulkan pipeline barriers and batch flushes occur.
37This allows us to render while doing blits to different regions of VRAM without having to fully stall the GPU.
38
39### Renderer
40
41The renderer implements the PSX GPU commands, using both the atlas and the Vulkan backend.
42
43## Building dump player
44
45The dump player is used to play-back and trace dumps which are used to debug games.
46Dumps are generated from Beetle-PSX or other programs.
47
48```
49git submodule init
50git submodule update
51mkdir build
52cd build
53cmake .. -DWSI=GLFW
54make -j8
55./rsx-player dump.rsx --dump-vram dump/game
56```
57
58## Credits
59
60This renderer would not have existed without the excellent Mednafen PSX emulator as well as Rustation PSX renderer.
61Otherwise, all code sans submodules in this repository is by Tiny Tiger.
62