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
lewmpk
d64e79bd9f
fix clang warning: logical-op-parentheses
2017-12-31 22:08:17 +03:00
kd-11
1ea5e7404a
rsx: Workaround for nvidia linux
...
- For some reason, using 1.E-x notation does not work on nvidia linux. Could be a bug in spir-v generator or the driver itself
2017-12-31 12:43:40 +03:00
kd-11
55c324e062
rsx: Invalidate surface configuration if stencil state is changed
...
- Stencil state afects validity of a depth/stencil surface same as depth state
2017-12-31 12:43:40 +03:00
kd-11
d496dbecad
rsx: Implement depth clamping
2017-12-31 12:43:40 +03:00
kd-11
4872be9de3
rsx/vk: Synchronize access to queue submit calls
...
- Should prevent concurrent access on the present/graphics queue
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
8b31a9448a
vulkan: Tweaks to sampler state fallback paths
...
- Make all texture access on non-existent textures return 0
- If border color is closer to 0, then set alpha to 0 as well (might break some corner cases with alpha test)
- Zero initialize null sampler
2017-12-22 20:08:14 +03:00
kd-11
4819847c46
rsx: Modify semaphore_acquire timeout detection
...
- Take paused state into account
- Make timeout configurable
2017-12-22 20:08:14 +03:00
kd-11
d6bc6ec2c1
rsx: fix initial swizzle ordering for render target data
2017-12-22 20:08:14 +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
Nekotekina
61de20a633
RSX: remove SSSE3 dependency
2017-12-20 00:04:08 +03:00
kd-11
de5dab35e0
rsx: Raise semaphore timeout duration bacause some games are very slow
2017-12-18 10:45:37 +03:00
kd-11
47060cdc5f
rsx/fp: Fix typo
2017-12-18 10:45:37 +03:00
kd-11
7dd349ae8e
Update FragmentProgramDecompiler.cpp
2017-12-18 10:45:37 +03:00
kd-11
4e80858bed
rsx/fp: Hotfix for TEXBEM/TXPBEM
2017-12-18 10:45:37 +03:00
kd-11
e89a035e8b
rsx/fp: Implement TXPBEM
2017-12-18 10:45:37 +03:00
kd-11
f7c52d3bb7
rsx/fp: Implement TEXBEM (untested)
2017-12-18 10:45:37 +03:00
kd-11
6f8dd20f03
rsx/fp: Stuff
...
- Implement BEM
- Add LG2 to special instructions
2017-12-18 10:45:37 +03:00
kd-11
b1a1c0251f
rsx: Implement variable point size
2017-12-18 10:45:37 +03:00
kd-11
0d0821e914
rsx: Pause FIFO queue when changing ctrl registers
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
ff0f1510e5
rsx: Minor fixes
...
- Abort nv406e semaphore acquire if the rsx thread stalls/crashes
- Fix texture size approximation to take mipmaps into account. Fixes some games hanging with WCB
2017-12-18 10:45:37 +03:00
kd-11
3338fdb936
rsx: Fix RGB565 blits. Data is byteswapped on input
...
- Fixes messed up BG on retroarch glyphs
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
Jake
d0013679c0
rsx: fix image_in swizzled texture crash
2017-12-08 15:19:17 +04:00
kd-11
0b3fbf1d4c
rsx: Narrow the race condition window further
...
- Needs aliased paging to be implemented to fix properly or a re-entrant global IO lock
2017-12-06 12:55:49 +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
a2b4cf22b5
rsx: Reimplement invalidate_range_base_impl
...
- Avoid unprotecting memory until just before we have to write the data
- Avoids race conditions where the caller thread takes too long to enter the second phase and another thread accesses the "bad" memory
2017-12-06 12:55:49 +03:00
kd-11
970d2a06e0
rsx: Properly fix DATA3F_M register alignment
2017-12-04 18:22:18 +03:00
kd-11
9853027f72
rsx/vp: Decide default return values in case of undefined attributes based on location ID
...
- Different default values should be returned for different attributes
2017-12-04 18:22:18 +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
f5145943b2
d3d12: Fix fragment shader compile
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
896c8991de
rsx/fp: Properly implement PK/UP instructions based on NV_fragment_program documentation
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
fe9090bd39
rsx/fp: Implement register gather (only for UP(X) instructions)
...
- Workaround for temp register aliasing between H and R variants
- TODO: Implement temp regs as 128 bit-blocks with r/w as pack/unpack
2017-12-01 21:00:50 +03:00
kd-11
44e34064de
vulkan: Do not clear non-existent surfaces
2017-12-01 21:00:50 +03:00
kd-11
a18ae0f6ac
rsx/fp: Reimplement PK(X) and UP(X) opcodes. The read back values are obviously in normalized range
...
- Confirmed with a GOW shader which writes result of UP8 to BGRA8 output
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
6c9c300fe0
rsx: Fix texture cache memory usage statistics
2017-12-01 21:00:50 +03:00
kd-11
17340c44cc
rsx: method register fixes
...
- Fix VERTEX_DATA_3F_M element alignment (its 16 bytes per attribute)
- Fix DATA_2S_X interpretation type. Its signed 16-bit unnormalized (s32k) and not signed normalized (s1)
2017-12-01 21:00:50 +03:00
kd-11
90a3f3af30
rsx: Discard queue if RET is found without CALL
2017-12-01 21:00:50 +03:00