Megamouse
7437c324c6
cellMusic: add error_code
2020-07-24 14:47:10 +02:00
Eladash
54b87b6dbb
cellSaveData: Increase sleep time
2020-07-23 13:45:58 +03:00
Eladash
a029a94c73
SPU: Use waitable atomics for SPU channels interface
2020-07-23 13:45:58 +03:00
illusion
3157a10428
move executable hash log level to success
2020-07-22 10:51:19 +02:00
Eladash
f8d2d8ca11
SPU/Windows: Fix LS memory mirrors
...
This is a workaround but this is because of how utils::shm works on Windows path.
2020-07-19 17:58:49 +03:00
Eladash
c37bc3c55c
SPU: Make spu_thread::offset private
2020-07-19 17:58:49 +03:00
Malcolm Jestadt
6cc0fe4221
SPU LLVM: Avoid negative clamping when the input is known to be positive
2020-07-19 17:56:59 +03:00
Eladash
af1ceb1151
SPU LLVM: LS Memory Mirrors (Optimize loads/stores)
2020-07-18 02:01:33 +03:00
Eladash
268bcd1c7b
rsx: Fix false desync events
2020-07-16 19:26:10 +02:00
kd-11
42a9ac9e6c
rsx: Brute-force removal of superseded surfaces
2020-07-16 19:11:26 +03:00
kd-11
182b20c33d
rsx: Fix draw count append when draw ranges are out of order
...
- It is common for draw counts to truncate at 256 even when it makes no sense to do so.
- e.g 256 is not a multiple of 3 so triangles will glitch out
2020-07-14 16:04:44 +03:00
Megamouse
4d9533ea54
input: use left and right squircle values
2020-07-13 21:23:48 +02:00
kd-11
ab3d36f0f3
rsx: Fix depth bounds test
...
- Allow depth bounds test to access the Z buffer even when depth test is disabled.
2020-07-10 15:59:15 +03:00
kd-11
632af8d723
rsx: Support partial texture descriptors
...
- It is safe to declare w > pitch and it works as long as sampling inside the legal 2D area is obeyed.
2020-07-10 15:26:07 +03:00
Eladash
282b00674a
SPU LLVM: Optimize non-constant Tag Update requests
2020-07-10 02:52:02 +03:00
Eladash
235d12aa6b
SPU MFC: Never clear tag status in WrTagUpdate
2020-07-10 02:52:02 +03:00
Eladash
5d1fc546a8
SPU MFC: Fix MFC_WrTagUpdate channel count
...
Always report available, in realhw this is just a hint if the previous tag update hasnt been checked yet by the MFC, avoiding blocking writes and allowing the SPU to execute some code while it processes the previous update request.
Except for MFC_TAG_UPDATE_IMMEDIATE, where it also waits for MFC to process it.
2020-07-10 02:52:02 +03:00
Eladash
eb993781ef
RawSPU: Log MMIO access
2020-07-09 23:24:47 +03:00
Eladash
84470c34db
SPU: Disable PUTLLC NOP transfers detection on TSX path
2020-07-09 03:17:35 +01:00
Eladash
f8dbfa1d1e
SPU: Implement GETLLAR polling detection
2020-07-09 03:17:35 +01:00
Eladash
d9750e8f9f
SPU/PPU reservations: Optimizations for reservation locks and check_state() (non-TSX)
2020-07-09 03:17:35 +01:00
Megamouse
53b95fea19
audio: rename audio channels to audio downmix
...
The setting does not actually define the channels themselves, only the downmix option that the PS3 provides.
Channels might be changed seperately in the future.
2020-07-08 21:11:23 +02:00
Megamouse
e2fd4e46f7
Only reboot audio if a relevant setting changed
2020-07-08 21:11:23 +02:00
Megamouse
20d6664dc1
Try to make most audio configs dynamic
2020-07-08 21:11:23 +02:00
Megamouse
8ee953ef8e
XAudio2: Call CoInitializeEx to prevent errors
...
I could not properly reset the audio backend and call CreateMasteringVoice without getting errors
2020-07-08 21:11:23 +02:00
Megamouse
5b7ee43352
XAudio2: print readable errors
2020-07-08 21:11:23 +02:00
Megamouse
bb0aaea92d
cellAudio: implement downmix to 5.1
2020-07-08 21:11:23 +02:00
kd-11
987ede2e6c
vk: Inject memory barrier upon conclusion of a framebuffer feedback loop
...
- Do not write to the texture until previous draw call is completed using it.
- This is usually not much of a problem until blending operations come into play.
2020-07-08 19:23:29 +03:00
Megamouse
5fae1b3637
HLE: fix sceNpDrmGetTimelimit invalid param error
2020-07-07 09:43:32 +02:00
Derrik Touve
cb08c53f2f
sys_net: Use np_handler dns if possible for sys_net_infoctl ( #8557 )
...
Without this, cellHttpSendRequest will use the hardcoded dns 192.168.1.1, which won't work if you're not on that network.
2020-07-07 08:25:29 +02:00
Megamouse
171e4fafed
Emu: simplify Emu::Stop some more
2020-07-06 21:14:16 +02:00
Megamouse
8d2ce2815c
Emu: Make prevent_display_sleep dynamic
2020-07-06 21:14:16 +02:00
Megamouse
d91551c277
Emu: always use Emu.Quit() to quit RPCS3
...
This creates a single possible point of failure for calling quit()
2020-07-06 21:14:16 +02:00
Eladash
dc25a3fa2a
PPU debugger: Show stack address of each function
2020-07-06 18:58:16 +02:00
Eladash
c98ec4d014
PPU debugger: Fix functions stack bounds check
2020-07-06 18:58:16 +02:00
kd-11
05dc6ad610
gl: Silence warnings
2020-07-05 16:58:44 +03:00
kd-11
3fe8499956
rsx: Improve ZCULL queued requests finalization
...
- Unifies the code
- Allows conditionals to be evaluated with a forwarder present
2020-07-05 16:58:44 +03:00
Megamouse
f1b1c9053c
Input/Qt: Check if gui callbacks are nullptr
2020-07-04 14:28:19 +02:00
Megamouse
99be645fcc
Qt: Add stick multipliers to the pad dialog
2020-07-04 14:28:19 +02:00
kd-11
acf51f0ead
rsx: Fix transfer descriptors for partially overlapping slices in head
...
- Height must be corrected to skip the piece that exists before the current slice
2020-07-03 14:29:54 +03:00
Eladash
72337f2678
SPU LLVM: Fix barrier commands enqueuing
2020-07-02 22:46:02 +03:00
kd-11
c9c0d7361d
rsx: Implement fast ZCULL barrier when query object is already known
2020-07-02 20:11:57 +03:00
kd-11
d7ffc8b4ac
rsx: Fix leaking ZCULL queries after a barrier
...
- Multiple queries can be queued up, process them all before completing the barrier
2020-07-02 20:11:57 +03:00
Bird Egop
eea12bad07
Implement Caret upwards and downwards move in overlay_edit_text ( #8342 )
...
* Implement caret upwards and downwards move in overlay_edit_text
* Optimize caret up and down movement
Co-authored-by: Megamouse <studienricky89@googlemail.com>
2020-07-02 09:06:37 +02:00
kd-11
bd14429f20
vk: Disable primitive restart for old GCN cards
...
- Also adds more Navi 14 chips to detection table
2020-06-30 15:00:07 +03:00
Megamouse
12dded403f
patch_manager: implement serials and app_versions
2020-06-29 23:56:27 +02:00
Megamouse
5269b69bc5
cellAudio: use downmix formula based on documentation
2020-06-29 09:06:36 +02:00
Eladash
2483cc6f8d
Fix race in Crypto/unedat.cpp, Make NPDRM keys usage atomic
2020-06-28 23:26:10 +01:00
Eladash
97717defa5
Remove devKlic/rifKey reset
2020-06-28 23:26:10 +01:00
kd-11
5e29bdbe22
vk: Add more GPUs to nvidia chip table
...
- Registers more TU116 and TU117 variants
- Registers GA100
2020-06-28 22:54:58 +03:00
kd-11
b437794e92
vk: Improve nvidia speedhack for non-turing cards
...
- Inverts the chip family check to skip any unidentified GPUs altogether
2020-06-28 22:54:58 +03:00
Eladash
2c93fecd8b
SPU: Use named constants for MFC tag updates
2020-06-27 20:42:41 +01:00
Eladash
20fcc6530f
SPU LLVM: Fix WRCH instruction to WrTagUpd
2020-06-27 20:42:41 +01:00
Eladash
9cb4402c16
Make error_code::value member private
2020-06-27 09:02:55 +01:00
Eladash
f29589e5cf
SPU debugger: Add atomic status and tag update channels information
2020-06-27 07:04:37 +01:00
Eladash
d7842b7de2
SPU LLVM: Fix WRCH instruction to WrTagMask
2020-06-27 07:04:37 +01:00
Megamouse
5a8eb9d3d7
Input: skip keyboard input when pads are disabled
2020-06-26 09:28:58 +02:00
kd-11
5ea6535fd5
rsx: Force flushing of NaN/INF to zero
...
- This option was always enabled for NVIDIA cards, but it seems some games would benefit from the option on other GPUs as well.
- TODO: Hwtest to verify correct behavior and plan how to safely implement in hw
2020-06-26 09:24:15 +03:00
Megamouse
76faaf43f7
Input: Use global variables for pad modifications
2020-06-26 04:42:52 +02:00
Eladash
ab9cdc70ad
cellSaveData: Emulate PPU processing of auto/list post-fixed callback
2020-06-25 19:50:33 +03:00
Eladash
e45d37073a
debugger: Shortend SPU/PPU thread names
2020-06-24 17:44:06 +02:00
kd-11
628cb1c779
rsx: Validate blend factors according to hardware testing
2020-06-23 12:15:02 +03:00
kd-11
a14e0a0104
rsx: Validate stencil op to match realhw behavior
2020-06-23 12:15:02 +03:00
kd-11
f3637cdfdb
rsx: Fix surface options hint mechanism
...
- Silly typo
2020-06-23 12:15:02 +03:00
kd-11
c6a9a5d5d7
rsx/fixup: Fix color clear logic
...
- Enable fast clears on ABGR formats in vulkan
- Fix disabling color clears for unsupported formats in GL
2020-06-23 12:15:02 +03:00
kd-11
7f917c8ba5
rsx: Fix ABGR decoding for colormask and clear color
...
- The bytes in these values are based on the format according to hw tests
- G8B8 is unaffected as the first two bytes are already G8B8 for A8R8G8B8 standard layout (BGRA)
- A8B8G8R8 and its derivatives have words 0 and 2 exchanged.
2020-06-22 20:12:41 +03:00
kd-11
e992cbe01b
rsx: Support DRGB8 sampling of render targets
2020-06-22 20:12:41 +03:00
Oschowa
5c1ce6350b
FAudio: remove 4x volume factor
...
Same as commit 66d13da2ac for the XAudio2 backend
2020-06-20 12:42:56 +02:00
Eladash
d86c9a2549
sys_mmapper: rewrite page fault thread notifications
...
* Fix a corner case where SPU thread has the same ID as a PPU thread.
* Fix a potential deadlock on Emu.Stop() while sending event in EBUSY loop.
* Thread specific notifications.
2020-06-18 20:13:54 +03:00
Eladash
3ee1d8aed1
fixup
2020-06-18 06:47:07 +03:00
Eladash
5c6dae498b
SPU LLVM: Avoid bad optimization in FCGT
2020-06-18 06:47:07 +03:00
kd-11
2086e7f2e8
rsx: Account for subpixel precision when converting DST coordinates to
...
SRC coordinates
- When extracting a 1x1 texture from another texture of a different
format, width conversion can result in a dimension of 0 if the
extracted texel is not a full texel in SRC
2020-06-17 22:18:47 +03:00
kd-11
c764925b4d
rsx: Properly handle conversion of G8B8 and related formats
...
- These formats are 16-bit packed, not separate 8-bit channels. Conversion requires byteswap for them.
2020-06-16 22:36:38 +03:00
kd-11
83d818d96f
rsx: Improve mipmap gathering
...
- Account for source offsets when grabbing subregions
- Scale input accordingly when sourcing from fbo in all paths
2020-06-16 19:12:03 +03:00
sampletext32
0ad4e91001
Avoid string reallocation in swizzle CgBinaryProgram
2020-06-15 22:26:49 +03:00
Eladash
731d4330fe
v128: A few optimizations ( #8432 )
2020-06-15 17:24:04 +03:00
Eladash
5777a1d426
SPU: Implement EBUSY error on non-empty mailbox (sys_spu_thread_send_event/sys_event_flag_set_bit)
...
Write into inbound mailbox under mutex.
2020-06-15 17:08:57 +03:00
Eladash
5fda9a4efb
sus_lwcond_signal_all: use protocol specified in lwmutex
...
Trying to fix a nearly impossible corner case.
2020-06-15 17:08:57 +03:00
Eladash
c15b5f1eca
SPU: Move check_state() outside of mutex scope
...
Can result in a deadlock in some cases, cpu flags are checked after this function as well anyways.
2020-06-15 17:08:57 +03:00
Eladash
314dc4c5de
sys_cond: Fix spurious EBUSY in sys_cond_destroy
...
Increment waiters count inside IDM's mutex lock scope.
2020-06-15 17:08:57 +03:00
Eladash
a0f0f58fc5
sys_event_queue: Fix IPC support
2020-06-15 17:08:57 +03:00
Eladash
92b7c56f29
sys_cond/mutex: Fix race between sys_cond_create and sys_mutex, Fix IPC support in sys_cond/mutex
2020-06-15 17:08:57 +03:00
kd-11
8d8fb4a2e4
rsx: Remove ARGB->D24S8 conversion shader which has been deprecated for years since compute capabilities were added to the emulator
2020-06-15 14:18:12 +03:00
kd-11
2e737ad483
rsx: Fix surface option invalidation
...
- Depth buffers can be in special "read" state when writes are disabled. Account for this.
2020-06-14 23:30:03 +03:00
Eladash
88a0e0fe2d
cellAudio: Minor fixup
2020-06-14 18:45:46 +01:00
Eladash
e2248332ae
rsx: Make "Disable ZCull Occlusion" setting dynamic
2020-06-14 18:45:46 +01:00
kd-11
3663a8ab4d
rsx: Improve surface options invalidation
2020-06-14 20:13:12 +03:00
Eladash
5430892052
sys_vm: Limit total process vsize to 256MB ( #8431 )
2020-06-14 15:27:34 +01:00
Eladash
ff04cd6d69
cellAudio: Fix event queue attachment
2020-06-14 02:31:23 +03:00
Eladash
aa4fdff82c
Fix lv2_obj::name64 regression
2020-06-14 02:25:29 +03:00
Nekotekina
e485c9c79c
Atomically overwrite config.yml
...
Protection against data corruption.
2020-06-12 22:41:50 +03:00
Eladash
bd6fdf3f2d
rsx: Optimize rsx::rsx_iomap_table construction
2020-06-12 22:40:58 +03:00
Eladash
e1f8573c68
sys_net: Fix sys_net_bnet_setsockopt page faults
2020-06-12 22:39:13 +03:00
Eladash
4bc157881d
sys_net: Stub sys_net_infoctl command 9
2020-06-12 22:39:13 +03:00
Eladash
f0d526411c
IDM: Implement idm::clear<typename>
2020-06-12 22:12:36 +03:00
kd-11
e1183f6919
gl: Fix depth buffer byteswap hint
...
- uint24_8 is not actually swapped, it is decoded in a special way
2020-06-12 20:49:47 +03:00
kd-11
f4ec28d932
rsx: Merge instruction expand flag with the other sign expand flags
...
- Avoids double expansion when both the exp_tex flag is set AND the texture also is sampled as signed
- Should fix missing eyeballs in Mass Effect 1 with the previous sign expansion fix
2020-06-12 20:19:20 +03:00
kd-11
ce587f43a0
rsx: Implement signed normalized texture formats
...
- Already partially supported via EXP option in the shader opcode, but format decoding was disabled.
- Noticed in some UE3 games which use _SNORM variants on PC but _UNORM on rpcs3
2020-06-12 20:19:20 +03:00
Eladash
6892399699
kernel_explorer: More Improvements
2020-06-12 09:28:23 +02:00
Eladash
b9cb181691
sys_memory: Improve allocation/deallocation syscalls
2020-06-11 20:03:32 +03:00
Eladash
0bf8f2a527
PPU interpreters: Fix VRFIM, VRFIN, VRFIP, VRFIZ
2020-06-11 14:31:38 +03:00
Megamouse
2dca8d84e1
patch manager
2020-06-11 13:15:25 +02:00
Eladash
c36c425fb9
kernel explorer: Improvements
2020-06-08 05:46:36 +03:00
Nekotekina
bfee541540
Atomically overwrite games.yml
...
Reduce chances of losing information.
2020-06-07 22:44:07 +03:00
Nekotekina
3d7c38ff9d
Remove lambda in sys_net_bnet_poll
2020-06-07 22:44:07 +03:00
Nekotekina
5d27f1c732
PPU: implement VNMSUBFP (precise variant)
2020-06-07 22:44:07 +03:00
Nekotekina
3b8e7d0967
Implement v128::fma32f
2020-06-07 22:44:07 +03:00
kd-11
ebbf329b6a
gl: Improve async compiler synchronization with initialization
...
- On multithreaded mesa, the program initialization routine was not
being flushed correctly. Set up synchronization fence after initialization
is complete.
2020-06-07 12:54:34 +03:00
kd-11
87cc937d4e
rsx/fp: Separate SRC precision modifiers
...
- SRC0, SRC1 and SRC2 have different bits for precision modifiers all stored inside SRC1
- This explains the strange observed behavior of the MAD instruction which has 3 inputs
2020-06-07 12:07:27 +03:00
Malcolm Jestadt
dcf5c06d6d
SPU LLVM: Optimize FM when op.ra == op.rb
2020-06-06 22:27:48 +03:00
Malcolm Jestadt
8357523ec0
SPU LLVM: Additional FCGT optimizations
2020-06-06 22:27:48 +03:00
Malcolm Jestadt
39149fd84d
SPU LLVM: Partial revert for FM/FMA changes and other improvements
...
- Revert changes to FM and FMA instructions
- Allow non accurate/approx FMA family instructions to use native FMA
- Minor optimization for FMA ops with a constant 0 multiply
2020-06-06 22:27:48 +03:00
Malcolm Jestadt
289c594187
SPU LLVM: Fix theoretical issue with FCGT optimizations
2020-06-06 22:27:48 +03:00
kd-11
d47d597b34
vk: Make the depth-convert pass multisample aware
2020-06-05 17:19:24 +03:00
kd-11
69c2150fbd
vk: Fix query reset when renderpass is active
...
- Performs delayed query reset on-demand
2020-06-05 17:19:24 +03:00
Megamouse
1cb4fb9c50
stub cellPngEnc
2020-06-04 23:13:40 +03:00
Megamouse
413f87b737
Add error_code to cellPngDec
2020-06-04 23:13:40 +03:00
Megamouse
8a8edb1b62
stub sceNpCommerce2
2020-06-04 23:13:40 +03:00
Megamouse
caa1324457
stub sceNpTus
2020-06-04 23:13:40 +03:00
Megamouse
41eb6d4461
cellAudio improvements
...
- use CELL_AUDIO_BLOCK_32 where possible
- use CELL_AUDIO_BLOCK_SAMPLES where possible
- remove redundant logging
- return CELL_AUDIO_ERROR_AUDIOSYSTEM in cellAudioGetPortConfig (probably unreachable code anyway)
- return CELL_AUDIO_ERROR_PORT_OPEN in cellAudioPortOpen
- stub cellAudioSetPersonalDevice cellAudioUnsetPersonalDevice and cellAudioMiscSetAccessoryVolume
2020-06-04 23:09:47 +03:00
illusion
0315781306
Audio dumper: append filename with titleid and date-time
...
prevents overwrite of old file
Co-authored-by: Megamouse <studienricky89@googlemail.com>
2020-06-04 20:10:56 +03:00
sampletext32
437f374bae
Fix some checks
2020-06-04 19:48:08 +03:00
Ani
9657b3f1d4
Fix sys_net_bnet_poll regression ( #8337 )
...
Co-authored-by: Eladash <elad3356p@gmail.com>
2020-06-04 17:30:11 +01:00
kd-11
650152e05f
rsx: Fix fragment state updates
...
- Fix copypasta for POLYGON_STIPPLE_PATTERN vs SET_POLYGON_STIPPLE method binding
- Use proper enums for ROP_control bits to avoid confusion
2020-06-03 22:05:33 +03:00
kd-11
73fe9b51de
rsx/fp: Ignore self-referencing register writes.
...
- Sometimes, usually with shaders that do pack/unpack operations, there is a write-to-self operation.
For example r0.xy = r0.xy
Obviously no new data was introduced into "r0" by this, so we should not mark the register as having new data.
- TODO: Investigate on realhw if self-reference is needed to "cast" the overlapping half registers to their full register counterparts.
2020-06-03 09:45:02 +03:00
kd-11
26b2e4253d
rsx: Properly account for memory sizes of reused surfaces
2020-06-02 21:37:57 +03:00
kd-11
b353bf6c56
rsx: Improve surface cache resource management
...
- Do not allocate too many objects. This is a problem in games using dynamic memory allocators that can make it rare for a surface to fall on the same address twice, keeping zombie RTVs and DSVs alive much longer than needed.
- Current limit used is 256M of virtual VRAM which is impossible on retail PS3
2020-06-01 22:24:27 +03:00
Malcolm Jestadt
c601374b1f
SPU LLVM: Use clamping helpers for FMA32x4 and FM
2020-06-01 21:39:28 +03:00
Megamouse
66d13da2ac
XAudio2: remove nasty 4x volume factor
2020-06-01 19:05:48 +03:00
Nekotekina
938ca90a02
Improve Stop Watchdog
...
Prevent termination if PPU LLVM compilation is in progress.
2020-06-01 02:27:33 +03:00
Nekotekina
2d2ed7efd0
Add game patch support in 'Create PPU Caches'
...
Try to compile patched version of EBOOT.BIN
2020-05-31 23:06:54 +03:00
Nekotekina
1507a59786
SPU LLVM: fix spu_cache dependency
...
Should fix possible crash on exit.
2020-05-31 21:54:04 +03:00
Eladash
675fde69aa
Avoid copying std::shared_ptr in sys_semaphore
2020-05-31 21:02:52 +03:00
Megamouse
99895471ae
cellAudio: make master volume dynamic
2020-05-31 07:37:59 +02:00
Nekotekina
377ad9887c
Compile EBOOT.BIN on 'Create PPU Caches'
2020-05-31 02:26:40 +03:00
kd-11
c9a978a03e
Typo fix
...
Co-authored-by: Megamouse <studienricky89@googlemail.com>
2020-05-30 14:47:10 +03:00
kd-11
59d44cd1cc
gl: Fix shader logging
2020-05-30 14:47:10 +03:00
kd-11
542a6aed51
rsx: Add stippled rendering support to interpreters
2020-05-30 14:47:10 +03:00
kd-11
1677618c75
rsx: Implement stippled rendering
2020-05-30 14:47:10 +03:00
Eladash
3df83e03a9
SPU: Fix possible deadlock after access violation via DMA transfers
2020-05-28 23:23:11 +03:00
Eladash
a199c71a55
SPU: Fix page faults notifications (non-TSX)
2020-05-28 23:23:11 +03:00
Eladash
3d20ce70f5
rsx: Fix possible case NULL zcull_ctrl in on_exit()
2020-05-28 11:56:02 +02:00
Eladash
f0cdd8ace6
PPU: Implement PPU Traps Stubbing option
2020-05-27 22:39:29 +03:00
Nekotekina
8e9d2fa70e
SPU LLVM: implement get_segment_base()
...
Fake function used to compute 32-bit offset of local functions.
2020-05-27 18:53:09 +03:00
Nekotekina
abf9a08ee3
Fix warnings
2020-05-27 18:41:17 +03:00
xddxd
f56b362769
rsx: Copypasta fix ( #8289 )
2020-05-25 20:07:11 +01:00
Eladash
865180e63e
sys_mmapper: Fix possible memory leak on error of create_lv2_shm
2020-05-24 19:24:07 +03:00
Eladash
3265772ae4
idm: Implement creation/destruction invalidation counter
...
* "Ensures" newely created IDs won't have the same ID as old destroyed objects for lv2_obj. (256 tries cycle)
Similar to how the kernel implements it.
2020-05-24 19:24:07 +03:00
kd-11
224a0e4b1a
rsx: Fix data format remapping
...
- Includes missing 0xEE and 0x44 variants of the 2-component data format remapper
2020-05-24 13:51:19 +03:00
kd-11
bd41a108d8
nv3089: Account for subpixel addressing
...
- Those strange offsets noted in some games seem to match to subpixel addressing.
For example, when scaling down by a factor of 4, a pixel offset of 2 will end up inside pixel 0 of the output
2020-05-24 11:31:37 +03:00
Mrlinkwii
68bee397eb
Update cellSpurs.h
2020-05-22 22:19:04 +03:00
Eladash
81749f4353
SPU/PPU disasm: replace unknown instructions message with question marks
2020-05-22 17:37:22 +03:00
kd-11
7080305d82
vk: Implement masked stencil buffer clears
...
- Partial stencil buffer clears were not implemented. This is for example where a game can choose to clear only some bits from the stencil buffer.
- Vulkan does not support masked stencil clears natively, it has to be implemented as a graphics operation.
- Also refactors vulkan overlay passes to use global resource system instead of forcing the render backend to own all of them and manage lifetimes.
2020-05-21 19:27:23 +03:00
Eladash
7c3166a0c6
SPU MFC: Fix MFC_WrListStallAck on interpreters
2020-05-20 22:55:30 +03:00
Eladash
4405f46aec
SPU MFC: Fix SN interrupts
2020-05-20 22:55:30 +03:00
Eladash
81684919f5
SPU MFC: Implement MFC_SDCRZ_CMD
2020-05-20 22:55:30 +03:00
sampletext32
1a8fb61373
Fix some misspells
...
Note: in main.cpp there are many dirs similar to Program Files, so tip should be appropriate.
2020-05-20 22:53:24 +03:00
Malcolm Jestadt
c47d04fd2f
SPU: Optimize FCGT
...
- Optimize FCGT to a single signed integer comparison when possible
- Add is_spu_float_zero helper
2020-05-20 21:55:01 +03:00
Megamouse
703841e251
Qt: disable TSX in the config.yml if not supported
2020-05-18 17:46:31 +02:00
Nekotekina
72fedccaba
rsx_utils.h: fix signed/unsigned comparison
2020-05-18 00:51:57 +03:00
Eladash
201d54ee08
PPU interpreters: Implement AltiVec NaNs precedence and data preservation
2020-05-18 00:35:06 +03:00
Ani
581176fb1a
gl: Restrict insert_vertex_input_fetch workaround to Intel proprietary
...
It works fine on Mesa iris
Fixes detection of Mesa as recent Mesa does not have "x.org" on vendor string, allowing vendor_MESA to become true instead of vendor_INTEL on Mesa Intel
2020-05-17 17:49:14 +03:00
Eladash
377e2ce3e8
rsx: Write 4-byte long data to all semaphores ( #8246 )
...
* rsx: Write 4-byte long data to all semaphores
2020-05-17 17:48:35 +03:00
Eladash
a2653532ef
SPU reservations (TSX): Remove wait flag in PUTQLLUC
2020-05-17 14:20:21 +03:00
kd-11
37df3c6f96
rsx/fp: Fix precision clamping on MAD instruction
2020-05-17 09:11:26 +03:00
AniLeo
a8bca8b2ed
gl: Only log shaders if g_cfg.video.log_programs is enabled
2020-05-16 16:16:17 +01:00
AniLeo
b0d3c4d75e
gl: Refactor shader type usage
...
Use Common/GLSLTypes.h program_domain instead of duplicated own internal
type
2020-05-16 16:16:17 +01:00
AniLeo
3db2f23e02
gl: Refactor shader compilation
2020-05-16 16:16:17 +01:00
Ani
661636efef
gl: Check for EXT_depth_bounds_test
...
Avoid glEnable/glDisable GL_DEPTH_BOUNDS_TEST_EXT flood that returns
GL_INVALID_ENUM if the feature isn't supported
2020-05-16 14:50:05 +01:00
AniLeo
99f5145aab
glsl: Avoid implicit int->uint conversions
...
Silences debug output regarding implicit int -> uint conversions
2020-05-16 11:45:59 +01:00
Eladash
8a0425570c
rsx: Fix data written to RSX semaphores and the initial data of them ( #8235 )
2020-05-16 09:55:56 +01:00
AniLeo
eecb22e749
gl: Remove older debug code
...
KHR_DEBUG path makes this obsolete, usage of this older path has been
removed a long time ago
2020-05-16 08:29:00 +01:00
AniLeo
3ad12cf5f8
gl: Avoid issuing glDelete calls with m_id == GL_NONE
...
Applies GL_NONE macro usage where it makes sense
2020-05-16 08:29:00 +01:00
AniLeo
308cdfac35
gl: Rewrite Debug Output
...
Remove Windows restriction, enable Debug Output for every supported OS
Filter our severity by Khronos severity
Handle and log source and type enums
2020-05-16 08:29:00 +01:00
Nekotekina
7824419bbf
Remove std::rotr usage for now
...
It seems to be missing on some std implementations.
2020-05-14 21:42:44 +03:00
Mrlinkwii
c22d778143
Spelling fix in texture_cache.h ( #8219 )
...
heurestic_end -> heuristic_end
2020-05-14 21:42:21 +03:00
Eladash
61f43d78df
SPU: Minor cleanup of exception in stop_and_signal
2020-05-14 16:58:50 +01:00
Eladash
54dd9f4eae
sys_spu: Fix sys_spu_thread_group_terminate vs sys_spu_thread_group_exit race on values
2020-05-14 16:58:50 +01:00
Eladash
91d06a9729
SPU LLVM: fixup after #8175 ( #8214 )
...
Mask out RESULT cmd bit, do not create unbound branch blocks. (non-TSX)
2020-05-14 13:34:14 +01:00
kd-11
310f367fb1
rsx: Improve blit engine memory validation ( #8215 )
...
- In blit engine logic there is a tendancy to over-allocate so as to avoid having to sticth together textures later
- Sometimes this can lead to out of bounds access and crash applications, so memory must be validated
2020-05-14 12:57:58 +01:00
Nick Renieris
b1fb5b6239
Emu/Config: Add option for accurate PPU LLVM vector NaNs
...
Turned off by default.
2020-05-14 11:14:28 +01:00
Nick Renieris
20d8d38e53
PPU Interpreter: Accurate vector instruction NaNs
...
Tested with https://github.com/RPCS3/ps3autotests/tree/master/tests/cpu/ppu_vpu .
This commit gets us from 2746 to 353 different lines compared to realhw.
2020-05-14 11:14:28 +01:00
Nick Renieris
78ac2a86bb
PPU LLVM: Accurate vector instruction NaNs
...
Tested with https://github.com/RPCS3/ps3autotests/tree/master/tests/cpu/ppu_vpu ,
results in that test improved by about half.
2020-05-14 11:14:28 +01:00
kd-11
cc723ed45c
vk: Properly fix dynamic state descriptors
2020-05-13 22:20:43 +03:00
kd-11
ed82288c1b
rsx/fp: Support more types of texture access
...
- Allows more instructions to correctly decode depth textures
2020-05-13 22:20:43 +03:00
Eladash
7680466e0d
Minor EFAULT fix in sys_semaphore_get_value/sys_event_flag_get
...
ESRCH preceeds EFAULT in both syscalls.
2020-05-13 19:36:44 +03:00
Eladash
9266507e4c
SPU: Implement spu_channel_(4_)t::try_read
2020-05-13 19:36:44 +03:00
Eladash
8cca113ef4
sys_spu: Add short sleep in sys_spu_thread_group_terminate
2020-05-13 19:36:44 +03:00
Eladash
7ff25588f4
sys_spu: Minor cleanup of group termination process
2020-05-13 19:36:44 +03:00
Eladash
93122196d9
vm: Fix vm::passive_lock regression ( #8175 )
...
possible broken signaling in rare occusions.
2020-05-13 16:53:59 +03:00
Eladash
5c4c8f4539
PPU: Use optimized reservation waiting for reservation load (non-TSX)
2020-05-13 16:53:59 +03:00
kd-11
118bfbbe98
rsx: Rewrite data texture remap expansion
...
- 16-bit channel formats have special 0x4|0xE encoding for only 2 channels, not 4
- float textures do not take any remapping and crash if you try it.
Depth float textures work fine though.
2020-05-13 14:33:22 +03:00
Eladash
12f0278808
SPU LLVM: Improve MFC transfers recompilation for non-TSX
2020-05-13 11:10:13 +01:00
Eladash
b38580bf32
SPU: Use optimized PPU signaling to SPU on reservation pause
2020-05-13 11:10:13 +01:00
Eladash
525453794f
SPU/PPU reservations: Optimizations part 1
...
- Implement vm::reservation_trylock, optimized locking on reservation stores with no waiting. Always fail if reservation lock bitsa are set.
- Make SPU accurate GET transfers on non-TSX not modify reservation lock bits.
- Add some optimization regarding to unmodified data reservations writes.
2020-05-13 11:10:13 +01:00
Megamouse
eb5ec211c2
Input: remember registered ldd controllers
...
- Don't reset ldd pads when saving a pad config
- Prevent configuration of registered ldd pads in the gui while ingame
2020-05-13 11:17:58 +02:00
JohnHolmesII
69ea573b0d
vk: Remove more deprecated VK_DYNAMIC_STATE_RANGE_SIZE usage ( #8206 )
2020-05-13 02:52:01 +01:00
kd-11
dd9397473a
vk: Remove deprecated enum VK_DYNAMIC_STATE_RANGE_SIZE ( #8202 )
2020-05-12 22:36:55 +01:00
sampletext32
86cf8a1717
Fix possible cur_ip nullptr usage in np_handler.cpp
2020-05-12 18:28:12 +02:00
Eladash
f95b81574f
sys_spu: Fix race in sys_spu_thread_group_destroy and other minor fixes ( #8182 )
...
* sys_spu: Fix race in sys_spu_thread_group_destroy and other minor fixes
* SPU: Wait for all threads to have error codes if exited by sys_spu_thread_exit
On last thread in group to run.
* sys_spu: Fix sys_spu_thread_group_start
* fixup ad fix sys_spu_thread_group_terminate
idk why "- !group->running" was put in the first place but its probably no longer relevant due to other changes and was causing other issues such as not always waiting for last SPU thread to set group state to INITIALIZED.
2020-05-11 21:24:04 +03:00
RipleyTom
dd5c54290c
Improves skylander generation ( #8177 )
2020-05-11 11:57:13 +01:00
kd-11
b6e8560532
rsx/fp: Fix PK2/UP2 instruction
...
- These variants take unsigned scalar inputs, not signed.
- Fixes ARGB8->X16Y16 in SR: Gat out of Hell
2020-05-11 09:37:00 +01:00
kd-11
79e2a87bc5
rsx: Fix NOP shader passing
...
- NOP shaders are used to stub rendering when a pass is supposed to be disabled
2020-05-10 21:54:34 +03:00
Eladash
bd61347b21
sys_spu: reset group exit status in sys_spu_thread_group_start
2020-05-10 03:46:11 +01:00
Eladash
09797c3584
sys_spu: Improve sys_spu_thread_get_exit_status
2020-05-10 03:46:11 +01:00
kd-11
14969cd8d0
rsx: Disable SCA writes to output register if vec result flag is set.
...
- Noticed when debugging X-men origins: wolverine which has a bogus SCA op whilst writing vector to output
- It makes no sense for both SCA and VEC to both write to the same register in the same instruction as memory ordering becomes an issue
2020-05-08 14:35:07 +03:00
kd-11
79c54aeba9
rsx: Move analyser dump to its own config option
2020-05-08 14:35:07 +03:00
kd-11
a1b6415c5a
rsx: Fix alpha ref
...
- The alpha ref register is compared directly to the ROP output register in realhw
- alpha ref content must match bit-width of ROP register, which means fp16 values are possible
2020-05-08 00:02:47 +03:00
Megamouse
8e2b2bc179
Don't load custom configs when adding games
2020-05-07 18:10:49 +02:00
Nekotekina
e1042bc631
Get rid of "module" keyword
...
Workaround some intellisense problems.
2020-05-06 18:20:11 +03:00
Eladash
a6025df7de
vm: reset stack memory after deallocation
2020-05-06 18:03:37 +03:00
Megamouse
5c4b8e8dee
Input: fix xinput deadzones
2020-05-06 09:33:38 +02:00
Megamouse
f95bf01c78
Input: fix trigger scaling
...
this is not a problem at the moment, but if you increase the trigger_max then the old code reports values bigger than 255
2020-05-06 09:33:38 +02:00
Megamouse
d4606cfdb9
Input: remame some functions
2020-05-06 09:33:38 +02:00
Nekotekina
907adc817e
Fix some warnings (GCC)
2020-05-05 21:55:22 +03:00
Eladash
1bd6cb2105
SPU/PPU debugger: use ':' instead of '='
2020-05-05 13:46:26 +03:00
kd-11
a3f25bc7c7
rsx/interpreter: Fix DIVSQ instruction
2020-05-05 13:18:03 +03:00
kd-11
a0f63a31e3
vk: Enable optimization passes for generated SPIRV
2020-05-05 13:18:03 +03:00
kd-11
4f7c020e63
glsl: Improve VGPR usage
...
- VGPR usage lowered from 159 -> 127 for texturing. Occupancy doubled from 1 to 2
- Eliminate most temporary registers
2020-05-05 13:18:03 +03:00
Eladash
edde748519
sys_event_queue: Fix forced event queue destruction
...
Add missing last existence check at sys_spu_thread_(try)receive_event and lv2_event_queue::send.
2020-05-04 01:10:19 +03:00
Eladash
37ce7056ac
lv2: Minor optimization for "awake all" threads in sleep queue
2020-05-04 01:10:19 +03:00
Eladash
b84b8f4db4
sys_cond_signal_all: Use SYS_SYNC_PRIORITY protocol to signal threads
2020-05-04 01:10:19 +03:00
Eladash
72bef8dd7f
PPU: Clear reservation on context switch
...
Ensure that only 2 PPU reservations exist at maximum at a time.
2020-05-02 14:57:38 +03:00
Eladash
0e6937a359
SPU GETLLAR: Don't use loop detection for TSX
2020-05-02 14:57:38 +03:00
Nekotekina
fc68c508c8
LLVM DSL: fix FNeg pattern matching
2020-05-01 22:00:57 +03:00
Nekotekina
cda8b3a59e
RSX: fix new warnings
2020-05-01 22:00:57 +03:00
Malcolm Jestadt
c1bd154bcd
SPU: Optimize FMA ops with 0 addend
2020-05-01 17:52:10 +03:00
Eladash
2b75df22d9
sys_event_queue: Fix ports disconnection after queue destruction
2020-04-30 18:58:42 +03:00
Eladash
37110098c7
cellAudioOut Improvements
2020-04-30 15:45:20 +03:00
Megamouse
8f0af6a6fe
rsx/interpreter: merge shader settings
...
- merge disable_asynchronous_shader_compiler and interpreter_mode
- removes disable_asynchronous_shader_compiler setting
- Adds the resulting settings as radio buttons to the gui tab
2020-04-30 15:02:59 +03:00
kd-11
2281c4f662
Fix build
2020-04-30 15:02:59 +03:00
kd-11
2ed50ba263
rsx/interpreter: Improve instruction accuracy
...
- Fix DIV instruction
- Add EXP_TEX modifier
- Implement WPOS register read
- Swap 3D and Cubemap enums to match RSX ids
- Adds two extra instruction classes: flow control and packing control
- Implement remaining FP instructions with exception of the rare projected texture lookups
- Fix typo causing output color index > 0 to not work
- Fix KIL instruction
- Implement conditional vertex program writes
2020-04-30 15:02:59 +03:00
kd-11
fc5b4026e1
vk: Implement optimized pipeline cache
2020-04-30 15:02:59 +03:00
kd-11
bc5c4c9205
rsx/gl: Implement variable path interpreter for optimal performance
2020-04-30 15:02:59 +03:00
kd-11
930bc9179d
rsx/interpreter: Improve instructions support
...
- Must statically write the gl_ClipDistance registers else you get uninitialized trash.
This problem is more readily apparent on NVIDIA technology but even AMD is not completely immune.
2020-04-30 15:02:59 +03:00
kd-11
b4bf48c33b
vk: Integrate shader interpreter
2020-04-30 15:02:59 +03:00
kd-11
0072df7f20
rsx/gl: Add basic interpreter support to OGL
...
- Adds basic interpreter functionality.
- Flow control and other instructions not yet implemented.
2020-04-30 15:02:59 +03:00
kd-11
65e9e568b5
config: Register shader interpreter modes
2020-04-30 15:02:59 +03:00
Nekotekina
19acf260d8
SPU DMA: Fix PUTLLUC (TSX)
...
Prevent edge case of missing store.
2020-04-29 15:40:41 +03:00
Eladash
f4f0fb88b1
kernel explorer: Add more information about SPU/PPU threads
2020-04-29 15:32:16 +03:00
Eladash
dd6825a7bd
Fix sys_ppu_thread_start error checking, fix rare bug in sys_ppu_thread_create
...
* Correct error code to EBUSY.
* lv2_obj::awake was called even when EBSUY should be returned.
* Fix sys_ppu_thread_create for a newly created thread with the same id as ppu_thread::id_base. (can happen if main thread exited before its creation)
2020-04-29 08:58:09 +03:00
Eladash
c1dc6838fa
Fix sys_ppu_thread_get_priority page faults
2020-04-29 07:57:47 +03:00
Eladash
69f82a7311
Make spu_mfc_cmd fmt properly show stalled commands
2020-04-29 07:47:49 +03:00
Eladash
791ec95313
sys_rwlock: Do not allow SYS_SYNC_PRIORITY_INHERIT
2020-04-29 05:56:47 +03:00
Eladash
954e3f6e6c
Fixup for cpu_flag::pause state check after #8114
2020-04-29 05:56:47 +03:00
Nekotekina
689419b0ca
Remove test_stopped() check from ppu_load_acquire_reservation
...
Fixes warning.
2020-04-29 00:09:40 +03:00
Eladash
833ace1190
rsx: Fix zcull time to not time travel to the future
2020-04-28 21:07:15 +03:00
Eladash
a505d87565
Partial revert of 3be687cd18
2020-04-28 20:20:19 +03:00
Nekotekina
790fd9ce14
SPU DMA: implement cmp_rdata_avx
...
Use technique similar to mov_rdata_avx with inline assembly.
2020-04-28 17:58:26 +03:00
Eladash
7da8ba5c15
Wait for SPU event to be received in sys_spu_thread_group_exit
...
Also use atomic check for group->run_state outside the mutex,
explicitly forbid group termination while we are waiting for an event to be received.
2020-04-28 14:58:17 +03:00
Eladash
a9c18964b6
Add missing cpu state check sys_spu_thread_receive_event
2020-04-28 14:58:17 +03:00
Eladash
fe7933b0d2
Make ESTAT consistent in sys_spu_thread_group_terminate
2020-04-28 14:58:17 +03:00
Eladash
9506676223
SPU debugger: dump Stall Stat and SRR0
2020-04-28 14:27:40 +03:00
Eladash
7d7909149f
SPU: Detect reservation spinning loop
2020-04-28 14:27:40 +03:00
Eladash
3be687cd18
PPU: Fix LWARX/LDARX on TSX path
2020-04-28 14:27:40 +03:00
Eladash
e423128a32
SPU: New GETLLAR technique
2020-04-28 14:27:40 +03:00
Nekotekina
3ec73b651e
SPU DMA: more tuning for mov_rdata_avx
...
Avoid unaligned stores.
Prefer asm path if __AVX2__ is not set.
Don't emit vzeroupper if __AVX__ is set.
2020-04-27 18:05:52 +03:00
Nekotekina
4f71c570bd
SPU DMA: disable memcpy path
...
Due to update of the alternative path (SSE/AVX)
2020-04-26 22:36:55 +03:00
Nekotekina
8ae2554505
Implement mov_rdata_avx
2020-04-26 22:36:45 +03:00
Nekotekina
58ba6d68bb
Don't use std::popcount (workaround)
...
It seems MSVC uses POPCNT instruction when compiling for SSE2.
2020-04-25 18:01:39 +03:00
Megamouse
773448a8f6
Crypto/Qt: check target app version for packages
2020-04-25 15:17:17 +02:00
jacob1218
72ab5f05f4
change minimum audio buffer duration
2020-04-25 15:27:18 +03:00
scribam
3fd3bd7ca1
spu: Add some "if constexpr"
2020-04-25 14:56:47 +03:00
Megamouse
e4cb9ef7cd
cellpad: add pclass_profile flags
2020-04-25 10:17:48 +02:00
Megamouse
4e6d95c5b8
Qt/input/cellpad: enable product choice
2020-04-25 10:17:48 +02:00
Eladash
256c74def2
sys_rsx: Fix error code instead of success on invalid context
2020-04-23 14:01:04 +03:00
Eladash
c48ccc6f3c
sys_rsx: Fix zcull bind error checking regression
2020-04-23 14:01:04 +03:00
Megamouse
18219afbf7
Qt: move rsx capture to Utilities menu
2020-04-22 21:43:03 +02:00
Megamouse
ebd92a2f2f
Qt: Add Firmware Cache options to main window menu
2020-04-22 16:58:20 +02:00
Eladash
8c747bf0a2
sys_rsx: More error checks for ZCULL area binding
...
And clamp zcull offset to 256MB, it's unknown if only the error check clamps or it is clamped entirely.
2020-04-21 16:18:32 +01:00
Eladash
b94e4247cc
rsx: More strict zcull stats enabling
2020-04-21 16:18:32 +01:00
Eladash
dbce10d0e3
PPU LLVM: Fix rounding regression of FNMADDS, FNMSUBS ( #8066 )
...
* PPU LLVM: Fix rounding regression of FNMADDS, FNMSUBS
2020-04-19 20:55:26 +01:00
rxys
5101bc189e
Fix FMA copypasta ( #8060 )
2020-04-19 19:17:19 +01:00
Eladash
5960de2e20
PPUAnalyzer: Check if TOC from OPD is a valid address
2020-04-19 10:56:42 +01:00
Eladash
1cb3bf6dab
Minor fixup for unimplemented syscall args dump
2020-04-19 10:56:42 +01:00
Eladash
0bf73ba0bc
PPU debugger: report functions on registers display
2020-04-19 10:56:42 +01:00
Eladash
368bd7cf02
PPU debugger: read 32-bit pointer instead of 64-bit
...
PPU ABI supports only 32-bit pointers in userland, also fix it to use super ptr.
2020-04-19 10:56:42 +01:00
Eladash
83c7f6f149
debugger: Rephrase "Current function" to "In function"
...
Takes less space which makes actual function name display a bit nicer.
Also the meaning is clearer.
2020-04-19 10:56:42 +01:00
Eladash
6210507a37
sys_rsx: Fix tiles on MAIN memory error checking
2020-04-18 10:20:03 +03:00
Eladash
06d4505992
sceNp: Override k_licensee for PE game category
...
Co-Authored-By: AniLeo <ani-leo@outlook.com>
2020-04-17 11:41:50 +01:00
Eladash
a3f2dfa232
sys_isolated_spu
2020-04-17 11:41:50 +01:00
Eladash
921b1aadfb
lv2: Log all arguments of unimplemented syscalls
2020-04-17 11:41:50 +01:00
rexys
8f3b04cbd6
rsx: Fix is_fifo_idle with hle gcm
2020-04-16 12:59:19 +03:00
Nekotekina
0f6a0d2740
Expand vm::g_addr_lock to 64 bit to support ranges
...
Optimization.
2020-04-16 02:25:43 +03:00
Nekotekina
c7fe8567b8
Experimental squashing of reservation memory area.
...
Enables trivial synchronization between shared mem.
Reduces memory usage, but potentially degrades performance.
Rename an overload of vm::passive_lock to vm::range_lock.
2020-04-16 02:25:43 +03:00
Eladash
8cb1f4fe26
liblv2 HLE: Fix spu_elf_info loader for SCE SPU images ( #8045 )
2020-04-15 21:19:46 +01:00
Megamouse
cf229a8e9f
some more dynamic settings
2020-04-15 18:25:25 +02:00
Nekotekina
074b9f94db
Fix regression in SPU ASMJIT
...
Incorrect arithmetics.
2020-04-15 12:19:15 +03:00
scribam
20f53e65eb
cmake: Add support for target_precompiled_headers if available
2020-04-14 23:00:51 +03:00
Nekotekina
b1b67a13c6
Revert "Replace rotate utils with std::rotl" (partial)
...
This reverts commit 4d8bfe328b .
2020-04-14 19:45:53 +03:00
Eladash
bc3b70c338
Fix ppu_rotate_mask
2020-04-14 19:10:30 +03:00
Eladash
63be05d5d3
minor ppu fixup
...
does not affect anything except consistency.
2020-04-14 17:09:58 +03:00
Eladash
ec1e82bc9d
SPU debugger: Implement blocking functions dumping
2020-04-14 17:09:58 +03:00
scribam
2e397e38a4
Typos
2020-04-14 17:06:58 +03:00
scribam
f37adc4188
Add fallthrough attribute
2020-04-14 17:06:58 +03:00
Nekotekina
4d8bfe328b
Replace rotate utils with std::rotl
...
More include cleanup.
2020-04-14 16:05:58 +03:00
Nekotekina
f72af2973d
Replace utils::popcnt32 with std::popcount
...
Cleanup includes.
2020-04-14 16:05:58 +03:00
Nekotekina
032e7c0491
Replace utils::cntlz{32,64} with std::countl_zero
2020-04-14 16:05:58 +03:00
Nekotekina
d0c199d455
Replace utils::cnttz{32,64} with std::countr_{zero,one}
...
Make #include <bit> mandatory.
2020-04-14 16:05:58 +03:00
Eladash
2dcc3255b2
Fix sys_net_bnet_sendto ( #8026 )
2020-04-13 18:49:12 +01:00
JohnHolmesII
a8a83c9724
cellRtc: Extend before shift, per decompiled output
2020-04-13 14:37:11 +03:00
JohnHolmesII
f0b1c8302a
Fix order of operations warning
2020-04-13 14:37:11 +03:00
Eladash
c8b8cafeec
PPU: Merge reservations store functions into one
2020-04-13 14:34:37 +03:00
RipleyTom
791c0da236
Add Disney Portal to passthroughs ( #8022 )
2020-04-13 11:49:42 +01:00
Eladash
b45d836b89
sys_net: Fix sys_net_bnet_bind page faults
...
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash
492a80f6c5
CPUThread.cpp: Minor indetation fixup
2020-04-13 04:34:10 +01:00
Eladash
8f32d44635
sys_net: Fix sys_net_bnet_sendto
2020-04-13 04:34:10 +01:00
Eladash
9fb30f130a
sys_net: Fix sys_net_bnet_getsockopt
...
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash
d91d420981
sys_net: EINVAL check in sys_net_bnet_listen
2020-04-13 04:34:10 +01:00
Eladash
442035c251
sys_net: EINVAL checks in sys_net_bnet_accept
2020-04-13 04:34:10 +01:00
Eladash
063902728b
sys_net: EINVAL checks in sys_net_bnet_recvfrom
2020-04-13 04:34:10 +01:00
Eladash
60a63fa4b6
sys_net: Fix sys_net_bnet_getsockname page faults
...
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash
7399a3f1e9
sys_net: Fix sys_net_bnet_getpeername page faults
...
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash
c4f6968aae
sys_net: Fix sys_net_bnet_connect page faults
...
+ EINVAL checks
2020-04-13 04:34:10 +01:00
Eladash
00957ca4bf
sys_net: Fix sys_net_bnet_select page faults
2020-04-13 04:34:10 +01:00
Eladash
179a9b3bf0
sys_net: Fix sys_net_bnet_poll page faults
2020-04-13 04:34:10 +01:00
sampletext32
c69691f19b
Fix various explicitness, laziness, hard codes
2020-04-12 17:29:42 +03:00
Eladash
cb14805d78
rsx fp/vp analyzers: Fix strict type aliasing and improve codegen
2020-04-12 16:48:43 +03:00
Eladash
ae1ff1e96d
ppu exec loader: Log TLS image information
2020-04-12 10:30:38 +01:00
Eladash
bb950cbb3b
vm: Fix possible IDM deadlock with Page Fault Notifications (partial)
2020-04-12 10:30:38 +01:00
Whatcookie
6b0f7a8f55
PPU LLVM: Optimize altivec FMA with 0 addend ( #8013 )
...
- When VMADDFP and VNMSUBFP are used with a constant addend of 0, they can be simplified into a single floating multiply
2020-04-12 09:52:21 +01:00
Eladash
8e61c65c0d
Fixup ::as_rvalue
2020-04-11 22:55:55 +03:00
Eladash
141d62fbf9
Implement ::as_rvalue
2020-04-11 21:58:36 +03:00
Eladash
e407018bb5
rsx: Write ref+get atomically
...
May contribute to better FIFO synchronization in some cases.
2020-04-11 21:21:15 +03:00
Eladash
ff74c241c7
rsx: Fix get_optimal_blit_target_properties for local memory
2020-04-11 21:21:15 +03:00
Eladash
d69bec8f59
rsx: Fix vblank thread stop regression
2020-04-11 21:21:15 +03:00
Eladash
504ba8d824
rsx: Fix grammer issue (binded -> bound)
2020-04-11 21:21:15 +03:00
Eladash
8228fa1ece
sys_rsx: Warn if RSX is not idle during crucial points
2020-04-11 21:21:15 +03:00
Eladash
1f9f455801
sys_rsx: Implement error checks for Zcull/Tiles binding
...
* Check zcull/tiles offset if bigger than max MAIN/LOCAL size.
* Check memory mapping of offset if location is MAIN.
* Check pitch/size for 0 as coming from hw tests.
* In addition: fix 'bound' check of tiles, seem to rely on the bits location is in.
* Add locks for zcull/tiles/displaybuffer binding.
2020-04-11 21:21:15 +03:00
Eladash
5ba26e247b
sys_rsx: Implement LLE cellGcmSysGetLastVBlankTime
2020-04-11 21:21:15 +03:00
Eladash
93b8f3b5db
idm: Minor update to use std::static_pointer_cast
2020-04-11 10:58:24 +03:00
Eladash
d451a0b7b7
SPU LLVM: Improve FNMS
...
Should be more accurate with postive/negative zero inputs according to docs while being more optimized.
TODO: Check SPU precise interptreter.
2020-04-09 17:27:14 +03:00
Eladash
158b24ec25
SPU LLVM: Add accurate double-precision FMA support
2020-04-09 17:27:14 +03:00
Nekotekina
1b68f90e42
Tweak TSC calibration
...
Round to 3 digits after dot (count in MHz).
2020-04-09 16:23:33 +03:00
clienthax
765b14a8ba
Implement cellRtc HLE ( #7933 )
2020-04-09 15:54:41 +03:00
Eladash
36fd1d0f0d
rsx: Optimize transform constants load methods ( #7992 )
2020-04-09 15:53:43 +03:00
Eladash
cce946f10e
spu: typo fix
2020-04-08 19:23:13 +03:00
Eladash
c948c9305c
sys_ppu_thread_create: read function descriptor immediately and save it
2020-04-08 19:23:13 +03:00
Eladash
c0f4fb6e35
SPU debugger: dump reservation address
2020-04-08 14:35:44 +03:00
Eladash
cc8f024c6c
Fixup ppu/spu_thread::dump_all()
2020-04-08 14:35:44 +03:00
Eladash
995fa63f4c
sys_rsx: Fixup after #7978
2020-04-08 11:33:26 +03:00
Eladash
f7536bbce0
sys_rsx: Fix gcm events spam
...
In realhw the events are only sent if they are masked in driver_info->handlers as well.
2020-04-07 20:43:28 +03:00
Eladash
3f48450408
sys_rsx: Minor atomicity fixes
2020-04-07 20:43:28 +03:00
Víctor "IlDucci
a38d2461c9
Linguistic changes ( #7917 )
2020-04-07 17:10:04 +02:00
Nekotekina
91d80aa7b9
Implement jit_compiler::check
...
Instead of checking file existence (because file may be damaged).
2020-04-07 16:09:47 +03:00
Nekotekina
7939160178
Shorten SPU LLVM Worker name to SPUW.#
...
For debugging.
2020-04-07 15:55:30 +03:00
Nekotekina
3eabec0030
SPU: Fix SPU Precise interpreter
2020-04-07 15:42:27 +03:00
Eladash
8f3ad8b81a
Fix cellGameDataCheckCreate2 error broken check ( #7976 )
2020-04-07 14:03:03 +03:00
Megamouse
078c31c1da
Qt: fix lupdate warnings (used for translation)
2020-04-06 20:59:58 +02:00
Megamouse
b1fdbc7fcc
Move some format functions
2020-04-06 20:59:58 +02:00
Eladash
e7d5d17fd8
rsx: Adjust FIFO recovery to be a bit more merciful
2020-04-05 17:40:23 +03:00
Eladash
bbbd06dcee
Make vm::_test_map aware of overflow
...
+ remove vm::find_map 1024mb limit.
2020-04-05 17:40:23 +03:00
Silent
fd09dde911
cellSearch: Change search state before invoking callbacks
2020-04-05 16:35:56 +03:00
kd-11
0b6e2b26fa
rsx: Fix DST instruction
...
- It's the old-school distance vector, not the more modern distance() function
- There is seemingly no glsl function that maps to it directly.
2020-04-05 16:35:20 +03:00
kd-11
b301fecfd8
gl: Fix async shader compiler
...
- Removes glFinish hack.
- Adds proper server-side synchronization.
- Adds primary context detection to allow worker threads to be identified.
2020-04-05 16:35:20 +03:00
Eladash
dc5cdb3bb4
sys_ppu_thread: reduce global memory stats after thread creation
2020-04-05 15:23:09 +03:00
Eladash
72d1efa383
rsx: Batch transform contants load methods
2020-04-05 15:21:56 +03:00
RipleyTom
f33373ca1b
Add Lego Dimensions Portal to usb passthroughs
2020-04-05 14:23:54 +03:00
Nekotekina
ae140a1ac9
SPU LLVM: improve stack mirror format in Mega mode
...
Store first instruction for additional validation.
Should fix some problems.
I didn't touch ASMJIT.
2020-04-04 21:40:42 +03:00
Nekotekina
8053d2602a
SPU LLVM: implement bisect helper (debugging tool)
...
Added two new settings: SPU LLVM Lower/Upper Bound
By manipulating values, conditionally avoid compiling programs.
It uses hash of the programs (64-bit start hash of SHA-1).
Programs which aren't compiled run with interpreter.
2020-04-04 21:38:40 +03:00
Nekotekina
18dbd788e6
SPU DisAsm: fix disasm for BINZ and similar instruction
2020-04-04 21:38:40 +03:00
Nekotekina
a53d0d50b3
SPU LLVM: add alternative ROTQBY implementation
...
Used if SSSE3 is not available (exec_rotqby).
2020-04-04 21:38:40 +03:00
Nekotekina
f05e24e8e8
SPU LLVM: make LS loads/stores volatile
...
Fixes PS1 classics and possibly something else.
2020-04-04 21:38:40 +03:00
Eladash
0b24b09a06
sys_fs: Lock dev_hdd1 mount point at cellSysCacheClear
2020-04-04 19:36:16 +01:00
Eladash
a178374052
sys_fs: Limit NPDRM FDs to 16
...
Co-Authored-By: Silent <cookieplmonster@users.noreply.github.com>
2020-04-04 19:36:16 +01:00
Eladash
63080c22a3
Fix ppu_thread::dump_callstack()
2020-04-04 00:06:51 +03:00
Eladash
55baaea8e7
liblv2 HLE: Fix sys_lwcond_signal mode 3
2020-04-03 19:42:25 +03:00
Eladash
13820d6802
SPU debugger: Show channels data
2020-04-03 18:37:21 +03:00
Eladash
0beea91d5e
Minor debugger fixups
2020-04-03 18:37:21 +03:00
Eladash
3f559cd86e
Fix sys_cond_destroy ( #7931 )
...
Dereference cond count in sys_cond_destroy
2020-04-03 12:45:59 +03:00
Nick Renieris
6cbb12e5cd
PPUThread: String & hex previews for register pointers in register dump
2020-04-03 01:36:35 +01:00
Nick Renieris
1231274e0f
CPUThread: Split dump() info to separate methods
2020-04-03 01:36:35 +01:00
Eladash
72c0aed4c1
rsx: Reset vertex program/constants at each boot
2020-04-02 20:42:12 +03:00
Eladash
c2c5005278
rsx: Fix and improve fp program data invalidation
2020-04-02 20:42:12 +03:00
Eladash
2ed370093e
rsx: Get rid of invalid_command_interrupt_raised
2020-04-02 20:42:12 +03:00
Eladash
d97e9f7b4a
rsx: Batch vertex program load methods
2020-04-02 20:42:12 +03:00
kd-11
69d90f6fec
vk: Remove NVIDIA workaround for broken partial occlusion queries
...
- This bug has been fixed in the latest drivers.
2020-03-31 20:53:12 +03:00
kd-11
8c847d3a4b
vk: Remove RADV workaround regarding renderpass barriers
...
- The situation was clarified in the official vulkan spec to allow this
behavior.
Barriers are now only inserted by the driver when layout
transitions are requested.
2020-03-31 20:53:12 +03:00
kd-11
b327e329d6
vk: Avoid query log spam if no program is loaded
2020-03-31 20:53:12 +03:00
Eladash
92f821aeb1
PPU LLVM: Add FMA accuracy setting ( #7874 )
...
* PPU LLVM : Match PS3 for the instructions fmadd, fmadds, fmsub, fmsubs, fnmadd, fnmadds, fnmsub, fnmsubs
Co-authored-by: doesthisusername <yfirestorm@gmail.com>
2020-03-31 20:01:10 +03:00
Megamouse
fc3a134e7d
Emu: make "Silence All Logs" dynamic
2020-03-31 18:06:37 +02:00
Eladash
fdd7f0645d
Some typos ( #7908 )
...
* sys_lwcond: replace writer lock with reader lock
* sys_rsx: Typo fix
* sys_net: Fixup for buffer reading
2020-03-31 16:44:50 +03:00
Eladash
29be815302
rsx: Implement DECR memory layout ( #7906 )
2020-03-31 05:12:30 +01:00
Eladash
1510505b30
Fix sys_rwlock_wlock timeout event
2020-03-30 14:22:15 +03:00
Eladash
019aae8bec
sys_net: Fix access violation handling ( #7901 )
...
Should fix page faults notifications on unmapped menory on Gran Turismo 5.
2020-03-30 05:53:17 +01:00
Whatcookie
cc100f4008
Fix alignment on embedded spu elf searching ( #7894 )
...
- They are actually 128 byte (1024 bit) aligned.
2020-03-29 03:54:45 +01:00
Nekotekina
dcc269128f
SPU LLVM: runtime multithreaded compilation
...
Active for CPU with 12 or more threads.
2020-03-28 17:17:51 +03:00
Nekotekina
9db088e17b
SPU LLVM: log hash in some places
2020-03-28 17:17:51 +03:00
Eladash
4215499b7f
rsx: Fix typo in NV4097_SET_TRANSFORM_PROGRAM range
2020-03-28 11:07:34 +03:00
unknown
049825812e
RSX: Restrict analyser loop error
2020-03-28 09:42:13 +03:00
Eladash
66bd8308d9
lv2: Wait for rescheduling before confirming timeouts ( #7875 )
2020-03-28 03:16:59 +00:00
xddxd
d96dabcd60
rsx: Rename current_instrution to current_instruction ( #7883 )
2020-03-28 02:46:48 +00:00
AniLeo
c00ee7ed5b
hle: cellSysutilNpEula
...
Add missing function names and stub all functions
Co-Authored-By: Eladash <elad3356p@gmail.com>
Co-Authored-By: Eladash <elad3356p@gmail.com>
2020-03-27 15:26:28 +03:00
RipleyTom
cd4eed0704
Gives ANSI path to curl CURLOPT_CAINFO
2020-03-27 14:23:20 +03:00
Ani
e8177906e7
System/Load: Handle PSP Remaster ( #7857 )
...
This just makes RPCS3 execute PSP Remaster games through
psp_emulator.self
pspemu does not work yet, so the boot will fail, but at the least it
starts loading
2020-03-26 20:03:00 +03:00
Nekotekina
17a9ce6fb9
Fix PS1 game_path
...
Don't assume local path has '/dev_hdd0' in it.
2020-03-26 18:32:42 +03:00
Eladash
36d8553f9c
liblv2 HLE: Fix entryx of start/stop prx functions
2020-03-26 17:52:45 +03:00
Eladash
9d971e3b07
rsx: More strict infinite desync detection
...
6 desyncs per second for 1.5 seconds is pretty bad already.
2020-03-26 17:52:45 +03:00
Eladash
7ed570dc4a
PPU LLVM: Add relocation 5 for ADDIS
...
+ Add some more for u16 relocations (4, 5, 6), simplify logic.
2020-03-26 17:52:45 +03:00
Nekotekina
fa29c5aa94
ppu_iname: refactor to use actual strings
2020-03-26 15:28:41 +03:00
Nekotekina
8d1a9dce91
spu_iname: refactor to use actual strings
2020-03-26 15:26:55 +03:00
Eladash
453478c98b
PPU LLVM: Log unsupported relocation opcode
2020-03-26 15:22:45 +03:00
Eladash
ccc7cb7994
Log IDs of loaded prx modules
2020-03-26 15:22:45 +03:00
Eladash
38c8dd98b4
rsx: Implement basic infinite FIFO desync detection
2020-03-26 15:22:45 +03:00
Eladash
158e34faca
rsx: Reset all method registers at rsx_state::init()
2020-03-25 17:51:59 +03:00
Eladash
768b4f8c65
rsx: Improve NV308A_COLOR
...
* Fix NV308A_COLOR methods range.
* Batch NV308A_COLOR methods execution together.
* Fix termination of bind_range<> in rsx methods binding.
2020-03-25 17:51:59 +03:00
Eladash
150d1bcdd5
sys_prx_unload_module: Implement CELL_PRX_ERROR_NOT_REMOVABLE
2020-03-25 16:22:47 +03:00
Eladash
e1f2f3f081
sys_prx: Improve sys_prx_start/stop_module
...
* Add missing error codes, "internal" errors are ones which are not reachable from liblv2.sprx functions
* Implement SYS_PRX_NO_RESIDENT (unloading module) for _sys_prx_start_module.
2020-03-25 16:22:47 +03:00
Eladash
717dd1625c
sys_prx: Implement sys_prx_get_module_list
2020-03-25 16:22:47 +03:00
Nekotekina
471db3219d
Finalize constexpr ppu_decoder<> thing
...
Move SSSE3 checks to runtime in PPUInterpreter.cpp
2020-03-25 11:18:48 +03:00
Megamouse
fd3522436a
overlays/osk: add more panels
2020-03-25 03:54:49 +01:00
Nekotekina
1ceb779a38
Make ppu_decoder<> objects constexpr (partial)
2020-03-24 13:46:46 +03:00
Nekotekina
a936533eb1
Make spu_decoder<> objects constexpr
2020-03-24 12:18:37 +03:00
Eladash
eb1de04ca8
_sys_lwmutex_lock: log new case of ESRCH
2020-03-23 23:18:21 +03:00
Eladash
2aff36647a
Make sceNpDrmProcessExitSpawn(2) execute sys_game calls correctly
2020-03-23 23:18:21 +03:00
Eladash
52360b3f98
liblv2 HLE: Fix sys_lwmutex_lock assertation
2020-03-23 21:37:37 +03:00
Eladash
08e66ab14c
Minor warning fixes
2020-03-23 21:37:37 +03:00
Eladash
3de41bfea7
_sys_lwcond_signal: Make mode 3 respect ordering of the sleep queue
2020-03-23 21:37:37 +03:00
Megamouse
1537f505a5
cellGem: fix move_handler::mouse left click
2020-03-23 15:10:01 +03:00
Nekotekina
5ebc538d7e
Workaround for VS 16.5
...
Strange codegen bug didn't promote s32 to u64.
2020-03-23 14:48:49 +03:00
kd-11
4965bf7d7a
gl/vk: Refactor draw call handling and stub shader interpreter
...
- Refactors backend draw call management to make it easier to extend
functionality.
- Stubs shader interpreter functionality.
2020-03-23 14:47:28 +03:00
Eladash
537f175f52
Another fixup after #7826
2020-03-23 11:54:19 +03:00
Eladash
017ef5a94e
Minor fixup after #7826
2020-03-23 10:59:51 +03:00
Eladash
cccc32fa9d
sys_lwmutex/lwcond: track lwcond waiters ( #7826 )
...
In lwmutex destroy syscall, wait for pending waiters.
2020-03-23 10:30:17 +03:00
Emmanuel Gil Peyrot
425e032a62
SPU: Copy with memcpy() instead of hand-rolled SSE2
...
In some very unscientific benchmark:
spu_thread::do_dma_transfer() was taking 2.27% of my CPU before, now
0.07%, while __memmove_avx_unaligned_erms() was taking 1.47% and now
2.88%, which added makes about 0.8% saved.
2020-03-22 15:51:03 +03:00
Nekotekina
e606130262
Memoize and print r3-r6 under Current function in the ppu_thread::dump()
2020-03-22 14:13:52 +03:00
Eladash
dc839e1784
lv2: Do not lose r3 data on syscalls
...
Allows to get the ID of the lv2 sync objects in the debugger by looking at r3's content.
2020-03-22 12:41:02 +03:00
kd-11
12044bd8b0
rsx: Properly calculate vertex range when divisor is active
...
- The upper bound is to be rounded up, not down.
2020-03-22 10:57:47 +03:00
Eladash
01cafc042d
cellSaveData: Ensure savedata_context members are 16-byte aligned
...
I saw stvx v128{0} (aligned 16-bytes store) usage on the first 16-bytes of CellSaveDataCBResult before funcStat in fw.
Also I saw 4 stw of u32{0} on it as well before funcFile, funcFixed and funcList.
So just add the resets for result before all callbacks, and make all
members of savedata_ontext 16 -byte aligned in case there are more
members guaranteed to be aligned.
2020-03-21 19:05:20 +03:00
Eladash
ceaee0ec68
cellSaveData: Clear traces of setList setup from setBuf->buf, add missing memset
...
* Always memset 0 setBuf->buf (to bufSize) before funcStat if the direcory is not new.
* Always memset 0 setBuf->buf (to bufSize) if listGet->dirNum became non-zero (listGet->dirListNum can be zero yet memset still occurs) .
* Clear traces of setList setup before funcStat (after funcFixed/List, only if listGet->dirNum != 0, callback can hack this value and prevent the memset).
2020-03-21 19:05:20 +03:00
Eladash
b6a288d383
cellSaveData: Skip directory items in savedata_get_list_item
2020-03-21 19:05:20 +03:00
Eladash
ae14eb0747
Minor fix of cellUserInfoGetStat
...
stat == nullptr is allowed, fix invalid id error code.
2020-03-21 19:05:20 +03:00
Eladash
be0e586671
cellSaveData: Add error checks for cellSaveData(User)GetListItem
2020-03-21 19:05:20 +03:00
Eladash
66916df4ae
cellSaveData: Set listSet->focusPosition to LISTHEAD by default
2020-03-21 19:05:20 +03:00
Eladash
fae46bf194
cellSaveData: Add CELL_SAVEDATA_ERROR_NOUSER
2020-03-21 19:05:20 +03:00
Eladash
e1cb827488
PPU Precise: Fix FMADDS, FMSUBS, FNMSUBS, FNMADDS
2020-03-21 16:32:09 +03:00
Eladash
3a36b713ce
Dont spam syscalls stats if emu is paused
2020-03-21 16:31:18 +03:00
Eladash
9acf8e283d
Fix OSK thread exit condition
2020-03-21 12:37:29 +03:00
Nekotekina
c577bd2111
Implement thread_state::errored
...
State after calling thread emergency_exit() function.
Also default-construct thread result in this case.
2020-03-20 21:31:27 +03:00
Megamouse
fd8cda0f2b
overlays/osk: fix selection after changing panels
...
We now try to keep the current x and y selected after panel changes.
Also change some copy to ref
2020-03-19 21:10:08 +01:00
Megamouse
c63f77e3b0
overlays/osk: fix full width characters
2020-03-19 21:10:08 +01:00
Megamouse
a1f70bf96e
overlays/osk: do not change the preview text on empty input
...
This prevents that the placeholder disappears
2020-03-19 21:10:08 +01:00
Megamouse
f1127f1894
overlays: implement osk panels
2020-03-19 21:10:08 +01:00
Eladash
1dbb5422a2
Avoid a segfault when reading ppu stack contents in debuggers
...
TODO: lock vm mutex.
2020-03-19 14:18:05 +03:00
Eladash
7139c4fbab
Fix bug introduced by #7797
2020-03-19 07:22:05 +03:00
Malcolm Jestadt
0bfdc1f62e
PPU LLVM: Improve VMADDFP and VNMSUBFP
...
- Use native FMA to emulate VMADDFP, with a fallback for processors that don't support FMA
- Use native FMA to emulate VNMSUBFP as well, but note that it differs from the emulated path with regards to negative zero
2020-03-19 06:47:16 +03:00
Eladash
b11e8f8b8d
Minor fix of sys_ppu_thread_yield return value
...
Account for a special case where threads were rotated but no context
switch was made.
2020-03-19 06:45:14 +03:00
Eladash
7be35315da
Fix lv2 sys_lwcond/sys_lwmutex kernel explorer names
2020-03-19 06:45:14 +03:00
Nekotekina
6a2571d0e1
SPU: print current chunk hash in dump
2020-03-18 18:28:46 +03:00
Nekotekina
20f7544a8a
SPU profiler: minor change
...
Use std::greater to sort
2020-03-18 18:28:46 +03:00