kd-11
56dd09f4fe
rsx: Handle floating point shenanigans
...
- If near and far clip are too close together, the API will not distinguish between them leading to out of bounds values
2021-12-22 22:08:53 +03:00
kd-11
de495952fd
rsx: Enable fallback for devices without wide integer Z buffers
2021-12-22 22:08:53 +03:00
Nekotekina
76ccaf5e6f
BufferUtils: refactoring
...
Optimize CPU capability tests for arch-tuned builds.
Separate streaming and non-streaming utilities.
Rewritten copy_data_swap_u32(_cmp) with AVX2 path.
2021-12-21 23:28:09 +03:00
kd-11
7ca15c60bb
rsx: Improve image aspect tests
...
- Replace old format-based detection with proper aspect test.
Explicit image aspect has been available for a long time, but older
code was not updated.
2021-12-08 23:58:32 +03:00
DH
cccfb89aa0
[Config] Use std::less<> for std::map<...>
...
Reduces amount of string copies
[Utilities] fmt::replace_all: avoid creation of temporary strings
2021-12-02 21:36:57 +03:00
kd-11
02832d9623
rsx: Add some sensible fallbacks ( #11219 )
...
* rsx: Add some sensible fallbacks
* Update GLPresent.cpp
* Update VKPresent.cpp
* Update rsx_utils.h
* Update rsx_utils.cpp
2021-12-02 16:02:08 +03:00
Megamouse
aea1ec2594
avconf: Add const to fxo references
2021-12-01 21:55:53 +01:00
kd-11
22a7b026e7
rsx: Fix image scaling
...
- Specifically fixes a corner case where double transforms are required.
Technically this can be made more readable using transformation matrices:
* M1 = transform_virtual_to_physical()
* M2 = transform_image_to_virtual()
* M3 = M1 * M2
* Result = Input * M3
But we don't use a CPU-side matrix library and it is not reasonable to do this on the GPU.
2021-12-01 21:55:53 +01:00
Megamouse
c8d4a0dcdc
VK/GL: honor game's aspect ratio when scaling
2021-12-01 21:55:53 +01:00
kd-11
94a3b1cfe8
rsx: Roll back some optimizations
...
- Just use RGB565 for all blit targets. Avoids really dumb transforms done by GPU hw.
- When X16 is used, all the channels get written to R channel alone. CmdBlit does perform format conversion!
- gl: Force image copy when blit is requested with compatible targets. Avoids format conversion issues.
2021-11-24 16:02:24 +03:00
kd-11
58f0fa3ca5
gl: Enable handling of X16 blit targets
2021-11-24 16:02:24 +03:00
kd-11
f7eacf70ec
rsx: Restore shader disassembler to working state
2021-11-05 23:55:07 +03:00
kd-11
c733e794de
gl: Use real image dimensions when decoding compressed textures
...
- Image size is already correctly calculated using block dimensions
2021-10-27 12:30:43 +03:00
kd-11
99fc90648b
gl: Disable shader interpreter if hardware does not support bindless textures
2021-10-27 12:30:43 +03:00
kd-11
2587545eed
gl: Fix decoding of wide, swizzled textures
...
- Handle pre-byteswapped data (swizzled usually) in the compute-safe path
2021-10-27 12:30:43 +03:00
kd-11
e1d1d16227
gl: Alias register binding points a bit
...
- While aliasing is easy to break, it allows outdated hw to run
2021-10-10 16:15:28 +03:00
kd-11
2e22a0d9bb
rsx: Optimize thread self-tests
2021-09-28 17:43:15 +03:00
kd-11
7b9fb7ad9c
rsx: refactor rsx_utils a bit
...
- Move obviously standalone things to their own utility files
2021-09-28 17:43:15 +03:00
kd-11
6781eb7c76
rsx: Avoid calling get_system_time() every draw call
2021-09-28 17:43:15 +03:00
kd-11
3e09b97f58
rsx: Minor optimization; avoid preparing unused vertex streams
...
- Also discards unused program state variables
2021-09-28 17:43:15 +03:00
kd-11
dabfce5c82
rsx: Rework how depth/stencil initialization+clear works
2021-09-21 19:53:46 +03:00
kd-11
472efc08eb
rsx: Implement precise ZCULL stats
2021-09-06 20:04:03 +03:00
Nick Renieris
47e784d5d0
gl/vk: Scale line width & point size by resolution scaling
2021-08-17 19:29:46 +03:00
kd-11
99b6963fab
rsx: Improve unnormalized coordinate sampling
...
- Improve rounding when sampling nearest neighbour. This is mostly a problem with NVIDIA
- Implement unnormalized 3D sampling
2021-08-03 00:36:04 +03:00
kd-11
194bfc54d1
rsx: Implement dynamic vertex offset updates
...
- Vertex offsets can be updated mid-draw to dynamically render different meshes without breaking up draws
2021-06-30 10:07:33 +03:00
kd-11
2c7c1c501d
rsx: Implement support for extended vertex programs
...
- Some games are kinda pushing it with RSX register space and spilling VP data into adjacent unused space.
2021-06-28 10:52:05 +03:00
kd-11
cd8cb9cced
rsx: Don't leak data during partial clears
...
- Partial clears either in active clear channels or scissor region must get barrier inserts to load previous data.
- Fixes some incorrectly discarded data during clear where data in untouched/uninitialized channels is lost.
2021-06-25 14:45:36 +03:00
kd-11
966aec7ad7
rsx: Resync excluded memory regions to avoid memory tests failing after flush events
...
- This is a mostly correct fix, but a corner case exists that can leak old data to the surface cache
2021-06-15 15:42:16 +03:00
kd-11
20bd723e7c
rsx: Add floor workaround for GPUs with rounding issues
...
- Mainly affects nvidia where x/w * w can sometimes return a value smaller than x.
In such conditions, floor(x) will return x-1 if x is an integer which is horribly wrong and exaggerates minor precision drift to great proportions.
2021-06-09 10:55:55 +03:00
kd-11
568af756cc
rsx: Fix expired sampler descriptors
...
- Rebuilding when strict mode is enabled was incomplete.
The copy has to be redone if the source has been updated.
2021-06-06 15:37:47 +03:00
kd-11
6ac9e6f9c4
gl: Add some debug visualization to internally verify consistency
2021-06-05 21:02:14 +03:00
kd-11
39815801aa
rsx: Implement proper decoding for some obscure fragment instructions
...
PK4UBG and UP4UBG were dropped from the NV_fragment_program spec in 2002.
Not much information about them remains but seems pretty straightforward.
2021-06-05 21:02:14 +03:00
Ani
a49446c9e9
Replace gsl::span for std::span (c++20) ( #7531 )
...
* Replace gsl::span for std::span (c++20)
* Replace gsl::byte with std::byte
Co-authored-by: Bevan Weiss <bevan.weiss@gmail.com>
2021-05-30 17:10:46 +03:00
Megamouse
f18e80e899
fix some warning spam
2021-05-29 08:17:30 +02:00
kd-11
9e62e98f79
rsx: Minor refactoring ( #10358 )
...
- Fix some misnomers.
- Allow finer grained control over texture section creation routines.
2021-05-27 23:44:07 +01:00
Megamouse
83d3658ef0
scale debug overlay based on current dpi settings
...
Depending on the dpi settings, the debug overlay was almost unreadable.
I also took the liberty to refactor some redundant client size calls and to add some margin to the left of the debug text.
2021-05-26 20:31:29 +02:00
Nekotekina
2491aad6f2
types.hpp: implement min_v<>, max_v<>, SignedInt, UnsignedInt, FPInt concepts
...
Restrict smax to only work with signed values for consistency.
Cleanup <climits> includes.
Cleanup <limits> includes.
2021-05-23 19:43:51 +03:00
Nekotekina
160b131de3
types.hpp: implement smin, smax, amin, amax
...
Rewritten the following global utility constants:
`umax` returns max number, restricted to unsigned.
`smax` returns max signed number, restricted to integrals.
`smin` returns min signed number, restricted to signed.
`amin` returns smin or zero, less restricted.
`amax` returns smax or umax, less restricted.
Fix operators == and <=> for synthesized rel-ops.
2021-05-22 12:10:57 +03:00
kd-11
c5a06dab0a
rsx: Refactor program texture state handling to be persistent across shader swaps
2021-05-15 23:51:12 +03:00
octopoulo
b8928d230a
gl: Intel GPU shader fix
2021-05-12 15:28:30 +03:00
kd-11
1a73b0a0da
rsx: Fix transfer barriers not triggering resolve target initialization
2021-05-12 12:32:24 +03:00
kd-11
e3944bc67f
rsx: Handle transfer_read differently from transfer_write
...
- Transfer writes are expected to clobber surface cache contents. Do NOT reload from CPU memory for writes.
- TODO: During transfer write to surface cache objects, lock memory if it was unlocked to avoid silly problems.
2021-05-09 13:07:47 +03:00
Megamouse
37425d6fcd
GL: Remove unused copy functions
2021-04-30 08:23:16 +02:00
Megamouse
a50be7a912
GL: resharper findings (too lazy for const functions)
2021-04-30 08:23:16 +02:00
kd-11
8b0e1d6c03
rsx: Make renderdoc compatibility mode a general option
2021-04-28 16:53:02 +03:00
kd-11
06dc99ab85
rsx: Fix decompression of RB_RG textures.
...
- Removes several subtle hacks that hid the real issue.
A compressed texture has more than one texel per 'block'.
2021-04-11 21:36:36 +03:00
Nekotekina
b3fb6d7d18
Add and fix -Wredundant-decls (GCC)
2021-03-23 22:48:57 +03:00
Megamouse
40f3adc45f
Overlays: Implement individual pulse
2021-03-11 20:48:12 +01:00
Nekotekina
03332c340d
Implement utils::bless (pointer cast)
...
Tries to workaround strict aliasing troubles.
Don't confuse with std::bless which works differently.
2021-03-10 16:02:00 +03:00
Megamouse
cbd895a29c
Move code to cpp ( #9938 )
...
* GL: move GLOverlays code to cpp
* GL: move GLCompute code to cpp
* VK: move VKOverlays code to cpp
* VK: move VKCompute code to cpp
2021-03-10 00:58:08 +01:00