1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2024-11-23 03:02:53 +01:00
Commit Graph

7265 Commits

Author SHA1 Message Date
kd-11
dd21e43ed5 rsx: Force disable draw reordering when capturing a frame 2018-08-18 16:14:30 +03:00
kd-11
937f1e8cd0 fix gcc build 2018-08-18 16:14:30 +03:00
kd-11
4b2b662c3a rsx: Followup to the memory inheritance hierachy patch
- Tags framebuffer resources on first use (when on_write is called to verify memory)
- Texture cache now selects the best match and even sorts atlas writes with memory write order to avoid older data showing over newer one
2018-08-18 16:14:30 +03:00
kd-11
ec31157bc7 gl: Avoid unnecessary scissor state change every draw call. 2018-08-18 16:14:30 +03:00
kd-11
8c93db342f gl: Reuse framebuffer resources
- WIP optimizations for GL backend
2018-08-18 16:14:30 +03:00
kd-11
cca488d0cf rsx: Enable swizzled decode for all formats unless proven otherwise
- Some formats are proven to ignore swizzle flag
  - DXT compressed textures
  - COMPRESSED_BG_GB class textures
- Some applications are using swizzled wide integer formats so those are confirmed to swizzle
2018-08-18 16:14:30 +03:00
kd-11
f8a9b1fa30 [WIP] rsx: Improve memory inheritance hierachy
- Cascade memory writes by invalidating 'downstream' subsurfaces
- Fixup; always resolve for overlapping surfaces before sampling (force
  atlas gather test)
2018-08-18 16:14:30 +03:00
kd-11
ba5b59dc59 gl: Do not create secondary context if async is disabled
- Some third party programs fall apart when multiple contexts are created
2018-08-18 16:14:30 +03:00
kd-11
0f36e87010 zcull: Improve the delay algorithm to be more consistent
- Use proper time checking; depending on what is being done one 'tick' can
  be almost a millisecond long or several nanoseconds
- Avoid spamming the system timer unless necessary
2018-08-18 16:14:30 +03:00
kd-11
38191c3013 rsx: Avoid acquiring the vm lock; deadlock evasion
- A possible deadlock is still present if rsx is trying to get a super_ptr whilst the vm lock holder is in an access violation
  This patch makes this scenario very unlikely since each block need only be touched once
2018-08-18 16:14:30 +03:00
kd-11
741ee9ac41 rsx: Allow linear filtering when reading back GPU-resident memory 2018-08-18 16:14:30 +03:00
kd-11
cc7848b3ef vulkan: Fix blit engine transfer to ARGB8 render target memory 2018-08-18 16:14:30 +03:00
kd-11
e9d6096356 vk: Fixups for type b surfaces 2018-08-18 16:14:30 +03:00
kd-11
373e02e91c rsx: Timestamp accuracy workaround 2018-08-18 16:14:30 +03:00
kd-11
1200ca8172 rsx: Optimize hash_struct; vk cleanup 2018-08-18 16:14:30 +03:00
kd-11
d0165290b6 rsx: Refactor and fix framebuffer layout checks
- Refactors shared code back into rsx core
- Adds extra check to avoid contest confusion
2018-08-18 16:14:30 +03:00
kd-11
0267221586 Minor optimizations and fixes
- FIFO: avoid multiline spam
- VK: Fix program setup counter
- FS: Precalculate fragment constants buffer size during analysis step
2018-08-18 16:14:30 +03:00
kd-11
9f0fada17a ZCULL: lower notice severity to avoid spam 2018-08-18 16:14:30 +03:00
kd-11
8800c10476 zcull synchronization tweaks
- Implement forced reading when calling update method to sync partial lists
- Defer conditional render evaluation and use a read barrier to avoid extra work
- Fix HLE gcm library when binding tiles & zcull RAM
2018-08-18 16:14:30 +03:00
kd-11
3b47e43380 rsx: Synchronization rewritten
- Do not do a full sync on a texture read barrier
- Avoid calling zcull sync in FIFO spin wait
- Do not flush memory to cache from the renderer side; this method is now obsolete
2018-08-18 16:14:30 +03:00
Rui Pinheiro
23b52e1b1c Mark unsync textures dirty when deferred flushing
invalidate_range_impl_base does not mark all textures that will only be
unprotected as dirty when doing a deferred flush, since that is done by
flush_all.

However, if there are no sections to flush, the deferred flush will
use the same code path as non-deferred flushes for unprotecting textures
and forget to mark them as dirty.

This commit fixes this bug.
2018-08-16 15:38:36 +03:00
Rui Pinheiro
fa6a5761b3 Refactor get_intersecting_set
The existing implementation restarts the loop immediately after
finding a range_data instance that updates the trampled_range.

This commit refactors this method to continue the loop with the updated
trampled_range, and then repeat only those range_data instances that
were iterated through before the trampled_range was last updated.
As a result, the number of total iterations required is reduced.
2018-08-16 15:38:36 +03:00
Rui Pinheiro
b534d49e48 Fix off-by-one error in get_intersecting_set
When the trampled range changes, get_intersecting_set restarts the
outer loop. However, due to an off-by-one error, it skips the first
cache entry when doing so. This can cause a texture not to be
correctly unlocked, which could lead to issues or even deadlocks.

This commit fixes this off-by-one error.
2018-08-16 15:38:36 +03:00
Rui Pinheiro
f82ce06fdc Fix typo in buffered_section::overlaps_page
If "address" is not page-aligned, the calculated end address for the
corresponding page is incorrect which can lead to false positives,
causing some textures to be re-uploaded unnecessarily.

This commit fixes this typo.
2018-08-16 15:38:36 +03:00
eladash
9d8c9c2460 sys_memory: fix default alignment flag
its 1mb
2018-08-16 03:27:11 +04:00
eladash
061c787e56 rsx-capture: unbreak 2018-08-16 03:27:11 +04:00
Nekotekina
6c62f42d8d Fix include in log_frame.cpp 2018-08-14 23:59:28 +03:00
Nekotekina
5e20d4b481 Fix vm regression from #4975
Incorrect vector management
2018-08-14 23:57:20 +03:00
Nekotekina
a3daa99a33 Fixup sys_vm_memory_map 2018-08-14 16:08:45 +03:00
Nekotekina
aa4040bb7b Implement vm::find_map; improve memory allocation
Add vm::user64k and vm::user1m constants
Remove vm::user_space, unreserve it
2018-08-14 15:14:06 +03:00
Nekotekina
9578e1e923 SPU LLVM: lower some log levels 2018-08-14 15:14:06 +03:00
Nekotekina
62f9a2dc4b sys_fs_open: support split files 2018-08-14 15:14:06 +03:00
Nekotekina
441541a42f Implement fs::make_gather 2018-08-14 12:46:22 +03:00
Megamouse
57ba9d3939 basic mouse handler: multi monitor adjustments 2018-08-13 22:23:22 +02:00
Megamouse
1a5b950d8b fix cellMouse lag + fullscreen mouse 2018-08-13 22:23:22 +02:00
Megamouse
aaea9d6946 Add the accurate xfloat option to the CPU tab 2018-08-13 20:44:08 +04:00
eladash
449888b9db Rsx/vm: fix base addresses 2018-08-13 16:16:34 +03:00
eladash
f349695a75 Rsx: rewrite address translation 2018-08-13 16:16:34 +03:00
eladash
9e380a4a4a Rsx: avoid invalid cmds execution 2018-08-12 23:37:24 +03:00
eladash
c80eb1ba02 Rsx: fix CALL and RET cmd 2018-08-12 23:37:24 +03:00
Nekotekina
801089cf44 PPU LLVM: always link syscall_## functions
Regardless of whether they have name or not
Should fix "Linkage failed" errors introduced after #4886
2018-08-12 15:42:47 +03:00
Nekotekina
359bfa88b7 Update supporters 2018-08-12 15:42:47 +03:00
Nekotekina
fdd4f03b93 SPU LLVM: improve xfloat precision
Use doubles for intermediate representation
Add option "Accurate xfloat" to enable
2018-08-12 15:42:47 +03:00
Nekotekina
d1fd4d5000 PPU: don't use transactions (test) 2018-08-12 02:42:32 +03:00
Nekotekina
14e6577700 SPU LLVM: improve debugging RPCS3
Build cache in reverse order
Catch exceptions in instruction loop: print IR
2018-08-12 02:42:32 +03:00
Nekotekina
711e0f75ee SPU LLVM: inline WRCH (preview)
With lööps for TSX bróþers
2018-08-12 02:42:32 +03:00
Nekotekina
d01bf3bcb0 SPU LLVM: rewrite CGX 2018-08-12 02:42:32 +03:00
Nekotekina
d3ad44aec4 SPU LLVM: improve constant propagation
Propagate constants in non-volatile registers between chunks
Disable function table in Mega mode
2018-08-12 02:42:32 +03:00
Nekotekina
a424fcfcf7 PPU LLVM: fix phenoms 2018-08-12 02:42:32 +03:00
Chris Weermann (TGE)
fdcc5adc8d Fix overflow in PPUThread stack frame dump 2018-08-11 20:56:19 +04:00