Commit graph

6675 commits

Author SHA1 Message Date
kd-11 5a4bea8c4f gl: Blit fixup
- Typo fix. I meant to disable scissor test, not stencil test
- Also clean up and simplify/optimize the core logic
2019-01-25 14:34:22 +03:00
kd-11 7e33cdcb08 rsx: simple_array<T> improvements
- Implement move and copy ctors
2019-01-25 14:34:22 +03:00
kd-11 fb778e4821 rsx: Reimplement attrib divisor 2019-01-25 14:34:22 +03:00
kd-11 736415fcd9 rsx/fp: Detect broken/NOP shaders automatically
- Do not compile body if the shader is of no consequence, leave as a passthrough shader
2019-01-25 14:34:22 +03:00
kd-11 6fdc0fd7f0 rsx: Reimplement MSAA transparency
- Apply dither to edges that almost fail the straight-up alpha test
- Significantly improves alpha tested geometry far from the camera
- Also removes blend factor overrides/hacks as they give incorrect results due to background bleeding
2019-01-25 14:34:22 +03:00
kd-11 10a17feda2 rsx: Avoid potential deadlock in FIFO_ctrl 2019-01-25 14:34:22 +03:00
kd-11 7eec702c6d gl: Fix silly regression with blit dst resource readback 2019-01-25 14:34:22 +03:00
kd-11 8093c9b573 rsx: Disable rtt side-effects when async compilation is ongoing. Only real renders should promote buffer state from underined to drawn, otherwise keep previous contents intact. 2019-01-25 14:34:22 +03:00
kd-11 417a2e6731 rsx: Refactor index buffers
- Index offset is ignored anyway and only used to calculate vertex attribute divisor index
- Specialized optimization for untouched xfer without primitive restart
2019-01-25 14:34:22 +03:00
elad afeacc171f Fix spurious abort in sys_rwlock_tryrlock and sys_semaphore_trywait (#5579)
Use full cmpxchg loop to prevent occasional return of CELL_EBUSY
2019-01-22 23:10:17 +03:00
Nekotekina 4f152ad126 SPU: multithread compilation
Allow parallel compilation of SPU code, both at startup and runtime
Remove 'SPU Shared Runtime' option (it became obsolete)
Refactor spu_runtime class (now is common for ASMJIT and LLVM)
Implement SPU ubertrampoline generation in raw assembly (LLVM)
Minor improvement of balanced_wait_until<> and balanced_awaken<>
Make JIT MemoryManager2 shared (global)
Fix wrong assertion in cond_variable
2019-01-22 22:02:02 +03:00
Megamouse 8d5d44141e rsx/Qt: fix some undefined behavior in progress_dialog CallAfters 2019-01-22 12:04:01 +03:00
eladash 688d5a9919 rsx: Fix unknown vertex base types
Clamp vertex type field into 3-bits instead of 4-bit value
Case 0 is UB256
2019-01-21 22:28:20 +03:00
Megamouse fa00fb3eac Qt: use patch version and firmware for PS3 disc games in the game list 2019-01-20 23:16:37 +01:00
Nekotekina d4591b1508 ALSA: disable recovery (experimental) 2019-01-18 16:49:17 +03:00
Nekotekina 59e0296281 cellMsgDialog: fix error spam on CELL_OK 2019-01-18 16:49:17 +03:00
Nekotekina cc430769c6 Rollback audio backend priority 2019-01-18 16:49:17 +03:00
eladash a11d76249d Patch ppu main thread prio 2019-01-17 21:58:09 +03:00
Megamouse 5ed718110a cellOskDialog/osk_dialog_frame: fix regexp for CELL_OSKDIALOG_NO_SPACE 2019-01-16 23:36:44 +03:00
msuih f902a7867c Fix cache removal 2019-01-16 07:43:39 +01:00
elad fc92ae4085 SPU/PPU atomics performance and LR event fixes (#5435)
* Fix SPU LR event setting in atomic commands according to hw test
* MFC: increment timestamp for PUT cmd in non-tsx path
* MFC: fix reservation lost test on non-tsx path in regard to the lock bit
* Reservation notification moved out of writer_lock scope to reduce its lifetime
* Use passive_lock/unlock in ppu atomic inctrustions to reduce redundancy
* Lock only once for dma transfers (non-TSX)
* Don't use RDTSC in reservation update logic
* Remove MFC cmd args passing to process_mfc_cmd
* Reorder check_state cpu_flag::memory check for faster unlocking
* Specialization for 128-byte data copy in SPU dma transfers
* Implement memory range locks and isolate PPU and SPU passive lock logic
2019-01-15 18:31:21 +03:00
eladash f19fd23227 spu: Fix support for multiple lists when one is stalled 2019-01-15 02:33:22 +03:00
Megamouse 58a22d1461 cellSaveData: add error_code 2019-01-14 21:12:13 +01:00
Nekotekina c5026f7109 cellVdec: fix minor race 2019-01-14 01:24:05 +03:00
Nekotekina a419e98acb Move PPU and shader cache
New hash-based location (already used for SPU)
Bump PPU cache version, improve naming and decrease size

Remove fs::get_data_dir
Disable boot.elf cache
2019-01-14 01:24:05 +03:00
Nekotekina aefee04c4a SPU analyser: fix branch to self
Fixed not filling the predeccessor list on BR-to-self on entry point
Version bumped (v1-tane)
Closes #5353
2019-01-14 00:01:27 +03:00
Nekotekina 74d684b57e cellAudio: fix template arg style
Add constexpr if
2019-01-14 00:01:27 +03:00
Nekotekina ac775cd75e Simplify gui_listener
Use lf_queue
2019-01-13 14:45:36 +03:00
Nekotekina 435f60d503 lf_queue: add iterator support
Allow range-for loop over an object returned by `pop_all()`
2019-01-13 14:45:36 +03:00
Nekotekina cfdf50dcff SPU: ensure sys_spu_thread_group_join receives correct exit status
Following #5334
2019-01-13 14:45:36 +03:00
Nekotekina 453344c232 cellSaveData: workaround possible issues with symlinks
Don't use ../ location for temporary directories
2019-01-13 14:45:36 +03:00
Nekotekina bd9131ae1c Implement fs::get_cache_dir
Win32: equal to config dir for now
Linux: respect XDG_CACHE_HOME if specified
OSX: possibly incomplete
2019-01-13 14:45:36 +03:00
eladash bc27f5f75c Implement invalid NV4097_NOTIFY context handling 2019-01-13 12:59:00 +03:00
Megamouse 022550a43b cellOskDialog: use atomic_op for state operations 2019-01-12 23:39:01 +01:00
Megamouse d7cc97433d cellOskDialogUnloadAsync: guarantee 0 terminated return string 2019-01-12 23:39:01 +01:00
Megamouse fce9f352a9 cellOskDialog: fix cellOskDialogAbort 2019-01-12 23:39:01 +01:00
Megamouse f9c1b15bf4 cellOskDialog: fix cellOskDialogUnloadAsync return string
fixes Class of Heroes 2G
2019-01-12 23:39:01 +01:00
Rui Pinheiro 3406acd8c9 Fixups for audio PR 2019-01-12 22:22:03 +03:00
Rui Pinheiro 49fbf9bf0f Tweaks to buffering algorithm
Increase untouched buffer timeout when some of the buffers have been
touched. Might improve audio quality on games that suffered from
miniscule popping even when buffering was enabled (such as DeS).

In addition, made time stretching algorithm slightly more aggressive.

Includes some other tiny tweaks as well.
2019-01-12 21:29:56 +03:00
Rui Pinheiro 1e4513e2e3 Fixups in audio backend
Removes 's_' prefix from variables that are no longer static and
thread_local. Removes superfluous comments left behind due to copy-paste
mistakes.
2019-01-12 21:29:56 +03:00
Rui Pinheiro fe9062671e Change audio tooltips, audio backend order 2019-01-12 21:29:56 +03:00
Megamouse 5e3311746c Qt/settings: add new audio buffering options 2019-01-12 21:29:56 +03:00
Rui Pinheiro 48db0430d4 Misc. Tweaks 2019-01-12 21:29:56 +03:00
Rui Pinheiro 650bc0c1f2 Fix game pausing/unpausing 2019-01-12 21:29:56 +03:00
Rui Pinheiro f17f984721 Add timeout for untouched buffers 2019-01-12 21:29:56 +03:00
Rui Pinheiro 8f6043b568 Change cellAudio diagnostic messages to Trace 2019-01-12 21:29:56 +03:00
Rui Pinheiro 67f9397746 Various fixes
In addition, linux builds (and ALSA/PA) now work again
2019-01-12 21:29:56 +03:00
Rui Pinheiro 4f39457858 Rewrite OpenAL backend to support new features 2019-01-12 21:29:56 +03:00
Rui Pinheiro 892deb1552 Implement basic time stretching + Tweaks 2019-01-12 21:29:56 +03:00
Rui Pinheiro 5159d3559e Implement Audio Backend Capabilities querying
Also renames "AudioThread" to "AudioBackend". The new name is more
descriptive of what the class really is responsible for, since the
backends are not responsible for managing the audio thread.

NOTE: Right now only XAudio2 is supported
2019-01-12 21:29:56 +03:00
Rui Pinheiro 2addbe6be2 Implement basic cellAudio buffering 2019-01-12 21:29:56 +03:00
Rui Pinheiro 56962aa707 Disable OpenAL backend temporarily 2019-01-12 21:29:56 +03:00
Megamouse e18e9909af cellOsk fixup 2019-01-12 08:26:04 +01:00
RipleyTom fad80ed443 revert part of #5529 2019-01-12 06:59:07 +01:00
Megamouse e3ea29599d cellGame: fix some installation issues
fixes HAWX2 (at least until it crashes again)
2019-01-11 03:36:22 +03:00
Megamouse d9d5f45e9e rsx/input: fix rsx replay 2019-01-10 13:05:48 +01:00
Megamouse eb4d612bb9 cellOskDialog: fixes for multi-line dialog 2019-01-10 13:05:48 +01:00
Megamouse e5aede7aa7 cellOskDialog: initial code for cellOskDialogSetSeparateWindowOption 2019-01-10 13:05:48 +01:00
Megamouse 17058113df cellOskDialog: add multi-line option and handle more permutations (WIP) 2019-01-10 13:05:48 +01:00
Megamouse 4a8b30c625 cellOskDialog: cellOskDialogExtRegisterConfirmWordFilterCallback 2019-01-10 13:05:48 +01:00
Megamouse e0ac244fed split MsgDialogBase 2019-01-10 13:05:48 +01:00
Megamouse d5303b0b64 add error_code to cellOskDialog and cellMsgDialog 2019-01-10 13:05:48 +01:00
Megamouse 7cc4239cc2 cellOskDialog: add message 2019-01-10 13:05:48 +01:00
Megamouse cc30b4e5be cellOskDialog: don't send input signals without seperate screen enabled 2019-01-10 13:05:48 +01:00
Megamouse 16f2975792 cellOskDialog: properly handle dialog states to improve param checks 2019-01-10 13:05:48 +01:00
Megamouse 1b2e512179 Qt: make dockwidget title bars optional 2019-01-10 12:14:38 +01:00
kd-11 52ac0a901a rsx: improve memory coherency
- Avoid tagging and rely on read/write barriers and the dirty flag mechanism. Testing is done with a weak 8-byte memory test
- Introducing new data when tagging breaks applications with race conditions where tags can overwrite flushed data
2019-01-06 10:44:40 +03:00
kd-11 89c9c54743 rsx: Minor hot-fix
- Pitch 0 makes sense if width == 1 and height == 1
2019-01-06 10:44:40 +03:00
kd-11 95245bdd83 rsx: Improve ARGB8->D24S8 casting
- Set up partial transfers
- Force clear of target before starting the transfer
2019-01-06 10:44:40 +03:00
kd-11 475cc99117 rsx: Fix dirty flag reset after a partial attachment initialization
- D24S8 targets have 2 aspects that are dealt with separately; Forcefully initialize the remaining data if a partial init is done. Its 'free' anyway
- It seems that the stencil mask matters when clearing unlike the depth mask and color mask
2019-01-06 10:44:40 +03:00
kd-11 c80c7f06bb rsx: Typo fix
- This silly typo broke the flip improvements in the GT fixes PR
2019-01-06 10:44:40 +03:00
kd-11 2a62fa892b rsx: Texture cache refactor
- gl: Include an execution state wrapper to ensure state changes are consistent. Also removes a lot of required 'cleanup' for helper methods
- texture_cache: Make execition context a mandatory field as it is required for all operations. Also removes a lot of situations where duplicate argument is added in for both fixed and vararg fields
- Explicit read/write barrier for framebuffer resources depending on
  usage. Allows for operations like optional memory initialization before
  reading
2019-01-06 10:44:40 +03:00
kd-11 0f64583c7a rsx: Reimplement pitch lookup
- Remove the required_xxx_pitch constraint as it makes no sense. The pitch controls what can be written per line.
- It is possible to have a huge surface width but only render to a small region at the beginning and have a smaller pitch than can fit the surface (NFS carbon)
2019-01-06 10:44:40 +03:00
kd-11 1ffadbe086 rsx: Reorganize write barrier implementation (either clear or memory barrier) 2019-01-06 10:44:40 +03:00
kd-11 9c45ce6d37 vk: Reimplement typeless memory allocation to handle resolution upscaling 2019-01-06 10:44:40 +03:00
kd-11 d8e45c86e6 vk: Remove old useless hack that interferes with memory inheritance 2019-01-06 10:44:40 +03:00
kd-11 3be4b474d9 rsx: Handle rsx-self-tripping in draw call and triggering invalid invalidation
- If draw call resources consume memory that intersects with NA parts of the texture cache, we get a framebuffer test mismatch.
  This mismatch is false and happens because the thread has not yet reached the point of relocking the pages
2019-01-06 10:44:40 +03:00
kd-11 a95a44cf66 rsx: Strictness cleanups
- Also account for variable pitch textures (swizzled scan)
2019-01-06 10:44:40 +03:00
kd-11 474d0f61a2 minor typo fix 2019-01-06 10:44:40 +03:00
kd-11 362eea09a1 whitespace fix only 2019-01-06 10:44:40 +03:00
kd-11 15d5507154 rsx: Rewrite memory inheritance transfers
- Implicitly invoke a memory barrier if actively reading from an unsynchronized texture
- Simplify memory transfer operations
- Should allow more games to work without strict mode
2019-01-06 10:44:40 +03:00
kd-11 97704d1396 rsx: Fix texture size calculations 2019-01-06 10:44:40 +03:00
kd-11 50c07833e4 rsx: Do not force upload for missing data
- TODO: Finish implementing GPU RCB for mem-sync
- TODO: Refactor mem-sync
2019-01-06 10:44:40 +03:00
kd-11 6d932b042b vk: bump max number of compute jobs from 120 to 1024
- It is possible without bugs to have a very high number of compute invocations.
2019-01-06 10:44:40 +03:00
kd-11 64a8829614 rsx: Minor cleanup 2019-01-06 10:44:40 +03:00
kd-11 15488eb247 rsx: Avoid unnecessarily touching framebuffer memory
- Do not bind companion framebuffer when clearing single aspect; let the
  contest mechanism sort it out instead
- Do not prematurely tag framebuffers, instead only do so at
  write-confirmation time. Should avoid false tagging if setup does not
  allow a render to occur.
2019-01-06 10:44:40 +03:00
kd-11 a13986ec5c vk: Spec fixups
- Forgot to update descriptor pool init sizes over time
- Also clamp swapchain resources to allowable surface extents
2019-01-05 21:31:12 +03:00
Megamouse 6c10cb2eb5 Assume go to address to be hexadecimal 2019-01-05 04:03:18 +01:00
Megamouse 6fe615605a prevent debugger crash when no thread is selected 2019-01-05 04:03:18 +01:00
Megamouse bb464b0b64 fix some warnings 2019-01-05 04:03:18 +01:00
Megamouse daee2a27a3 Qt: spawn Confirmation Dialog on when booting games while Emu is running 2019-01-05 01:50:42 +01:00
Megamouse 5f9b441dd7 Qt: spawn Confirmation Dialog on exit 2019-01-05 01:50:42 +01:00
RipleyTom 37c621ebbf cellSysutilCheckCallback forced granularity 2019-01-03 02:15:01 +03:00
Nekotekina 7a4282b4c0 cellSysutil: drain callback queue at single step
This way if a new callback is registered in a process,
it will not be executed immediately in the same loop.
Remove mutex, use lock-free queue.
2019-01-03 02:15:01 +03:00
Megamouse 3b83e223d8 cellOskDialog: add some param checks 2019-01-02 15:45:51 +01:00
Megamouse 0e7fd45504 cellOskDialog: add Constants 2019-01-02 15:45:51 +01:00
Megamouse ad5cdc38cd cellOskDialog: implement CellOskDialogInputFieldResult
fixes abort and cancel
2019-01-02 15:45:51 +01:00
Megamouse 6f7b25de90 implement CELL_PAD_INFO_INTERCEPTED 2019-01-02 15:45:51 +01:00
Megamouse 8ad14c4ada Overlays: fix input loop when no controllers are detected 2019-01-02 15:45:51 +01:00
Megamouse a4f67ccb87 Add log messages for PPU compilation 2018-12-31 23:03:03 +03:00
Megamouse 632b0f489c Qt/Input: add keyboard stick interpolation 2018-12-31 12:42:34 +01:00
Megamouse a77bd41b50 Qt/Input: add mouse settings to the pad settings dialog 2018-12-31 12:42:34 +01:00
Megamouse 2db16c2c04 Input: add config entries for mouse deadzones and acceleration 2018-12-31 12:42:34 +01:00
RipleyTom 7ebd3bbcbf Fixes issues where the mutex is destroyed while an unlock is happening 2018-12-31 01:39:47 +03:00
eladash 483ee5e488 Fix sys_vm_memory_map address base 2018-12-30 20:12:32 +00:00
eladash 79a6a2c7fb Debug console emulation 2018-12-30 20:12:32 +00:00
eladash 2ea061b9c7 Set total memory size according to sdkver 2018-12-30 20:12:32 +00:00
eladash c0eb4965f2 mmapper_allocate_memory improvement
Added cases 0 for allocation granularity size,
alike sys_memory_allocate, the alignment of this case is 1mb.
2018-12-30 20:12:32 +00:00
Megamouse d1be1150c2 Settings Dialog Update 2018-12-30 17:47:51 +01:00
RipleyTom c6e47a573d cellVideoOutConfigure minor fix. 2018-12-30 17:58:20 +03:00
eladash db784556aa rsx: Evaluate cond render test at set_render_enabled 2018-12-30 15:04:59 +01:00
eladash 26d47afec6 hle gcm: Fix cellGcmGetReportDataAddressLocation
* Never return NULL (also apllies to similar functions)
* Base offset is 0x0e000000 for main location
* Default location is LOCAL

Info was taken from disasm of gcm
2018-12-30 15:04:59 +01:00
eladash 568206d11a Fix rsx capture (again) 2018-12-30 15:04:59 +01:00
Megamouse a1dd6e080c Qt: Sort game list after load settings to prevent icon size mismatch
This was sorely needed when the app crashed after resizing icons
2018-12-30 14:15:34 +01:00
fobb2 64ea7bf867 capitalize 'japanese' -> 'Japanese' 2018-12-30 05:08:43 +01:00
Jan Beich 8d308bb4c0 overlays: don't use /proc on BSDs as it may not be mounted 2018-12-29 18:07:45 +03:00
RipleyTom aa306dd356 Trophy changes 2018-12-27 19:11:51 +01:00
eladash 4b65c3943c Fix sys_semaphore_post count check 2018-12-26 23:03:27 +03:00
eladash 653a4ef0df Set group status INIT on last thread stopped
this fixes the group status after sys_spu_thread_exit when not joining the spu group
2018-12-25 19:59:41 +03:00
scribam 7c74bafaf3 sceNp: improve sceNpManagerGetNetworkTime function (#5451) 2018-12-25 17:13:11 +03:00
Nekotekina d7be0a96f3 SPU LLVM: approximate xfloat option
Adapt previous SPU ASMJIT changes made by @kd-11
FM, FMA, FNMS, FMS are approximated.
FCGT, FCMGT are accurate.
2018-12-24 16:04:46 +03:00
Nekotekina f750b4c420 cellSaveData: try to address #5415 2018-12-24 16:04:46 +03:00
Nekotekina 522f5ea645 Fix cellFsGetFreeSize (following #5304)
Simplify device name extraction
2018-12-24 16:04:46 +03:00
kd-11 9c46386dd4 rsx: Check av configuration when selecting display buffers!
- Some applications have mismatch between video output configuration and display buffer sizes
2018-12-24 09:05:19 +03:00
kd-11 7555be232f rsx/vp: Fix double dst commands
- Test the vec_result mask before assigning to actual output
  Sometimes, VEC op is used to write to Rx, and SCA op is used to write to o[x]!
2018-12-24 09:05:19 +03:00
kd-11 10d96a60f1 rsx/capture: Force flip if no flip event was recorded 2018-12-24 09:05:19 +03:00
kd-11 f48abde14b rsx: Fixups for immediate rendering mode
- Immediate mode is isolated from the rest of the vertex configuration
- TODO: Verify register behaviour when immediate mode is used
  Check if per-primitive const register values are supported (likely are)
2018-12-24 09:05:19 +03:00
kd-11 4b79ef1ad9 rsx: Implement stencil mirror views
- Implements a mirror view of D24S8 data that accesses the stencil components.
  Finishes the implementation of TEX2D_DEPTH_RGBA as the stencil component was previously missing from the reconstructed data
- Add a few missing destructors
  Image classes are inherited a lot and I forgot to make the dtors virtual
2018-12-24 09:05:19 +03:00
kd-11 696b91cb9b rsx: Reimplement conditional execution in shaders
- Per-channel conditional execution introduces RAW hazards all over the place
- Its cheaper to process both branches and select between the two
- Also improves ShaderVariable functionality to allow functionality such as match_size and taking complex variables as inputs
2018-12-24 09:05:19 +03:00
kd-11 c75749f8ce rsx: fix flip logic when grabbing output from the surface cache 2018-12-24 09:05:19 +03:00
MSuih eba364c64c Clear disk cache if it grows too large (dev_hdd1/cache) (#5411)
* Clear disk cache automatically

* Add disk cache to UI
2018-12-24 00:18:47 +03:00
Megamouse b99a88afe2 Qt/Input: disable in-game controls while the pad settings are opened 2018-12-23 04:13:27 +01:00
Megamouse e80f2793eb Qt/Input: immediately abort remapping if the controller was disconnected
added some fixups
2018-12-23 04:13:27 +01:00
Megamouse 6dcf66b064 Qt/Input: add disconnected label to the devicenames 2018-12-23 04:13:27 +01:00
Megamouse bdb5606317 Qt/Input: enable DS4 controller reconnect without refresh 2018-12-23 04:13:27 +01:00
Megamouse 6e323622a5 Qt/Input: use 1-n in the GUI instead of 1-(n-1)
I didn't look into evdev
2018-12-23 04:13:27 +01:00
Megamouse 91d834ce73 Qt/Input: improve DS4 device list
Needed to move Reset out to main_window due to hid closing problems. It's better to have the reset logic outside anyway
2018-12-23 04:13:27 +01:00
Megamouse f617e47152 Qt/Input: disable mapping for unconnected pads 2018-12-23 04:13:27 +01:00
Megamouse e80574cbd2 RSX/Qt: set min gs_frame size to 160x90 to prevent stupid new Vulkan bug 2018-12-22 23:10:34 +01:00
Megamouse 79003cd089 Qt/windows: use Qt's high dpi scaling 2018-12-22 23:10:34 +01:00
isshininu 9717e19be2 sceNpTrophy: use SCE_NP_TROPHY_STATUS_INSTALLED instead of SCE_NP_TROPHY_STATUS_NOT_INSTALLED
* Update sceNpTrophy.cpp

* Revert "Update sceNpTrophy.cpp"

* Update sceNpTrophy.cpp

* Update sceNpTrophy.cpp
2018-12-22 13:53:38 +01:00
eladash 69fc1f2613 Added CAMERA_NOT_INIT checks for no camera setting 2018-12-20 08:52:09 +01:00
Megamouse 6b1d80ec25 cellCamera: fix read_mode 2018-12-20 08:02:44 +01:00
Megamouse bc3ab7a9d9 Input: Enable In-Game Pad Config Reset 2018-12-17 19:41:18 +01:00
vit9696 5a40c1802b Support macOS bundling for binary distribution 2018-12-16 18:17:21 +03:00
eladash c50d459b1e cleanup rsx fifo debugger command display 2018-12-15 19:40:18 +03:00
eladash 098d634328 rsx fifo: Fix call cmd offset mask
highest 3 bits are masked according to tests, also filter certainly invalid jumps with offset higher than max
2018-12-15 19:40:18 +03:00
eladash c2aa10cccd reduce register_pair container 2018-12-15 19:40:18 +03:00
eladash 45ed58cdaf Fix rsx capture replay
Allow to capture non-increment cmd flag that was missing in command.reg
2018-12-15 19:40:18 +03:00
eladash 87988e9da8 rsx fifo: Stability improvements
* Restore stack in fifo error handling

* Update get register after the cmd execution

* Fix put pause in the middle of command

* Add restore points when branching to self

* Precise nopcmd detection

* Test all invalid cmds for early treatment of queue corruption
2018-12-15 19:40:18 +03:00
eladash 835a552d8d rsx: Implement cellGcmSetNotify 2018-12-15 19:40:18 +03:00
eladash fd894d4c69 hle gcm: Fix cellGcmGetNotifyDataAddress 2018-12-15 19:40:18 +03:00
eladash 415b995a54 log rsx get ctrl 2018-12-15 19:40:18 +03:00
eladash 8cbaa8627c Do not rely on cellPadInit in native ui 2018-12-15 13:51:16 +01:00
Megamouse 2e7e2bb07e XInput: fix usage of one controller for 2 players 2018-12-15 13:13:26 +01:00
msuih 76f94940cd Add strict texture flushing to debug options 2018-12-11 22:37:10 +03:00
Rui Pinheiro 54bfe2e102 Add log warning on slow flush path 2018-12-11 22:37:10 +03:00
Rui Pinheiro 18b9ee4541 Reimplement overlapping fbo "hack"
To avoid the need (and performance hit) of Read Color/Depth Buffers, we
may not invalidate overlapping fbos inside lock_memory_region unless
they are guaranteed to be superseded by the new one.

This avoids e.g. issues with overblooming, among others.
2018-12-11 22:37:10 +03:00
Rui Pinheiro 5ab7296665 Fix xcode build 2018-12-11 22:37:10 +03:00
Rui Pinheiro bcdf91edbb Misc. Texture Cache fixes 2018-12-11 22:37:10 +03:00
Rui Pinheiro 9d1cdccb1a Implement dedicated texture cache predictor 2018-12-11 22:37:10 +03:00
Rui Pinheiro af360b78f2 Texture cache section management fixups
Fixes VRAM leaks and incorrect destruction of resources, which could
lead to drivers crashes.

Additionally, lock_memory_region is now able to flush superseded
sections. However, due to the potential performance impact of this
for little gain, a new debug setting ("Strict Flushing") has been
added to config.yaml
2018-12-11 22:37:10 +03:00
Megamouse 1ca02c7d17 Qt: implement custom titles 2018-12-10 18:50:23 +01:00
Megamouse ead03caedc Qt: Fix silly edit bug that no one ever noticed 2018-12-10 18:50:23 +01:00
RipleyTom 077e710e3a sys_fs_fcntl with parameter 0xC0000002 should extract device path from the given path and use that to gather free space information 2018-12-10 14:24:07 +03:00
Nekotekina d6afba96f1 cellSaveData: fix 'Already exists' error 2018-12-10 01:43:47 +03:00
Nekotekina d98420fbc3 CMake: use CMAKE_SOURCE_DIR instead of .. in some places 2018-12-10 01:43:47 +03:00
eladash fb8302817f ppu: Set link unconditionally 2018-12-10 01:34:02 +03:00
RipleyTom 5207b00973 Extra Handling of result value of funcStat CB. 2018-12-08 18:44:00 +03:00
Nekotekina 92be67b402 Fix #5370 regression 2018-12-05 00:06:09 +03:00
Nekotekina 476090a747 Detach VBlank and RSX Decompiler threads
Should fix exception handling in RSX Thread
2018-12-04 23:41:54 +03:00
elad 90265edfcd SPU MFC: avoid copying of the lockline onto the stack in putllc/putlluc (#5392) 2018-12-04 21:09:55 +03:00
eladash 45942c4962 Fix segfault when scaled image dimension is less than clip's 2018-12-04 13:01:29 +03:00
eladash fa5652fceb rsx image_in: Implement negative scaling 2018-12-04 13:01:29 +03:00
eladash ce500c75c4 throw exceptions in case of invalid/unknown operations in image_in 2018-12-04 13:01:29 +03:00
eladash 6ecf2fb3d0 rsx: default lv2 semaphore context + dma_4097
extracted from vsh
2018-12-04 13:01:29 +03:00
eladash 28e4a9e0d0 rsx image_in: Fix in_pitch 0
The hw doesnt fix pitch, when specifying src pitch 0 it copies the same pixels line to dst. keep in mind out_pitch = 0 is not allowed in image_in.
Same goes for buffer_notify, though it allows out_pitch to be 0.
2018-12-04 13:01:29 +03:00
eladash d1d3ac984e rsx image_in: Fix src size calculation when in_pitch != line_lengh 2018-12-04 13:01:29 +03:00
eladash 0a1da14a15 rsx image_in: remove clip h and w hack
If clip region is empty, dont execute
2018-12-04 13:01:29 +03:00
eladash 4ddafc481e remove unreachable code 2018-12-04 13:01:29 +03:00
eladash b48a4b6459 rsx-capture: reduce capture size
* Dont bother capturing 'destination' blocks with no data. instead premap all main memory to ensure allocated
* Capture zcull and tile state as their compressed gcm forms
* Fix index array capturing, ignore empty sets
* hle gcm: Fix byteswaping in cellGcmSetZcull
2018-12-04 13:01:29 +03:00
NicknineTheEagle 32059bfaa2 Properly get PARAM.SFO and icons for C00 games (#5370)
* Added a helper function for fetching game's PARAM.SFO path

This should properly get SFO path for unlocked C00 games

* Normalized line endings

* Refresh game list after installing a RAP file
2018-12-04 01:46:01 +03:00
Megamouse afdf0b74a0 VS: filter for trophy_manager_dialog.h 2018-12-03 22:37:31 +01:00
Megamouse 87be1abb9a Qt: fix play icon default tooltip 2018-12-03 22:37:31 +01:00
kd-11 a56ba737b5 vk: Silence log spam 2018-12-03 20:01:23 +03:00
kd-11 504ab5a6d4 rsx: Minor cleanup to silence stupid compiler warnings 2018-12-03 20:01:23 +03:00
kd-11 f4c28eceef rsx: Fix null renderer 2018-12-03 20:01:23 +03:00
kd-11 9d0042f509 rsx: Fixup for the flattener
- Reset the flattener before use
- Better detection of FIFO misalignment
2018-12-03 20:01:23 +03:00
scribam 24a8d0aeef sceNp: add SCE_NP_ERROR_ID_NOT_FOUND for sceNpBasic*Entry* functions 2018-12-03 15:26:29 +03:00
RipleyTom 7f3eaed435 Fullscreen fix 2018-12-03 14:16:47 +03:00
RipleyTom 25414953e0 Fixes maximize window to properly update the render surface in Vulkan 2018-12-01 22:20:59 +03:00
msuih 8afc035aac Category filter for PS1/PS2/PSP games 2018-12-01 16:56:56 +01:00
kd-11 ec768afbd9 rsx: Flip workarounds for applications that flip via syscall
- Do not assume flip marks end-of-frame if executed via syscall
- Also disables skip_frame for these applications as there is no frame boundary
- NOTE: QUEUE_HEAD cannot be relied on as it is seemingly possible to flip the same head and not need to queue it
2018-11-30 23:51:25 +03:00
kd-11 2168159d03 gl: Fix flip regression
- Restore graphics state after flip (including active fbo) because flip can be made through a syscall
2018-11-30 23:51:25 +03:00
kd-11 b96ed5cd4e gl: Do not rely on driver statistics for s3TC textures; they are inconsistent. 2018-11-30 23:51:25 +03:00
kd-11 f1c3b46d60 rsx: Fixup - undo vertex cache 'improvements' 2018-11-30 23:51:25 +03:00
kd-11 5b6e1420f3 rsx: Pipeline barriers fixed up
- Ensure barriers are invoked even if no draw occurs!
-- Ensures that deferred commands are executed eventually
2018-11-30 23:51:25 +03:00
kd-11 8a186bb97e rsx: Fix insertion of execution barriers
- Ignore barriers inserted after BEGIN but before any draw commands are emitted
- Properly process tail barriers inserted before END but after draw commands are submitted
- Ignore execution barriers with no effect (same register value written)
2018-11-30 23:51:25 +03:00
kd-11 1d19f71a46 rsx: Re-enable fifo error reset 2018-11-30 23:51:25 +03:00
kd-11 718a04c84f fixup: Clear disabled attrib entries 2018-11-30 23:51:25 +03:00
kd-11 833c25894f [WIP] rsx: Rebase cleanup 2018-11-30 23:51:25 +03:00
kd-11 5193c99973 rsx: Enable dynamic FIFO preprocessing
- Tries to detect when FIFO preprocessing is beneficial and only enables optimizations if the benefit outweighs the cost
- Current threshold is at least 500 draw calls saved at over 2000 draw calls to justify the overhead
- TODO: More tuning for other CPUs
2018-11-30 23:51:25 +03:00
kd-11 7b065d7781 rsx: Fixup; input attributes blob decoding
- Use an unstructured blob and index into the vec4 structures to extract the real data
2018-11-30 23:51:25 +03:00
kd-11 846daadd5d rsx: Fixups
- Improve vertex attribute layout format. Allows for full 16-bit attribute divisor
- Use actual pitch when declaring framebuffer rsx pitch instead of register value in case of swizzle? rendering
2018-11-30 23:51:25 +03:00
kd-11 2e32777375 rsx: Scrap the prebuffered queue approach
- Basically starting over
- The cost of making command copies into the queue has a measurable impact
2018-11-30 23:51:25 +03:00
kd-11 9deecd506a fixup: It is possible for NOP commands to contain other garbage 2018-11-30 23:51:25 +03:00
kd-11 26a56ef1f1 vk: Spec compliance.
- TODO: Implement push_constants path instead of copy + bind descriptor sets
2018-11-30 23:51:25 +03:00
kd-11 d6b4440ef9 gl: Separate vertex env from program env 2018-11-30 23:51:25 +03:00
kd-11 435afcb865 rsx: Fix fifo draw barriers 2018-11-30 23:51:25 +03:00
kd-11 2d88e41583 rsx: Fix some checks when using inlined array rendering 2018-11-30 23:51:25 +03:00
kd-11 54ec363e88 rsx: Critical pipeline fixes
- Fix scissor and viewport binding behavior
- Fixes recovery if empty scissor is specified and then 'fixed' later
- Optimizes state binding a bit
2018-11-30 23:51:25 +03:00
kd-11 1ad76ad331 rsx: Restructure programs
- Also re-enable pipeline optimizations
2018-11-30 23:51:25 +03:00
kd-11 b0a6b72ce8 rsx: Optimizations
- Replace a few more vectors with simple_array<T>
- Avoid unnecessary string comparisons in backends. We already know referenced textures from the program analysers!
2018-11-30 23:51:25 +03:00
kd-11 677b16f5c6 rsx: Fixups
- Also fix visual corruption when using disjoint indexed draws

- Refactor draw call emit again (vk)

- Improve execution barrier resolve
  - Allow vertex/index rebase inside begin/end pair
  - Add ALPHA_TEST to list of excluded methods [TODO: defer raster state]

- gl bringup

- Simplify
  - using the simple_array gets back a few more fps :)
2018-11-30 23:51:25 +03:00
kd-11 e01d2f08c9 rsx: Refactor FIFO
- Removes fifo structures from common RSXThread
- Sets up a dedicated FIFO controller
- Allows for configurable queue optimizations
2018-11-30 23:51:25 +03:00
Nekotekina 96cabeadff Rewrite condition variables
Implement helper functions balanced_wait_until and balanced_awaken
They include new path for Windows 8.1+ (WaitOnAddress)

shared_mutex, cond_variable, cond_one, cond_x16 modified to use it
Added helper function utils::popcnt16
Replace most semaphore<> with shared_mutex
2018-11-29 01:30:05 +03:00
Nekotekina f442a8a84c SPU TG: add thread group stop counter
Fix possible race condition introduced by waiting on `running` value
2018-11-27 23:37:26 +03:00
Nekotekina febe4d4a10 Implement class cond_x16
Use as reservation notifier
Limited to 16 threads but allows more precise control of contention
2018-11-26 00:23:29 +03:00
Nekotekina 7f1cbb1136 Fix 16 bit audio mode
Pointed by @ruipin, some backends may be affected
Reuse float buffer for conversion result
2018-11-24 02:55:29 +03:00
eladash 4baa159523 cellFsOpen flag fix 2018-11-24 02:54:48 +03:00
Megamouse 0526bfd7de Support trophy manager moc'ing in vcxproj 2018-11-23 20:29:43 +01:00
msuih bf0e6ca174 Load trophies in another thread 2018-11-23 20:29:43 +01:00
kd-11 f505ac7b63 qt/gs_frame: Hotfix
- Dynamically check the loaded QT library version in case of mismatch
- Fixes using 5.11.1 builds with non-buggy libraries and vice versa
2018-11-22 10:21:13 +03:00
eladash 3c7f02d99d Fix libcamera regression 2018-11-19 19:05:39 +03:00
vit9696 634a5fa31c Fix macOS compilation 2018-11-19 14:39:33 +03:00
Nekotekina 65ca934452 cellSaveData: fix truncation size (regression) 2018-11-17 14:40:11 +03:00
Nekotekina 12ceceff19 cellSaveData: restore atime/mtime for unmodified files 2018-11-17 14:40:11 +03:00
isJuhn 225310e04b Add null alloc_addr checks to sys_memory_allocate and sys_memory_allocate_from_container 2018-11-16 18:37:07 +00:00
RipleyTom f4fb5200a0 cellVdecGetPicture accurate error checking 2018-11-15 20:06:49 +03:00
Nekotekina 0044eb44e2 Cleanup after #5310 (SPU thread groups)
Move lambda into a cpu_stop()
Use running thread counter to synchronize with sys_spu_thread_group_join()
Use SPU_STATUS_STOPPED_BY_STOP exclusively for sys_spu_thread_exit() as before
Remove unnecessary waiting in sys_spu_thread_group_exit()
Rollback some minor unnecessary changes
Use shared_mutex in SPU TG
2018-11-14 12:50:24 +03:00
RipleyTom 0e0a82e536 Ensures threads are stopped in join 2018-11-13 10:19:28 +03:00
eladash 2e1aec4de8 Implement sys_spu_thread_tryreceive_event 2018-11-12 21:12:33 +03:00
RipleyTom fada8b6594 Increases stack allocation for callbacks. 2018-11-12 15:09:26 +03:00
eladash 57b7892de6 Fix typo in sys_fs_mkdir
create_path is a less resticted version of create_dir, it doesnt check for EEXIST for one.
2018-11-12 13:28:58 +03:00
eladash 37b6afaf2c rsx: inlined array stride fix 2018-11-11 23:17:07 +03:00
RipleyTom 986bb24326 Extra check when opening pup file 2018-11-10 12:41:47 +03:00
Nekotekina 2fd384ae95 SPU LLVM: check state in every callable chunk
It's often redundant but may be necessary
2018-11-09 16:19:59 +03:00
Nekotekina c17a98030a qt: Add supporters 2018-11-09 16:19:59 +03:00
eladash 90f816595a Fix cellPadGetData
* Remove complete buffer clear
* If pressure sensitivity option is not specified, write zeroes (should this be handled from our actual controller handler?)
* Check sensor setting before reporting changes
2018-11-07 15:46:51 +03:00
eladash 3332a10052 ppu: Fix threads scheduler
*Set priority under a lock
*Fix yield command making threads going out of scheduler control by removing it from the queue (not a bug that affects compatibility)
2018-11-07 13:06:29 +03:00
eladash 3fd17e43a3 lv2: Fix lwcond_queue_wait lock acquiring 2018-11-07 13:06:29 +03:00
eladash 3faaf9e7fb lv2: Fix lwmutex locking 2018-11-07 13:06:29 +03:00
eladash 777f36e604 Fix error code checking of sys_lwcond_signal_x 2018-11-07 13:06:29 +03:00
Ani 2abbedcc50 gui: Fix OpenCorrectionDialog message
It was incorrectly trying to get the previous setting value after updating the setting
2018-11-07 00:04:22 +01:00
RipleyTom 9831bc6bc9 Bluetooth returns select as KEY_BACK for XBOX ONE controller. (#5303) 2018-11-05 14:25:38 +00:00
Nekotekina 488928eca2 Fix SPU STOP instruction
Check thread state after STOP instruction
2018-11-05 14:35:50 +03:00
Nekotekina f06e6be2c1 Disable npc update for SPU thread groups 2018-11-05 13:14:11 +03:00
Nekotekina eaa17b7f7c cellSaveData: anti-corruption precautions
Try to commit changes atomically
2018-11-05 13:14:11 +03:00
Nekotekina 6104685ad6 Implement cond_one sync primitive
Change futex() args to use unsigned int
2018-11-05 13:14:11 +03:00
Nekotekina 06253c8489 Implement "Initialize Directories" options
If disabled, /dev_hdd0, /dev_hdd1, etc, are not created automatically.
2018-11-05 13:14:11 +03:00
eladash 75221a6078 rsx: Fix inlined vertex array validation 2018-11-04 22:57:18 +03:00
eladash 43b75ccf04 cellGame: Add missing nullptr checks
if the param is null pointer, the library simply skips writing into it. also fix the order of writes.
2018-11-02 19:47:37 +03:00
HexyFify 98f2967aac Update firmware latest version to 4.83 2018-11-02 00:51:42 +00:00
Zion Nimchuk fa134337d9 Fix issue with memory validation 2018-11-02 03:21:36 +03:00
eladash 3a7f5b970f ppu: Fix stack base 2018-11-02 02:16:29 +03:00
eladash 7056b5fc70 rsx-debugger: add forgotten super ptrs 2018-10-30 22:33:59 +03:00
eladash 68a8efdc33 rsx-debugger: auto jump into get address on startup 2018-10-30 22:33:59 +03:00
eladash fb30c8a937 rsx enums: fix typos 2018-10-30 22:33:59 +03:00
eladash 5270dc1c9e rsx-debugger: fix ret and nop cmd display 2018-10-30 22:33:59 +03:00
eladash 4069470585 rsx-debugger: ignore invalid cmds
basically ignore all non method cmds when scrolling to the next command, not only branches.
2018-10-30 22:33:59 +03:00
eladash 2058d024ce Fix cellGcmInit (workaround) 2018-10-28 20:09:09 +03:00
Megamouse d56c85fe01 RSX/Capture: fix filePath and remove strict mode check (#5283)
- Fixes regression introduced by kd-11 when merging in jarves' flip rework.
2018-10-27 13:06:50 +03:00
Megamouse 1cf62e9ded Qt: add option to add games to the main menu 2018-10-27 02:37:59 +02:00
Megamouse 586c0ea1d0 Qt: rename deleteLLVMCache to removePPUCache 2018-10-23 22:35:50 +02:00
Dennis Luxen 36d4614d12 Fix a warning that shift overflows data type width (#5116) 2018-10-23 18:49:01 +03:00
eladash dfacdd8a40 fixup for rsx debugging tools segfaults 2018-10-23 18:02:03 +03:00
eladash 5ee351234c rsx-capture: unbreak 2018-10-23 18:02:03 +03:00
Megamouse eba2216c4a fix evdev device list 2018-10-20 22:08:58 +02:00
eladash d14c8a03b3 typo fix 2018-10-20 22:27:48 +03:00
Zion Nimchuk 966c3fea5b Fix command line arguments, add --version and set Qt application name 2018-10-20 20:42:25 +02:00
Megamouse aed83e69c9 Qt: add tick marks to Master Volume Slider 2018-10-20 19:19:54 +02:00
Megamouse 6e08d8e746 Qt: also enable/disable overlay centering checkboxes 2018-10-20 19:19:54 +02:00
Megamouse c9d8cd3613 Qt: refactor settings_dialog and add EnhanceSlider 2018-10-20 19:19:54 +02:00
Megamouse da5385686c Qt: add master volume slider to the audio tab 2018-10-20 19:19:54 +02:00
Zion Nimchuk db40cbda58 Qt: set Vulkan surface in gs_frame 2018-10-20 18:49:04 +02:00
msuih 56ea45f9d5 Add setting for master volume 2018-10-20 16:35:01 +03:00
elad 6829fa0286 rsx: Improve inlined arrays (#5248)
* rsx: Implement register reads in inlined arrays

* rsx: Check for disabled streams in inlined arrays
2018-10-20 16:00:53 +03:00
Nekotekina 1b37e775be Migration to named_thread<>
Add atomic_t<>::try_dec instead of fetch_dec_sat
Add atomic_t<>::try_inc
GDBDebugServer is broken (needs rewrite)
Removed old_thread class (former named_thread)
Removed storing/rethrowing exceptions from thread
Emu.Stop doesn't inject an exception anymore
task_stack helper class removed
thread_base simplified (no shared_from_this)
thread_ctrl::spawn simplified (creates detached thread)
Implemented overrideable thread detaching logic
Disabled cellAdec, cellDmux, cellFsAio
SPUThread renamed to spu_thread
RawSPUThread removed, spu_thread used instead
Disabled deriving from ppu_thread
Partial support for thread renaming
lv2_timer... simplified, screw it
idm/fxm: butchered support for on_stop/on_init
vm: improved allocation structure (added size)
2018-10-19 22:22:35 +03:00
Nekotekina 430e2243ac Fix audio_thread buffer deallocation race 2018-10-19 22:22:35 +03:00
Nekotekina 73d35b0236 Remove CALL_FUNC, implement ppu_execute<>() 2018-10-19 22:22:35 +03:00
Megamouse 4ab777b429 Add title to emulator message dialogs 2018-10-14 23:14:46 +03:00
msuih 48416e81eb Save compatibility draw state 2018-10-13 17:05:36 +02:00
msuih 90688c4970 Compatibility status to grid view
Includes icon drawing, menu option and settings entry.
2018-10-13 14:43:23 +02:00
scribam 8540399ecb ppu-interpreter: improve vminfp instruction 2018-10-12 21:30:14 +03:00
elad 623f1b35f6 rsx_capture/gcm: Fix tile binding (#5246)
* gcm: Fix tile offset setting

highest bit signifyies location, so ignore that while reading the offset.

* rsx-capture: Fix tile binding

fixes division by zero when dividing by pitch when the tile is not bound.

* rsx-capture: Fix zcull binding
2018-10-12 19:05:08 +03:00
eladash 83b6c98563 rsx: Fix u16 index arrays overflow
Force u32 index array destinations to avoid overflows when adding vertex base index.
2018-10-08 16:39:47 +03:00
eladash e361e0daa6 rsx: Fix restart index check for u16 index arrays
Dont ignore upper bits of the restart index with u16 types
2018-10-08 16:39:47 +03:00
scribam 39272eef45 ppu-interpreter: improve vsl/vsr instructions 2018-10-08 00:15:26 +03:00
scribam cc846eb670 ppu-interpreter: improve fnmadd/fnmadds instructions (#5183)
* ppu-interpreter: improve fnmadd instruction

* ppu-interpreter: improve fnmadds instruction
2018-10-04 00:49:19 +03:00
Megamouse 49e5212a8f RSX/Overlays: Add option for japanese button layout 2018-10-03 23:08:33 +02:00
Megamouse 76da3fa907 RSX/Overlays: don't press buttons on every iteration 2018-10-03 21:37:05 +02:00
Megamouse 9693d1c3a3 RSX/Overlays: formatted comments 2018-10-03 21:37:05 +02:00
eladash 348db050ae rsx: Fix texture height read 2018-10-03 20:57:46 +03:00
eladash 62f97f2e5f rsx: Fix default texture dimensions
haha
2018-10-03 20:57:46 +03:00
eladash fa723f6dc4 rsx: Fix texture depth read 2018-10-03 20:57:46 +03:00
eladash 4174d7274d sys_rsx: fix log spam 2018-10-03 20:57:46 +03:00
eladash a92ae827c1 rsx: Remove texture mipmap hack 2018-10-03 20:57:46 +03:00
eladash 6586090307 rsx: Remove texture size hack 2018-10-03 20:57:46 +03:00
eladash eacd1b8f13 rsx: Remove texture address hack 2018-10-03 20:57:46 +03:00
Nekotekina 1b740995a4 Refactor audio_thread (g_idm) 2018-10-02 23:26:54 +03:00