Jake
7ca2c444cc
rsx: Fix depth clipping
2018-01-14 20:50:55 +03:00
kd-11
ee009ec99c
rsx: Robustness fixes
...
- Track last working state and reset to it if RSX starts to desync
-- This is especially useful when running vulkan since the renderer will easily outpace the rest of the system when merely recording draw commands
- Ignore empty sets
-- Mark empty/invalid IB sets as having 0 element counts.
2018-01-02 21:17:56 +03:00
kd-11
d496dbecad
rsx: Implement depth clamping
2017-12-31 12:43:40 +03:00
kd-11
688569e5c8
gl: Remove flag test optimization as it does not work properly
...
- Most texture cache operations will break sampler state and the extra complexity is not worth the very small speed bump
2017-12-31 12:43:40 +03:00
kd-11
320fb5f94c
rsx/fp: Fix alphakill
2017-12-22 20:08:14 +03:00
kd-11
4a0c4259f0
c++ is hard
...
- Remove unnecessary const definitions
2017-12-22 20:08:14 +03:00
kd-11
b1a1c0251f
rsx: Implement variable point size
2017-12-18 10:45:37 +03:00
kd-11
6891323c18
rsx: framebuffer textures do not have mipmaps!
...
- Force mipmap count to 1 if sampling from an RTV/DSV
- TODO: Better wcb flush detection, it should be better to re-upload the texture after it has been dwnloaded if expected mipmaps are > 1
2017-12-18 10:45:37 +03:00
kd-11
7c7cd4153e
rsx: Framebuffer setup fixes
...
- Sometimes square renders are done to surfaces with pitch=64 and re-uploaded with swizzle scanning
-- This setup avoids discarding targets if they are square and pitch == 64
2017-12-18 10:45:37 +03:00
kd-11
6dfe32c6d2
fix linux builds
2017-12-18 10:45:37 +03:00
kd-11
95966a467e
rsx: Texture cache fixes
...
- Handle blit resources in a more consistent way
- TODO: Handle some corner cases (piyotama)
2017-12-18 10:45:37 +03:00
kd-11
ac0022483a
rsx: Implement delayed swizzle remap for blit engine resources
...
- Fixes remap vectors for memory copied via blit engine as it has no context
2017-12-18 10:45:37 +03:00
kd-11
69eb483089
rsx: Framebuffer setup fix
...
- Stencil flag is meaningless if surface does not support stencil
2017-12-06 12:55:49 +03:00
kd-11
90c2324e47
rsx: Program cache fixes
...
- Reorganize storage hash vs ucode hash
- Scan for actual fragment program start in case leading NOPed code precedes the actual instructions
-- e.g FEAR2 Demo has over 32k of padding before actual program code that messes up hashes
2017-12-04 18:22:18 +03:00
kd-11
960f26f84e
rsx:: fixes for framebuffer setup
...
- provide a DSV if depth and/or stencil testing is enabled
2017-12-04 18:22:18 +03:00
kd-11
cdd4fd9867
rsx/fp: Explicitly insert global functions.
...
- Functions such as pack/unpack ops must exist before the shared gather functions are declared
2017-12-04 18:22:18 +03:00
kd-11
3fbc960c44
gl/vk: Better handling of inter-format data copies
...
- RGBA8->RG16 does not require special instructions so the overlay pass is disabled for OGL
2017-12-01 21:00:50 +03:00
kd-11
bec6c1a939
gl: Implement rgba8 -> fp16 casting pass
...
-- Is this actually necessary? The two format are binary compatible
2017-12-01 21:00:50 +03:00
kd-11
08b829dc22
rsx: wcb scaling fixes
2017-12-01 21:00:50 +03:00
kd-11
9d27ac359b
gl: Minor wcb tweaks
2017-12-01 21:00:50 +03:00
kd-11
da1e97618b
rsx: Changes to surface pitch handling
...
- Zeta pitch is ignored by real HW for some reason
- Monitor ptch value changes as well since they may affect disabled surfaces
- TODO: Verify if MRT pitch is really taken into consideration
2017-12-01 21:00:50 +03:00
kd-11
3350e7ee55
rsx: Fixes for framebuffer setup code
2017-12-01 21:00:50 +03:00
kd-11
75d0ff177d
gl: Avoid null deref
2017-12-01 21:00:50 +03:00
kd-11
3bfdcf698d
rsx: More tuning for depth/color buffer selection
2017-12-01 21:00:50 +03:00
kd-11
51891039dd
rsx: improve depth/color contested memory allocation heuristics
...
- Needs more tests to prove correct behaviour
2017-12-01 21:00:50 +03:00
kd-11
07fe5f87ae
gl: Fix face winding
...
- Face winding is always calculated based off the top left corner
2017-12-01 21:00:50 +03:00
kd-11
de5a4fe083
rsx: Reimplement depth <-> RGBA reinterpretation code
...
- Implements proper channel order for fp24-ARGB8 conversion
- Takes swizzle remap into account when reconstructing source bytes
2017-12-01 21:00:50 +03:00
kd-11
5cf2d774f3
fp32 precision on GPUs is embarassing
...
- Division seems to suffer from drift easily on GPUs due to limited precision
2017-12-01 21:00:50 +03:00
kd-11
ccc0383f75
vulkan: Implement overlay shader passes
...
- Implements vk::overlay_pass and vk::depth_convert_pass
- Also added a sanity check in RSX core for depth replace shaders
2017-12-01 21:00:50 +03:00
kd-11
680ca1d12a
rsx: Zcull refactoring and vulkan implementation
2017-12-01 21:00:50 +03:00
kd-11
30269e5bad
rsx/gl: Use strict method of gathering the depth buffer bits
...
- Performance difference on modern GPUs is negligible
2017-12-01 21:00:50 +03:00
kd-11
07f61db24a
rsx: Try to take the context for the surface creation into account
2017-12-01 21:00:50 +03:00
kd-11
63f261a66d
rsx: Improve framebuffer check heuristics for contested memory buffers
2017-12-01 21:00:50 +03:00
kd-11
33f3a3e014
rsx: Major fixes
...
- Handle aliased depth + color target by disabling depth writes. This looks to be the correct way
- Add support for generic passes that cannot be done using general imaging operations. Lays the framework for tons of features and effects
- Implement RGBA->D24D8 casting. Sometimes games will split depth texture into RGBA8 then use the new RGBA8 as a depth texture directly
-- This happens alot in ps3 games and I'm not sure why. Its likely the ps3 did not sample fp values with linear filtering so this is a workaround
-- Only implemented for openGL at the moment
-- Requires a workaround for an AMD driver bug
2017-12-01 21:00:50 +03:00
kd-11
8646f51fa3
rsx: Add more validation to framebuffer setups. Game devs sometimes do crazy things
2017-12-01 21:00:50 +03:00
Zion Nimchuk
3a9ae2df9e
silence warnings in RSX stuff
2017-11-30 18:07:19 +03:00
kd-11
be6b5922dd
rsx: research native texel byte order on cpu readback (WCB) [WIP]
2017-11-20 15:18:57 +03:00
kd-11
b2a7eee1ec
rsx: Bump shader cache ver and fix blit engine crash
...
- Disables blit operations if the target will have a size of 0 in any dimension
- Bumps shader cache ver to 1.1
2017-11-09 14:39:50 +03:00
kd-11
4e9160104a
rsx/vk/gl: Cleanup and refector glsl::getFunctionImpl
...
- Both backends now generate very similar code
2017-11-08 13:15:34 +03:00
kd-11
242611aa46
gl/qt: Catch segfaults in wglDeleteContext with SEH (AMD windows driver)
...
- In rare cases the driver derefs a nullptr and dies, taking the emulator with it
- From testing, it seems the vram is indeed freed when this happens so its "safe" to continue
2017-11-08 13:15:34 +03:00
kd-11
3730b9d1da
rsx: More fixes
...
- Support for raster offsets in surface descriptors (looks to be unused)
- Do not tag disabled render targets when using MRT (pitch = 64)
- Add missing notify_surface_changed() call for openGL
2017-11-08 13:15:34 +03:00
kd-11
0d35363ea0
rsx: Minor optimization - dont update sampler state if texture state registers have not changed
2017-11-08 13:15:34 +03:00
kd-11
75504b3f5e
rsx: Rework context handling and stop leaking the GL ccontext
...
- GL contexts are external handles that require manual lifecycle management
2017-11-08 13:15:34 +03:00
kd-11
300a36d3d6
rsx: Fixes for cubemap reconstruction
...
- Do not abort generation if sides are missing, replace with blank surfaces instead
- Make cubemaps scale with res scaling
2017-11-08 13:15:34 +03:00
kd-11
60c7a508a7
rsx: Refactor create_subresource_view(deferred_subresource&) and implement a subresource cache
...
- This limits the number of times an image is copied and improves performance
2017-11-08 13:15:34 +03:00
kd-11
1fa18757fc
rsx: Implement render-to-cubemap; Also simplify unnormalized samplers [WIP, DELETE SHADER CACHE, VERY SLOW]
...
- Enables real-time cubemap reflections
- TODO: Vulkan is broke; rsx is very slow with this feature
2017-11-08 13:15:34 +03:00
kd-11
fbb7186e66
rsx/gl: Addendum - Fix fragment shader to consume texture scale parameters
2017-11-08 13:15:34 +03:00
kd-11
0961a43997
rsx: Implement 1D<->2D image type casts
2017-11-08 13:15:34 +03:00
kd-11
2385029eab
gl: Shift code around to increase work done after memory transfer operations
...
- The current code is slower because memory operations are too close to their draw calls
-- This is mainly an issue with proprietary AMD drivers
2017-11-08 13:15:34 +03:00
kd-11
eed55a446c
rsx: Minor optimization
...
- Defer resolving image copy operations to the binding step
2017-11-08 13:15:34 +03:00