Commit Graph

58 Commits (94777a15cdaa7138a92de8268a7aa999b3165170)

Author SHA1 Message Date
Connor McLaughlin 96ba9198ef GPU/HW: Expand lines into triangles before rendering
Fewer batches, consistent upscaling behavior.
5 years ago
Connor McLaughlin 0c1b637549 PGXP: Add initial implementation 5 years ago
Connor McLaughlin b6f871d2b9
JIT optimizations and refactoring (#675)
* CPU/Recompiler: Use rel32 call where possible for no-args

* JitCodeBuffer: Support using preallocated buffer

* CPU/Recompiler/AArch64: Use bl instead of blr for short branches

* CPU/CodeCache: Allocate recompiler buffer in program space

This means we don't need 64-bit moves for every call out of the
recompiler.

* GTE: Don't store as u16 and load as u32

* CPU/Recompiler: Add methods to emit global load/stores

* GTE: Convert class to namespace

* CPU/Recompiler: Call GTE functions directly

* Settings: Turn into a global variable

* GPU: Replace local pointers with global

* InterruptController: Turn into a global pointer

* System: Replace local pointers with global

* Timers: Turn into a global instance

* DMA: Turn into a global instance

* SPU: Turn into a global instance

* CDROM: Turn into a global instance

* MDEC: Turn into a global instance

* Pad: Turn into a global instance

* SIO: Turn into a global instance

* CDROM: Move audio FIFO to the heap

* CPU/Recompiler: Drop ASMFunctions

No longer needed since we have code in the same 4GB window.

* CPUCodeCache: Turn class into namespace

* Bus: Local pointer -> global pointers

* CPU: Turn class into namespace

* Bus: Turn into namespace

* GTE: Store registers in CPU state struct

Allows relative addressing on ARM.

* CPU/Recompiler: Align code storage to page size

* CPU/Recompiler: Fix relative branches on A64

* HostInterface: Local references to global

* System: Turn into a namespace, move events out

* Add guard pages

* Android: Fix build
5 years ago
Connor McLaughlin d711baaa31 GPU/HW: Fix lines being one pixel too short
Fixes lines in screen wipe effect in Vagrant Story.
5 years ago
Connor McLaughlin d1a2ebd8f3 GPU/HW: Eliminate CPU round trip on oversized VRAM writes 5 years ago
Connor McLaughlin a08c398d4b GPU/HW: Provide depth in vertex rather than computing
Fixes mask bit effects in Vulkan (e.g. Silent Hill).
Significantly reduces the number of mask bit refreshes in OpenGL/Vulkan.
5 years ago
Connor McLaughlin 49d11988bf Core: Add Vulkan GPU renderer 5 years ago
Connor McLaughlin c8e1881ea9 GPU/HW: Clear dirty rectangle when updating shadow texture
Fixes high GPU usage in Robbit mon Dieu in D3D11, should improve overall
performance slightly when VRAM copies are heavily used.
6 years ago
Connor McLaughlin e368dbbadc GPU: Implement non-interleaved interlaced rendering
Fixes screen shaking in True Pinball.
6 years ago
Connor McLaughlin e058beb4b0 GPU/HW: Fix oversized VRAM copies writing out of bounds
Fixes jittering in Duke Nukem - Land of the Babes water effect.
6 years ago
Connor McLaughlin 9446587e8f GPU/HW: Mask bit handling in hardware renderers
Fixes:
 - Menu effect in Ghost in the Shell
 - Incorrect text colours in menu of Dragon Quest VII
 - Fade effect in TwinBee RPG
 - Fog in Silent Hill
 - Water in Duke Nukem - Land of the Babes
 - Shadows in Ultraman - Fighting Evolution

and probably others.
6 years ago
Connor McLaughlin 5ad133a278 GPU/HW: Implement oversized copies on GPU
Fixes slowdown caused by this.
6 years ago
Connor McLaughlin 1757932b3a GPU: Implement FIFO and timings
This will cause a slight performance loss. I've left some knobs in which
can be tweaked to mitigate this, but the goal is to be compatible with
all games which require them.
6 years ago
Connor McLaughlin 65ca8b9fe0 GPU/HW: Move logic from backend to GPU_HW class 6 years ago
Connor McLaughlin 3cfead36c4 Revert "GPU: Clamp coordinates to 11 bits after applying drawing offset"
This reverts commit 5302f83818.

This is not the correct fix, and breaks other games.
6 years ago
Connor McLaughlin 2aecb570c1 GPU: Implement interlaced rendering in hardware backends 6 years ago
Connor McLaughlin 5302f83818 GPU: Clamp coordinates to 11 bits after applying drawing offset
Fixes flickering in some scenes (e.g. Galbadia Missile Base).
6 years ago
Connor McLaughlin 0b347e2151 GPU/HW: Implement flipped quad coordinate hack from beetle-psx
Fixes graphical glitches around the edges of flipped sprites.
6 years ago
Connor McLaughlin e2e2b573c0 GPU/HW: Move drawing offset to CPU-side
Saves updating the uniform buffer.
6 years ago
Connor McLaughlin 6bb6249e86 GPU/HW: Print capabilities to log 6 years ago
Connor McLaughlin 635ab72b37 GPU: Implement "Scaled Dithering" option
Fixes #29.
6 years ago
Connor McLaughlin 0690491883 GPU/HW: Fix potential crash in rectangle expansion 6 years ago
Connor McLaughlin 149cbf6457 GPU/HW: Properly implement too-large polygon culling
Replaces triangle strips with triangle lists, which has the added bonus
of not requiring flushing as many batches.

Fixes missing geometry in Vagrant Story.
6 years ago
Connor McLaughlin 9ac7b002e2 GPU/HW: Improve dirty rectangle tracking
Fixes title screen of Activision Classics and performance regression
from Vagrant Story motion blur fix.
6 years ago
Connor McLaughlin 4a3478b360 HostInterface: Add function to switch between sw/hw rendering 6 years ago
Connor McLaughlin 504510c242 GPU: Fix reading of write-combined GPU buffers
+100fps in recompiler modes
6 years ago
Connor McLaughlin ffe90083d3 GPU: Refactor draw mode setting 6 years ago
Connor McLaughlin 67c67bbb66 GPU: Add basic texture filtering support
Still has issues around the edges of text.
6 years ago
Connor McLaughlin 024ed01bbb GPU/HW: Set alpha to mask bit setting 6 years ago
Connor McLaughlin bc5a247a4b GPU/HW: Use dual-source blend to split alpha and mask 6 years ago
Connor McLaughlin 9ea7a8418c GPU: Eliminate temporary buffer when reading back 6 years ago
Connor McLaughlin 3998b9684e GPU/HW: GPU-based RGBA8->RGB5551 conversion for readbacks 6 years ago
Connor McLaughlin cc7483ad58 GPU/HW: Only copy the dirty area to the VRAM read texture 6 years ago
Connor McLaughlin da51d49d18 GPU/HW: Track VRAM fills/writes in dirty rectangle instead of invalidating 6 years ago
Connor McLaughlin 2c631aba5e GPU: Move stats from renderer class to base classes 6 years ago
Connor McLaughlin afbec85f89 GPU/HW: Track dirty area of VRAM shadow texture via drawing area 6 years ago
Connor McLaughlin 9de9cf3be2 GPU/HW: Add D3D11 renderer and refactor host interface/display 6 years ago
Connor McLaughlin be81d08109 GPU/HW: Split shadergen to seperate class 6 years ago
Connor McLaughlin 91c99f0226 GPU/HW: Use uniform blocks for batch rendering 6 years ago
Connor McLaughlin f7f5d45d7a GPU: Fix incorrect VRAM fill colours in GL renderer 6 years ago
Connor McLaughlin ba1a5a5ca9 GPU: Fix batching regression (draws split on texture page) 6 years ago
Connor McLaughlin 4143469353 GPU: Use texture buffer/fragment shader for VRAM writes 6 years ago
Connor McLaughlin 2b17cfd365 GPU: Use streaming buffers for CPU->VRAM transfers 6 years ago
Connor McLaughlin 407fee9ec3 GPU: Add base functionality for GL streaming buffers 6 years ago
Connor McLaughlin c52c0608ae GPU: Move resolution scale to hardware backend only 6 years ago
Connor McLaughlin c9feb7ea07 GPU: Add force true color setting 6 years ago
Connor McLaughlin ac82383abe GPU: Implement dithering on OpenGL backend 6 years ago
Connor McLaughlin 1c79737021 GPU: Simplify batch state 6 years ago
Connor McLaughlin 5626d4f282 GPU: Fix texcoord off-by-one error in rectangles 6 years ago
Connor McLaughlin 9b56499afa Refactoring settings/support changing GPU renderer at runtime 6 years ago