This is a big problem when using paletted textures. It is very easy to
trigger scenarios where we roundtrip resolve unscaled -> scaled ->
unscaled.
We need to round in pack_abgr1555 because we can get an off-by-one
otherwise, especially when resolving large upscaling factors.
Also, remove mediump from the resolve shaders, since we need pretty
decent precision to ensure there is a 1:1 roundtrip.
* VK renderer now outputs psx vram fb within proper display area
* Implement and reenable horizontal overscan cropping option
* Update rsx and Vulkan rsx playback for new VK renderer code
Removes some pixellation from certain MDEC sequences which feature stark
red or blue detail (RE1 for example).
This filtering is done in one pass, so it's rather heavy, but the
resolution is low enough it shouldn't matter.
Looks a bit more coherent with mixed 2D and 3D in cases where adaptive
smoothing fails.
Also allows CRT-style shaders to work better as they expect 240p input
usually.
Also fixes a small regression in which shaders are built for
downsampling and cleans up some ugly code w.r.t filters.
- Originally had a single host pointer to the last block allocated. If more than one block was allocated when the allocator was reset using discard() this caused a mismatch between the block allocated from and the one written to.
- Now stores a pointer to the data in each block and returns the correct one when allocating.
Also changed the vertex declaration for UV clamping values to be single channel floats (doesn't appear to have been causing errors, but seems more correct).
- Calculate and apply offset for quads with flipped UVs earlier.
- Reduce offsets applied in software renderer as resolution scaling increases (fixes line artefacts).
- Calculate UV limits used for filtering earlier and pass these to the individual renderers.
This allows games to boot with amdgpu and vulkan.
It may also affect other drivers.
Vulkan error at parallel-psx/vulkan/semaphore.hpp:40.
terminate called without an active exception
* make texture filter a runtime setting
* only init texture pipelines if the primitive is actually textured
* don't init_pipelines constantly, only when necessary
* these are declared elsewhere so no need to do it here, too
* cleanups courtesy of r5
* flip logic to be more intuitive
* switch back to temporary var
- Pass clamped precise Z value to prevent divide by 0 on GPU (causes errors on Nvidia GPUs)
- Offset texture coordinates by 1/2 texel to avoid error on 1D look ups using Nvidia GPUs (issues #85)
- Prevent Vulkan renderer offsetting texcoord lookups by 1 during 1D lookups (caused error with above fix)