Compare commits

..

684 Commits

Author SHA1 Message Date
Elad e9ad8a9219 Update SPULLVMRecompiler.cpp 2026-03-30 13:32:45 +03:00
Megamouse 6dc06b3ff5 Update Qt to 6.11.0 2026-03-30 10:58:19 +02:00
Megamouse a10390e52a Update libpng to 1.6.56 2026-03-30 10:58:19 +02:00
Megamouse 433110b4d8 Update wolfssl to 5.9.0 2026-03-30 10:58:19 +02:00
Megamouse b94e6d4864 Fix some warnings 2026-03-30 10:58:19 +02:00
Megamouse 44dc29e52b Qt: Add some some more thread names 2026-03-30 10:58:19 +02:00
Megamouse ab03d76ed6 overlays: show latching message for fatal errors 2026-03-30 10:13:05 +02:00
Megamouse bd2b2c2747 Qt: add recording settings dialog 2026-03-30 09:17:20 +02:00
Ani aa7cf5ea15 sysinfo: Implement RAM Usage stats for Linux (#18473)
Reads memory statistics from "/proc/meminfo"
2026-03-29 19:48:59 +03:00
oltolm f8fe64ff77 find_dialog: fix compiler warning 2026-03-29 14:45:53 +02:00
oltolm 1791876eda remove unused lambda captures 2026-03-29 14:45:53 +02:00
oltolm e6204d3c1d CMake: fix the case USE_SYSTEM_ZLIB=OFF and USE_SYSTEM_CURL=OFF 2026-03-29 14:45:53 +02:00
oltolm f0f9ef6f30 cmake: fix build with latest Curl 2026-03-29 14:45:53 +02:00
kd-11 51ea735cb5 rsx/vk: Try to reclaim memory aggressively when changing resolution scale 2026-03-28 20:20:12 +03:00
kd-11 069821a2e7 rsx/rtts: Fix broken optimization check
- Typo. Applying inverse res scale is really not what we want
2026-03-28 20:20:12 +03:00
kd-11 0052108e87 rsx/rtt: Fix transfer region calculation when source and destination scaling does not match 2026-03-28 20:20:12 +03:00
kd-11 64c24959cb rsx: Fix clang build 2026-03-28 20:20:12 +03:00
kd-11 b57390d3cd rsx/overlays: Add resolution scale threshold to home menu 2026-03-28 20:20:12 +03:00
kd-11 91c136b6d0 rsx/overlay: Add resolution scale slider to home menu 2026-03-28 20:20:12 +03:00
kd-11 c00fa2cc8c config: Make resolution scaling a dynamic option 2026-03-28 20:20:12 +03:00
kd-11 fe3cbde1d3 rsx: Add optimization to skip cloning surfaces whose dimensions did not change
- If only the threshold changed or the surface is below threshold anyway, nothing will change
- In those cases, just update the internal data and continue
2026-03-28 20:20:12 +03:00
kd-11 e2dff6bbf8 rsx: Implement resolution scale change handling in surface cache 2026-03-28 20:20:12 +03:00
Elad 976cd1ce66 SaveStates: Fix restart after saving 2026-03-27 22:22:40 +03:00
Elad a4523651c7 RPCS3: Notify RAM shortage, Log current and peak RAM usage 2026-03-27 20:20:29 +03:00
BehroozRezvani 2702417192 Make performance overlays use window space (#18419)
Adds a new performance overlay option to use the whole window as rather
than just framebuffer space.
2026-03-27 16:08:46 +01:00
capriots 72b872df66 cellDmuxPamf: fix freezing FMVs in some games
- Delays demuxing a bit to let the game finish initializing FMV
playback.
- Also includes the missing half of #18450 which I forgot to Commit ^^"
- Sets cellDmuxPamf to HLE by default again
2026-03-27 13:47:26 +00:00
Elad bb3e2689d4 Thread.cpp: Fix game exit on access violation
Fixes game closing in Twisted Metal.
This commit also aloows to debug such states by using cpu_flag::req_exit as a broker
2026-03-26 13:55:00 +02:00
Elad 4ced11e533 SPU Analyzer: Add pure opcode tag 2026-03-26 13:55:00 +02:00
Elad 9a0a5a1735 LLVM: Try to reuse BitCasts 2026-03-26 13:55:00 +02:00
Elad e83034624b SPU Debugger: Measure rate of block ran 2026-03-26 13:55:00 +02:00
Elad 619fe7b14e SPU LLVM: Classify SPU memory and context memory instructions 2026-03-26 13:55:00 +02:00
Elad 37a07ae545 SPU LLVM: Optimize FM, FMA and FCGT in Reduced Loop 2026-03-26 13:55:00 +02:00
Elad e1eae3ee49 Add floating ppoint hint 2026-03-26 13:55:00 +02:00
Elad 49abd6d8e5 SPU LLVM: Allow the reuse of address from LQX/STQX 2026-03-26 13:55:00 +02:00
Elad fbdbf8addf SPU LLVM: CEQHI pattern 2026-03-26 13:55:00 +02:00
Elad 2e4ee9c9b6 SPU LLVM: Implement reduced loop 2026-03-26 13:55:00 +02:00
Elad a863e94c25 SPU: Detect reduced loop 2026-03-26 13:55:00 +02:00
kd-11 9b6bc7c1b4 rsx: Make resolution scaling configuration non-global
- Paves the way for other changes.
- The main goal is to be able to switch the resolution scale and MSAA level at runtime.
2026-03-25 21:19:46 +03:00
kd-11 86b7ea6bf3 overlays/sdf: Avoid 0-height inner boxes for switch capsule
- Can introduce dfdx/dfdy discontinuities on the midline as the distance changes direction
- The seams can sometimes become visible if a border is applied on some GPUs
2026-03-25 21:19:46 +03:00
oltolm 18bd6d681e cmake: fix build with bundled zlib 2026-03-25 08:30:41 +01:00
oltolm 2dd194d381 make the code build with Clang 22 2026-03-25 08:30:41 +01:00
oltolm a8b603dd92 CMake: remove option USE_MSVC_STATIC_CRT and clean up 2026-03-25 08:30:41 +01:00
Megamouse a03d4f69f8 logs: Fix global log levels during boot and after changing log level settings 2026-03-24 19:34:06 +01:00
capriots 99bb042bea HLE modules: process PPU state after lv2 syscalls 2026-03-24 07:55:05 +02:00
Megamouse 2bcc27d581 Qt/input: Do not send gui input release events until there was at least one button press 2026-03-23 20:32:46 +01:00
Megamouse 53c33cd812 gui/input: disable stick anti deadzone in pad navigation
This is only meant to be used during emulation.
2026-03-23 19:35:01 +01:00
Megamouse 1d05cf9ce5 Qt/Input: trace gui pad navigation button presses 2026-03-23 19:35:01 +01:00
Megamouse 07f5b0aa5b Qt: Improve find dialog
Add index of current line and word.
Add case sensitivity checkbox.
2026-03-23 17:52:30 +01:00
Megamouse 36e1d664ea Qt: Smoothly start/stop audio with fade in and fade out 2026-03-23 14:47:15 +01:00
Megamouse 90e2c39015 Qt: loop SND0.AT3 audio 2026-03-23 14:47:15 +01:00
kd-11 5a90dc0059 overlays: Bump the slider label font size 2026-03-23 02:38:34 +03:00
kd-11 c19d22ce88 overlays/sdf: Clamp rounded-rect border radius to never exceed the box sides
- If the radius exceeds any half-dimension then the box-shrink subtraction yields a negative.
  That negative introduces a second transition boundary when the classification happens as it transitions back to positive.
  Normally not a big deal but when rendering borders at the transition points it can introduce artifacts.
2026-03-23 02:38:34 +03:00
kd-11 5acc263b73 gl: Properly initialize memory layout definition structs
- Also refactors the upload_texture function to be a bit more readable
2026-03-23 01:36:50 +03:00
schm1dtmac bc6e01c422 Fix GH & brew breaking macOS builds again 2026-03-22 20:36:51 +01:00
kd-11 a2eb4fec53 overlays: Restore slider handles to previous size
- Added padding to smooth out the outer edge transition made the circle too small
2026-03-22 20:11:43 +03:00
kd-11 32c9c6f515 overlays: Fixups for switch rendering
- Disallow odd numbers for the primary dimension
- Increase the size slightly in home menus
- Disable vertex snapping when rendering SDFs
2026-03-22 20:11:43 +03:00
kd-11 04f7dd02fd overlays: Fix SDF rendering when scrolling is involved 2026-03-22 20:11:43 +03:00
kd-11 35907bcfc8 overlays: Redesign switches 2026-03-22 20:11:43 +03:00
kd-11 61b1bd7ead overlays/sdf: Take element padding into account
- Helps to smooth out the outer edges of ellipses and circles
2026-03-22 20:11:43 +03:00
kd-11 2bad4f47f1 gl: Integrate SDF rendering functionality 2026-03-22 20:11:43 +03:00
kd-11 5a94adcf26 overlays: Implement SDF config transforms 2026-03-22 20:11:43 +03:00
kd-11 57e37862f4 overlays: Use ellipse SDF for circles 2026-03-22 20:11:43 +03:00
kd-11 45bae0046a vk: Add support for basic SDF rendering
- Does not support scaled coordinates yet
2026-03-22 20:11:43 +03:00
kd-11 a0c91bf96a overlays: Use SDF equations to represent curved shapes 2026-03-22 20:11:43 +03:00
Ani b607993b7b overlay: Remove redundant redeclaration
Fixes one gcc compilation warning
2026-03-22 16:40:20 +01:00
Ani 1eb72e4b71 rpcs3: Add missing #include <climits>, fix gcc-16 compilation 2026-03-22 16:40:20 +01:00
Megamouse e5840ab868 Qt: fix audio timer loop 2026-03-22 15:46:44 +01:00
BehroozRezvani 54999d1507 Add Zed config files to gitignore 2026-03-22 13:16:58 +01:00
Megamouse 51514f9dc8 Qt: start hover audio/video after a timeout 2026-03-22 06:49:43 +01:00
Megamouse 40229adb14 Qt: add gui audio volume setting 2026-03-22 06:49:43 +01:00
Megamouse 33f8deffbe Qt: add setting for disabling hover music 2026-03-22 06:49:43 +01:00
Megamouse c80e08a642 Qt: Don't check for movies if play_hover_movies is disabled
Apparently this was forgotten. The variable was already captured
2026-03-22 06:49:43 +01:00
Megamouse 62b2ffd7ca Qt/overlays: Add secondary audio output for emulation 2026-03-22 06:49:43 +01:00
Megamouse cd1d6282b4 Qt: Remove some unused code 2026-03-21 16:10:26 +01:00
kd-11 67f69bb4b3 rsx/cfg: Fix handling of instructions with literal input
- The hardware is pretty dumb about it, it just unconditionally skips the next instruction
2026-03-21 14:44:45 +01:00
RipleyTom 2ba7756c0e Add overlay notification for received messages 2026-03-20 19:51:16 +01:00
Megamouse c6407b37a5 Batch create/remove steam shortcuts 2026-03-20 17:48:11 +01:00
kd-11 410660627d overlays: Add a special message id for spinners with empty text 2026-03-20 15:33:28 +03:00
kd-11 852317a071 overlays: Shrink the shader notification popup 2026-03-20 15:33:28 +03:00
kd-11 6590f1b55d overlays: Add RSX memory tiling to settings page 2026-03-20 15:33:28 +03:00
schm1dtmac 84277f41a1 Fix mac builds (& add some failsafes) 2026-03-19 21:51:36 +01:00
Ani b73c45f1fb overlay: Add 8px left margin on the sidebar 2026-03-19 19:44:55 +01:00
kd-11 ddd226f0ea rsx/fp/cfg: Add unit test for special cond inversion 2026-03-19 19:38:17 +03:00
kd-11 3c68c36fa0 rsx/cfg: Log a warning when encountering empty IF blocks with ELSE aliasing
- Hardware tests confirm this is correct behavior, the condition just inverts
2026-03-19 19:38:17 +03:00
kd-11 d54e54b66d rsx/cfg: Handle IF-ELSE aliasing statement as inverted condition
- If there is no IF block but ELSE block exists, treat the branch as being inverted and the ELSE block as the main IF body
- Rare but seen in some games
2026-03-19 19:38:17 +03:00
RipleyTom 2f3b66985e Clean up code using mutable + const when possible 2026-03-19 14:56:48 +02:00
kd-11 43799762c7 qt: Update tooltips with new vsync behavior 2026-03-19 03:10:07 +03:00
kd-11 cb501e32ca gl: Make vsync setting dynamic 2026-03-19 03:10:07 +03:00
kd-11 7a7e25f901 overlays: Add Vsync configuration to overlays 2026-03-19 03:10:07 +03:00
kd-11 e690e7e458 gl/vk: Implement tri-state Vsync setting 2026-03-19 03:10:07 +03:00
Ani 253d4565f1 config: Enable start in fullscreen mode by default 2026-03-18 22:34:37 +01:00
Megamouse 1f2a935458 Qt: Do not close pad settings dialog if user said no in duplicate button dialog 2026-03-18 18:47:34 +01:00
Megamouse 0c27b63ab4 Qt: fix duplicate button or combo warning 2026-03-18 18:47:34 +01:00
FlexBy420 4c106960c5 Update current firmware to 4.93 2026-03-18 16:00:35 +02:00
Megamouse f076d1e1e6 Input: Fix keyboard stick handling 2026-03-18 12:10:29 +01:00
Megamouse 7b58340a60 Input: optimize keyboard button handling on release 2026-03-18 12:10:29 +01:00
Megamouse 5578edf9e4 Input: Map PS button to start+select by default 2026-03-18 12:10:29 +01:00
Megamouse 704d8764af input: refactor combos into a struct for future use
Also update some terminology in the code
2026-03-18 12:10:29 +01:00
Darkhost1999 6523afa69a overlays/home: Fix restarting games from home menu 2026-03-17 21:39:18 +01:00
Megamouse 5416f432b5 input: Fix SDL buttons 2026-03-17 20:53:46 +01:00
Megamouse 43f3a4816d Qt: Fix game list selection after Refresh(true) 2026-03-17 20:15:40 +01:00
Megamouse bc0c42b025 Automatic combo button input 2026-03-17 15:30:21 +01:00
Megamouse 9f3adb3fc7 Fix steam banners for iso files 2026-03-17 14:47:17 +01:00
Megamouse df6cba6582 Use ICON0.PNG for steam cover 2026-03-17 14:47:17 +01:00
Megamouse 8cdad0af98 Add more fallbacks to the steam banner 2026-03-17 14:47:17 +01:00
Megamouse 801a1e6c38 Qt: Move game shortcut creation logic to shortcut_utils 2026-03-17 14:47:17 +01:00
kd-11 9da088fe29 overlays: Relax vblank range to default 2026-03-17 15:42:12 +03:00
kd-11 d96f31eda4 overlays: Limit vblank setting in the UI
- Use Qt GUI or config modification if you need crazy figures
2026-03-17 15:42:12 +03:00
kd-11 a5cce58225 overlays/home: Auto-resize the sidebar in case of long translated text 2026-03-17 15:42:12 +03:00
kd-11 39e6fc5918 overlays: Left align the savestates menu
- Temporary measure, a proper dialog will be added later
2026-03-17 15:42:12 +03:00
kd-11 2ea344ce3e overlays: Allow home menu 'entries' to support different alignment options 2026-03-17 15:42:12 +03:00
kd-11 358fbb3ce3 overlays: Backing out of settings menu returns to home menu 2026-03-17 15:42:12 +03:00
kd-11 aaf441005a overlays: Fix UX issues with dropdowns
- Select button resets the value to default
- Audio cues play correctly
2026-03-17 15:42:12 +03:00
Megamouse 6e6dd603cb mmjoy: deduplicate some code 2026-03-17 13:36:25 +01:00
Megamouse 22fe14d31d input: implement button combos 2026-03-17 13:36:25 +01:00
Megamouse 2eba7da8e6 Qt: Create Steam banners as well during shortcut creation 2026-03-16 23:20:24 +01:00
kd-11 ca2b7f9b9f rsx/overlays: Fix linux build 2026-03-16 19:08:07 +03:00
kd-11 4780e7c8da rsx/overlays: Fix clang build 2026-03-16 19:08:07 +03:00
kd-11 a318384142 rsx/overlays: Fix weird spacing with reset prompt
- Just post-rebase issues
2026-03-16 19:08:07 +03:00
kd-11 53d3f49f45 overlays/gl: Fix misbehaving clip regions 2026-03-16 19:08:07 +03:00
kd-11 25581ce52f overlays/tabs: Fix crash when scrolling through tabs quickly 2026-03-16 19:08:07 +03:00
kd-11 6c0c80b7bb overlays/list-view: Use track to indicate scrolling instead of ugly highlight 2026-03-16 19:08:07 +03:00
kd-11 f9af53f215 overlays: Fix bug with list view element count calculation and selection wrap-around 2026-03-16 19:08:07 +03:00
kd-11 2fd5b1b4be overlays/home: Add icons to settings page 2026-03-16 19:08:07 +03:00
kd-11 3acf1f6470 overlays: Add some more icons 2026-03-16 19:08:07 +03:00
kd-11 37f1533dad overlays/home: Integrate the new dropdown widget 2026-03-16 19:08:07 +03:00
kd-11 bb652ed840 rsx/overlays: Implement dropdown control
- The base widget and the popup are rendered separately
- The owner is responsible for placing the widget at the desired position for rendering
2026-03-16 19:08:07 +03:00
kd-11 281706fdae overlays/utils: Add simple utility to center align a child component 2026-03-16 19:08:07 +03:00
kd-11 198fe71cc4 overlays/checkbox: Make sure backgrounds are opaque for clarity 2026-03-16 19:08:07 +03:00
kd-11 b8e2c7060b overlays: Improve slider label spacing 2026-03-16 19:08:07 +03:00
kd-11 dbb6c87a10 utils: Implement enum size computation 2026-03-16 19:08:07 +03:00
kd-11 7240cbfdab rsx/overlays: Implement arrow rendering 2026-03-16 19:08:07 +03:00
kd-11 7866c7195c rsx/overlays: Tabs - Do not touch renderer resources on the input thread! 2026-03-16 19:08:07 +03:00
kd-11 e26978e664 overlays/home: Use the new slider component 2026-03-16 19:08:07 +03:00
kd-11 63ed8881a4 rsx/overlays: Implement slider control 2026-03-16 19:08:07 +03:00
kd-11 1be7b9f983 overlays: Align switches to container end 2026-03-16 19:08:07 +03:00
kd-11 471ed347f4 overlay/settings: Use switch element instead of checkbox 2026-03-16 19:08:07 +03:00
kd-11 cff9b5b65e rsx/overlays: Implement checkbox and switch controls 2026-03-16 19:08:07 +03:00
kd-11 5d28ff5df1 overlays: Unified icon loading logic 2026-03-16 19:08:07 +03:00
kd-11 7fd0aa95fb overlays: Add icons for trophies and friends 2026-03-16 19:08:07 +03:00
kd-11 27ecfaee9c overlays/home: Add icons to the home menu 2026-03-16 19:08:07 +03:00
kd-11 ce2afa1d54 overlays: Extend list view to allow hassle-free insertion of overlay-element descendants 2026-03-16 19:08:07 +03:00
kd-11 984c562500 overlays: Fix bug in box padding calculation 2026-03-16 19:08:07 +03:00
kd-11 f880a00cba overlays: Provide home icons in different sizes 2026-03-16 19:08:07 +03:00
kd-11 6cf2cc67d3 overlays/icon: Handle some edge cases 2026-03-16 19:08:07 +03:00
kd-11 9e6fecb4ca rsx: Tighten data contract for "external" raw images 2026-03-16 19:08:07 +03:00
kd-11 3194bd3fb4 overlays/home: Add icons repository wrapper 2026-03-16 19:08:07 +03:00
kd-11 fcb5a5c5f8 overlays: Add some home menu icons from font-awesome 2026-03-16 19:08:07 +03:00
kd-11 3988eceb8d overlays: Turn the home menu into a proper sidebar 2026-03-16 19:08:07 +03:00
kd-11 2b2b13273b overlay/settings: Add missing sound effects 2026-03-16 19:08:07 +03:00
kd-11 88278ec7c9 rxs/overlays: Fix visual glitches in the tabbed settings dialogs 2026-03-16 19:08:07 +03:00
kd-11 7d92198ef0 rsx/overlays: Improvements for some containers 2026-03-16 19:08:07 +03:00
kd-11 23eb67badc rsx/overlays: Convert settings pages to a tabbed interface 2026-03-16 19:08:07 +03:00
kd-11 d5928d99d7 rsx/overlays: Replace home menu with a sidebar 2026-03-16 19:08:07 +03:00
kd-11 3c16105c3b overlays/home: Refactor to support having some home pages inside other containers 2026-03-16 19:08:07 +03:00
kd-11 5cb688f309 rsx/overlays: Implement tabbed containers 2026-03-16 19:08:07 +03:00
Megamouse 7859a5f9d2 input: log warning instead of throwing an exception when the dpad has an unknown value 2026-03-16 11:13:17 +01:00
Megamouse 8b74ea8757 Qt: Add steam shortcuts 2026-03-16 10:30:47 +01:00
Megamouse 2c2ec6e109 VS: Add missing test files
I'm having some gmock issues, so let's just exclude them for now.
2026-03-16 10:30:47 +01:00
Megamouse 6c48bd8f93 Fix callback initialization order
We need to initialize the emu callbacks before creating the main window.
Otherwise CallFromMainThread segs since call_from_main_thread is null.
The same goes for the CallFromMainThread connect in gui_application.
If we create the connection too late, we will simply never wake up the
caller and therefore softlock eventually.
2026-03-16 09:49:42 +01:00
Ani b422cb86f2 cmake: Build with SDL by default 2026-03-16 08:59:15 +01:00
Ani 1fb97734a0 cellDmuxPamf: LLE by default again
HLE implementation is crashing on a few games, see #18360, revert it back to LLE until issues with HLE are fixed
2026-03-16 06:21:01 +02:00
Ani 7221012593 config: Disable pad navigation by default
Pad navigation is currently crashing with the SDL handler, see #18362. Disable it until the issue is fixed.
2026-03-16 02:03:54 +01:00
p0yr4s 297db8713f qt: import QJsonDocument 2026-03-15 21:00:11 +01:00
p0yr4s 477ae6c6df cmake: Only use Qt6::GuiPrivate for Qt >= 6.10 2026-03-15 21:00:11 +01:00
Megamouse 74fbca8c80 input: simplify mmjoy handler 2026-03-15 20:00:05 +01:00
Megamouse 433816148a Fix iso shortcuts 2026-03-15 19:02:32 +01:00
Ani 5714eb0ba5 config/ui: Unify Shader Mode values
Have the same values between UI and Config for easing automatic configuration
2026-03-15 18:19:45 +01:00
Ani 315f88b0e4 ui: Split overlay settings, A-Z order emulator tab settings 2026-03-15 18:19:45 +01:00
AniLeo 8587fca5db ui: Move SPU Loop Detection to advanced 2026-03-15 18:19:45 +01:00
AniLeo e2a26f937f ui: Move PPU Non-Java Fixup to debug 2026-03-15 18:19:45 +01:00
AniLeo 90ebc7f319 ui: Move Accurate DFMA to debug 2026-03-15 18:19:45 +01:00
AniLeo 67a67feb68 ui: A-Z order advanced tab settings 2026-03-15 18:19:45 +01:00
AniLeo 9bdacc64aa config: Enable pad navigation by default 2026-03-15 18:19:45 +01:00
AniLeo 5a921bca46 ui: Allow toggling pad navigation on BSD 2026-03-15 18:19:45 +01:00
AniLeo 86f453f677 ui: Merge pkg/pup install dialog options 2026-03-15 18:19:45 +01:00
AniLeo 7712584bd4 ui: Merge exit/boot game dialog options 2026-03-15 18:19:45 +01:00
Ani bc58dff715 ui: Rename depth buffers to depth buffer
Removes ambiguity between config and ui
2026-03-15 18:19:45 +01:00
Ani 0bb6299e39 ui: Specify Anti-Aliasing as MSAA 2026-03-15 18:19:45 +01:00
Ani b24524fc75 config: Fix naming of SPU XFloat Accuracy
Rename from 'XFloat Accuracy' to 'SPU XFloat Accuracy'
2026-03-15 18:19:45 +01:00
Ani 60eb1ce2ec config: Fix naming of Asynchronous Texture Streaming
Rename from 'Asynchronous Texture Streaming 2' to 'Asynchronous Texture Streaming'
2026-03-15 18:19:45 +01:00
Ani 9733d8c857 config: Move FSR CAS out of Vulkan subcategory
FSR1 was already implemented for OpenGL as well, so this setting is no longer exclusive to the Vulkan render
2026-03-15 18:19:45 +01:00
jfleezy23 5274210ba8 VK: scale auto shader compiler workers on wide CPUs 2026-03-15 18:45:36 +03:00
Malcolm 1627757608 SPU LLVM: Emulate GBB with udot/sdot
Greatly simplifies GB, GBH, and GBH. Uses udot/sdot with power of two
masks to shift values and sum them in a single step, effectively
gathering them
2026-03-15 08:48:18 +02:00
Malcolm 4542020c86 SPU LLVM: ARM64: Use UDOT for emulating SUMB 2026-03-15 08:48:18 +02:00
Megamouse b734ceb2e7 overlays: allow to reset current setting 2026-03-14 17:50:22 +01:00
qurious-pixel 951d47c94c Use System Protobuf for Intel Mac 2026-03-14 09:53:24 +01:00
Megamouse 6f07e8453a Update curl to 8.19.0 2026-03-12 19:08:49 +01:00
Megamouse e6cf05cfb7 Qt: Fix log levels tooltip 2026-03-11 14:42:45 +01:00
Megamouse 6b6dd6c432 Qt: Rename Shortcuts to Keyboard Shortcuts 2026-03-11 14:42:45 +01:00
Megamouse ee01d1186f overlays: play SND0.AT3 during initialization 2026-03-11 06:45:22 +01:00
Megamouse 2934641237 overlays: support playing audio with video_view 2026-03-11 06:45:22 +01:00
Elad fecb53f86c Fix SaveStates cellDumxPamf regression 2026-03-10 20:13:29 +02:00
Elad 9811e1cc3b Debugger: Add HW PPU threads view 2026-03-10 20:13:29 +02:00
Elad 234f2b4648 Silence sys_memory_get_user_memory_size 2026-03-10 20:13:29 +02:00
Megamouse 9e573a9ff2 rpcn: set default version to 2 2026-03-10 17:41:48 +01:00
Megamouse 3803c864f7 rpcn: Fix file access error when loading rpcn.yml with version 1
The file was still in use when saving.
2026-03-10 17:41:48 +01:00
Megamouse 8afa40eaa7 rpcn: Fix segfault in rpcn_settings_dialog destructor
This will happen if m_rpcn failed to connect in the constructor.
2026-03-10 17:41:48 +01:00
kd-11 c7a576edce gl: Implement proper, sectioned DMA transfers
- Allows to transfer partial contents when needed
2026-03-10 16:25:32 +03:00
kd-11 c72d54bd6a gl: Add guards to catch invalid configuration in image transfer functions 2026-03-10 16:25:32 +03:00
kd-11 040a79ddd1 gl: Improve object annotation for renderdoc debugging 2026-03-10 16:25:32 +03:00
kd-11 aa094ca948 gl: Trace memory readback operations to debug tracking when renderdoc compat is enabled
- Renderdoc does not show these calls so we need to insert the debug message
2026-03-10 16:25:32 +03:00
kd-11 7917520633 gl: Support packing/unpacking images with padding 2026-03-10 16:25:32 +03:00
kd-11 8651875e59 gl: Add optional row length to GPU image routines 2026-03-10 16:25:32 +03:00
kd-11 ef70a6e825 gl: Move ownership of the global blitter object from texture cache to global 2026-03-10 16:25:32 +03:00
kd-11 0869ef421d gl: Silence compiler warning 2026-03-10 16:25:32 +03:00
kd-11 5f86315ae0 gl: Fix shader interpreter compilation 2026-03-10 16:25:32 +03:00
kd-11 ab72ce418e gl: Minor enhancements to blitter
- Move some functions to cpp. Makes it easier to debug failing image operations
- Add fbo validation before blit operations
2026-03-10 16:25:32 +03:00
kd-11 36cdaac327 overlays: Fix image size estimation 2026-03-10 16:25:32 +03:00
kd-11 6d52415d50 gl: Ignore range offset when doing readback operations
- OGL desperately needs a functioning DMA layer
2026-03-10 16:25:32 +03:00
Megamouse 0603d24a91 Qt: play SND0.AT3 in game lists when a movie would play 2026-03-10 12:42:56 +01:00
Megamouse 71f0d5c602 cellGem: fix RAW8 to RGBA_320x240
We were basically writing two rows into dst for each other src line.
This means we were writing 480 lines in total instead of 240,
overwriting one of the lines written in the previous iteration.
This led to writing one line out of bounds last iteration.
Let's just use a simple debayer technique which perfectly matches here.
This also applies the previously missing gain factors.

I also tried to first demosaic and then drop every other pixel.
The result was comparatively blurred and the performance worse.
2026-03-10 07:01:55 +01:00
Megamouse 763001ee91 cellGem: fix gain channels 2026-03-10 07:01:55 +01:00
Megamouse 0f92ea2578 cellGem: fix memcpy in cellGemReadExternalPortDeviceInfo
It was copying from dst to src, and the wrong size at that
2026-03-10 07:01:55 +01:00
Megamouse e0a0d736c4 cellGem: remove redundant check 2026-03-10 07:01:55 +01:00
Ani 65320446f0 vk: Add 0x13C0 NAVI2 device ID (Raphael Mendocino)
This is the iGPU on 9800X3D
2026-03-09 19:32:09 +02:00
kd-11 5f6822042d gl: Silence warnings 2026-03-09 15:18:47 +03:00
kd-11 302e87c920 rsx/vk: Improve robustness when encountering corrupted shaders 2026-03-09 15:18:47 +03:00
RipleyTom 77cbdd82ab LLVM 22 fixups
From https://releases.llvm.org/22.1.0/docs/ReleaseNotes.html:
The alignment argument of the @llvm.masked.load, @llvm.masked.store, @llvm.masked.gather and @llvm.masked.scatter intrinsics has been removed. Instead, the align attribute should be placed on the pointer (or vector of pointers) argument.

They also changed(not in changelog for some reason):
vpdpbusd_128: [v4i32] -> [v4i32, v4i32, v4i32]
to
vpdpbusd_128: [v4i32] -> [v4i32, v16i8, v16i8]
2026-03-09 06:30:29 +02:00
Megamouse 41db06b53f cellGem: fix handle_pos calculation
The handle position depends on the sphere position and the orientation
2026-03-08 16:12:44 +01:00
Megamouse eeda9c7738 cellGem: improve quaternion rotation
rotate_vector caused wrong results for default_orientation and 0,0,x
2026-03-08 16:12:44 +01:00
Megamouse c38bf70464 cellCamera: improve error logging 2026-03-08 16:12:44 +01:00
RipleyTom 43b295892f PPUAnalyzer: Fix SLDI shift operand 2026-03-08 09:29:48 +02:00
capriots 2573cc5fd0 cellDmuxPamf: fix stream cache not being consumed in some cases 2026-03-07 21:46:07 +02:00
capriots 4828d4d2d6 cellDmuxPamf: review fixes 2026-03-07 21:46:07 +02:00
capriots c5f278ed37 cellDmuxPamf: properly handle streams smaller than 0x800 bytes 2026-03-07 21:46:07 +02:00
capriots b839d4d1a6 cellDmuxPamf: consume guest memory on SPU thread group creation 2026-03-07 21:46:07 +02:00
capriots 3616424b26 cellDmuxPamf: fix lv2 mutex + cond not being destroyed on close 2026-03-07 21:46:07 +02:00
capriots 4d6da6542e tests: enable cellDmuxPamf tests in CMakeLists 2026-03-07 21:46:07 +02:00
capriots f2aa347608 cellDmuxPamf: review fixes + improvements 2026-03-07 21:46:07 +02:00
capriots bd7d5faa9f cellDmuxPamf implementation part 2: PPU thread 2026-03-07 21:46:07 +02:00
capriots a3d09a7427 tests: cellDmuxPamf 2026-03-07 21:46:07 +02:00
capriots 7dad9663b2 cellDmuxPamf implementation part 1: SPU thread 2026-03-07 21:46:07 +02:00
kd-11 cae8ae63e3 gl: Use image dimensions to determine read buffer size 2026-03-07 16:29:11 +03:00
kd-11 728d84b1fe gl: Add debug names to some objects 2026-03-07 16:29:11 +03:00
kd-11 4a51302c58 gl: Propagate native layout from parent when creating temporary subresources 2026-03-07 16:29:11 +03:00
kd-11 0ea692e9ab gl: Use named_object<GL_TEXTURE> as the base class for images 2026-03-07 16:29:11 +03:00
kd-11 1e16b338b4 gl: Add support for named objects 2026-03-07 16:29:11 +03:00
kd-11 14789b536f gl: Clean up the awful image copy API
- Wrap everything in rsx::io_buffer and gl::buffer to avoid out of bounds issues.
- Also abstracts away nasty things like OpenGL offset pointer casts.
2026-03-07 16:29:11 +03:00
RipleyTom ac30feeddb Revert enabling PPU jump elider 2026-03-06 21:10:40 +00:00
Megamouse 0d80e300a0 Qt: add log level settings 2026-03-06 15:06:25 +01:00
Megamouse 69384d7bb4 Update codebase to SDL 3.4.0 2026-03-06 13:56:04 +01:00
Megamouse 4fd2409b8b Update FAudio to 26.03 2026-03-06 13:56:04 +01:00
Megamouse d97851376d Add stacktrace in case of exception 2026-03-06 13:56:04 +01:00
Megamouse 1c5e30e83f input/qt: fix default squircle value in text and remove duplicate comments 2026-03-06 13:56:04 +01:00
kd-11 414df8432e gl: Respect internal offsets when performing DMA transfer operations 2026-03-06 12:18:18 +03:00
kd-11 92f63ccc0b rsx/cfg: Silence GCC noise 2026-03-06 12:18:18 +03:00
kd-11 d75e8b24f7 [FIXUP] API extend 2026-03-06 12:18:18 +03:00
kd-11 a1af15b907 gl/dma: Fix range calculation when creating DMA blocks 2026-03-06 12:18:18 +03:00
kd-11 cf5eb22591 glutils: Extend buffer_object interface 2026-03-06 12:18:18 +03:00
RipleyTom 2f9f79eea2 PPU Fixes
-CallFunction empty function/jump elision was never gone through as cond was always false
-MSelf duplicate offset detection never triggered because set was reset each loop
-Rel executable memory size calculation used wrong section type
2026-03-06 10:49:59 +02:00
Megamouse c57d6110c4 rsx: add missing default to switch 2026-03-05 21:05:15 +01:00
Megamouse 2a292d1e2e rsx: fix unused parameter warning 2026-03-05 21:05:15 +01:00
Megamouse f2c8b157ef ISO: pass mode to file 2026-03-05 21:05:15 +01:00
Megamouse ec00a06caf Fix warning suppression in windows clang 2026-03-05 21:05:15 +01:00
Megamouse ae6172d86b Remove unused function 2026-03-05 21:05:15 +01:00
Megamouse 5605cf2141 Qt: Do not check return code of rpcs3 download 2026-03-05 17:25:45 +01:00
RipleyTom d46ddcee5d Fix mac build 2026-03-04 21:08:07 +03:00
Megamouse 3750fb2c1f cellGem: Fix deadlock when cellGemUpdateStart is called before cellCamera delivers images 2026-03-04 11:31:32 +01:00
kd-11 86b2773c28 rsx: Clean up after vertex cache changes 2026-03-04 03:54:39 +03:00
kd-11 11a9011510 rsx: Fix memory misalignment for temporary storage
- We create the temp storage with alignment of U but then do a type cast to u128 later. This obviously causes problems.
2026-03-04 03:54:39 +03:00
Iván Díaz Álvarez e66f1fa306 Solves render problems due to vertex data being modified before reuse
* Stores first 64bit of the vertex data to compare on retrieval as a fingerprint of if the underlying vertex data has been changed
2026-03-04 01:31:01 +03:00
AniLeo 595e42c4f3 rpcs3_version: Bump to 0.0.40 2026-03-03 13:16:24 +01:00
Megamouse 9288565676 Qt: properly handle cancel of pkg install dialog 2026-03-02 07:54:26 +01:00
Ani 00a1c7278a config/ux: Disable double-click to fullscreen by default
The state of mouse/keyboard on rpcs3 has matured enough to the point where using mouse on rpcs3 to play games is normal. Other games do not fullscreen on double-click, our default should match the expected application behaviour.
2026-03-01 11:58:38 +01:00
RipleyTom 5ca19eabd5 NP code review
sceNpTrophy fixes

- sceNpTrophyGetTrophyUnlockState: signed 1 was potentially shifted by 31(UB)
- sceNpTrophyUnlockTrophy: used a reader_lock and was missing check for read only context

cellGame fixes

- cellHddGameCheck: missing log parameters
- cellGameDataCheckCreate2: missing log parameter
- cellGameThemeInstall: condition inverted checking for extension + added tolower just in case
- cellGameThemeInstallFromBuffer: OOB access, buf is always filled from the start and then used as a parameter to the CB

sceNp fixes

- sceNpManagerGetTicket: Made accurate from RE
- sceNpDrmGetTimelimit: Fix msec calculation

sceNp2 fixes

-sceNpMatching2ContextStartAsync: avoid capturing ctx
-sceNpMatching2ContextStop: Minor error value swap

rpcn_client fixes

-add_friend: missing log parameter
-handle_friend_notification: misc validation issue

np_handler fixes
-ticket: Missing move in move constructor
-ticket::parse: Misc validation fix
-get_player_history_entry: potential UB fix

np_requests fixes

-Wrong CB event_type set for get_room_member_data_external_list!
-reply_tus_get_data was not copying status data!
-Order of error check in reply_get_room_member_data_external_list was wrong
-Improved logging

np_requests_gui:

-Added missing guards for gui_notifications

upnp_handler fixes

-Highest density of bugs per line of code in the west, let's pretend I never wrote this

signaling_handler fixes

-Swapped to multimap to avoid collisions on timestamps

Misc fixes
2026-03-01 09:20:32 +02:00
Megamouse 198c2e9eb8 Qt: attempt to download up to 3 times on return_code -255 2026-02-28 20:35:55 +01:00
Megamouse df5b624e45 clans: use std::move for ticket 2026-02-28 14:40:25 +01:00
Megamouse 37a125ddbd clans: const correctness 2026-02-28 14:40:25 +01:00
Megamouse 3624dac22b clans: remove unused struct 2026-02-28 14:40:25 +01:00
Megamouse b8f4aaa6fb Update SDL to 3.4.2 2026-02-28 11:35:36 +01:00
Megamouse 8cee5a33d0 Fix some warnings 2026-02-28 11:35:36 +01:00
Megamouse a9d4e1399a Update zlib to 1.3.2 2026-02-28 11:35:36 +01:00
Elad 0f3275ec82 sys_fs: Fixup op_read 2026-02-28 10:58:25 +02:00
Elad 45c6e938a5 SPU LLVM: Expand SPU Profiling to blocks 2026-02-28 10:58:25 +02:00
Elad 1ec3de9e8f SPU Analyzer: Fix analysis of instructions without regmod 2026-02-28 10:58:25 +02:00
Elad 35ccd63dbc Win32/File.cpp: Fix fs::file constraints to avoid crashes 2026-02-28 10:58:25 +02:00
Elad 188151fa99 SPU/misc: Remove outdated Instruction statistics 2026-02-28 10:58:25 +02:00
Elad 16b05c930f Misc: Force define LLVM for IntelliSense 2026-02-28 10:58:25 +02:00
Elad f39d82f990 SPU: Fix spu_itype::zregmod 2026-02-28 10:58:25 +02:00
Elad bbd91dad92 SPU DisAsm: Disable unlikely float representations 2026-02-28 10:58:25 +02:00
Elad cc1b4c8fd1 Fix strcpy_trunc type validation 2026-02-28 10:58:25 +02:00
RipleyTom 3b6afc1d9a Final sys_ fixes 2026-02-28 09:00:49 +02:00
RipleyTom b30a20c2dc More sys_ fixes 2026-02-27 06:02:28 +02:00
Ani 60db25980f ci: Update docker to 1.9 2026-02-26 12:37:45 +01:00
Ani 8396cc2300 openal: Update to 1.25.1 2026-02-26 12:37:45 +01:00
kd-11 41e036473a rsx: Fix broken shaders when depth format conversion is enabled with no format conversion code active 2026-02-25 22:44:33 +03:00
kd-11 daa53c8642 vk: Fix cubemap detection logic 2026-02-25 22:44:33 +03:00
kd-11 99c9c16187 rsx: Disallow sRGB hardware format promotion unless no remap is required 2026-02-25 22:44:33 +03:00
kd-11 94cd6a6f9e gl/vk: Clean up vertex texture handling
- Clean up code after refactors
2026-02-25 22:44:33 +03:00
kd-11 4fa3aaf2b5 rsx: Fix flickering when initializing texture units 2026-02-25 22:44:33 +03:00
kd-11 34f0e865ac rsx: Get rid of some guessing when handling special hardware formats 2026-02-25 22:44:33 +03:00
kd-11 cb7c3488ab rsx: Do not emit format conversion code in shaders if the feature is unused
- The sampling logic has become increasingly complex yet it is needed very rarely
2026-02-25 22:44:33 +03:00
kd-11 759ef0f5b0 rsx: Add border color correction for hardware SNORM formats 2026-02-25 22:44:33 +03:00
kd-11 585305f434 rsx: Improve hardware texel remapping support
- Fixes issues observed when the remap is requested on a hardcoded channel
- In that scenario, fall back to software
2026-02-25 22:44:33 +03:00
kd-11 cee868560a rsx: Add configuration toggle to debug tab 2026-02-25 22:44:33 +03:00
kd-11 0fb8091a31 rsx: Disable HW remapper if BX2 is active or the user requests not to use it 2026-02-25 22:44:33 +03:00
kd-11 bf5056145e rsx: Track BX2 reads per-TIU to allow enabling/disabling hw remapping 2026-02-25 22:44:33 +03:00
kd-11 34380b1ee7 vk: Make use of mutable formats for dynamic views 2026-02-25 22:44:33 +03:00
kd-11 f27315c821 vk: Support explicit mutable format list
- Actually important for performance reasons
2026-02-25 22:44:33 +03:00
kd-11 794abe2025 vk: Clean up image_view interfaces 2026-02-25 22:44:33 +03:00
kd-11 e29cd4cc93 gl: Implement SNORM and SRGB format overrides 2026-02-25 22:44:33 +03:00
kd-11 0f1735d0df gl: Add support for subviews 2026-02-25 22:44:33 +03:00
kd-11 07abde4e8d vk: Allow cached view to have mutable format 2026-02-25 22:44:33 +03:00
kd-11 3f174b2a97 vk: Implement SNORM and SRGB format overrides 2026-02-25 22:44:33 +03:00
kd-11 4c20bdcc9f vk: Add support for derived image views 2026-02-25 22:44:33 +03:00
kd-11 f2a17e4898 rsx: Add format override functionality to format_ex 2026-02-25 22:44:33 +03:00
kd-11 b9bdbfa55b vk: De-sphaggetify texture handling 2026-02-25 22:44:33 +03:00
kd-11 9e7268ed6d gl: Despaghettify texture handling 2026-02-25 22:44:33 +03:00
Megamouse 7c8b915ba1 tiny style fixes 2026-02-25 11:53:04 +01:00
Megamouse 9ede04c4b9 Invalidate some global variables in gs_frame dtor 2026-02-25 11:53:04 +01:00
Megamouse 8a0eae0ccd overlays: allow to go to begin/end of list without auto repeat 2026-02-25 11:53:04 +01:00
Megamouse f6429a1ae8 overlays: add fullscreen toggle to home menu 2026-02-25 11:53:04 +01:00
Megamouse bc93fdf9f4 input: Add some logging to mouse_gyro_handler 2026-02-25 11:53:04 +01:00
RipleyTom 064c006339 Various sys_ fixes 2026-02-25 04:41:01 +02:00
silviolet 260c986186 Implemented sorted emit_data for YAML nodes
- emit_data now Recursively sorts each node in a YAML node and outputs them as per the function description, originally a TODO
- The default config is still unsorted so when you click save or apply the sorted file will appear
2026-02-22 16:05:14 +02:00
oltolm 3b49420205 cellVdec: replace std::aligned_union_t with a union 2026-02-22 14:56:48 +02:00
kd-11 f5cf818bcc rsx: Disable interpolation for SNORM emulated textures 2026-02-22 14:56:56 +03:00
kd-11 2d7b72a769 rsx: Implement format_ex decoding for FS inputs 2026-02-22 14:56:56 +03:00
kd-11 2b7bb9ef0a rsx: Add format_ex utility 2026-02-22 14:56:56 +03:00
kd-11 e22c83f4ce rsx: Improve comments/documentation around border color SEXT convert 2026-02-22 14:56:56 +03:00
oltolm 3585881a6c cellSaveData: fix "Your comparator is not a valid strict-weak ordering" 2026-02-22 12:33:24 +02:00
Ani 6bfb33279f test_fmt: include <algorithm> 2026-02-20 19:46:39 +02:00
Ani 89efca9f63 system_utils: include <vector> 2026-02-20 19:46:39 +02:00
Ani bfea622999 sys_time: include <exception> on NOT WIN32 2026-02-20 19:46:39 +02:00
Ani e075170cc4 JITASM: include <mutex> on APPLE
Co-Authored-By: RipleyTom <RipleyTom@users.noreply.github.com>
2026-02-20 19:46:39 +02:00
Ani c7d7f2d03b Thread: Move include <thread> to .h
Co-Authored-By: RipleyTom <RipleyTom@users.noreply.github.com>
2026-02-20 19:46:39 +02:00
Ani fec2be87f6 types.hpp: #include <new>
Co-Authored-By: RipleyTom <RipleyTom@users.noreply.github.com>
2026-02-20 19:46:39 +02:00
Ani 6de8861b4e rpcs3: Target c++23 (msvc) 2026-02-20 19:46:39 +02:00
Ani 48667d68b2 rpcs3: Target c++23 2026-02-20 19:46:39 +02:00
RipleyTom a6b5c7e79f Generalize np::npid_to_string() use 2026-02-20 17:50:49 +02:00
RipleyTom a29758de6e signaling_handler: bugfix and cleanup 2026-02-20 17:50:49 +02:00
Megamouse ff992a67c8 win/fs: check file handle with GetFileInformationByHandle when creating fs::file
On empty mounted drives CreateFileW may return a valid handle even if the drive is not usable.
We have to check the file handle early. Otherwise other functions may fail later as a result.
2026-02-20 11:25:39 +02:00
RipleyTom aaf84a8445 sys_net/P2P: Various fixes
Fix RTT adjustment
Fix possible dead pointer interaction in lv2_socket_native::recvfrom()
Fix iterator invalidation in nt_p2p_port::recv_data()
2026-02-20 05:15:49 +02:00
RipleyTom b7b0e06a54 sys_net/lv2_socket_native: Various fixes
Fix is_socket_connected(always returned false)
Implement SYS_NET_IP_TTLCHK and SYS_NET_IP_MAXTTL
Fix lv2_socket_native::sendmsg, it was only sending the first iovec
Fix sys_net_bnet_sendto addrlen check
Fix assert in lv2_socket_native::recvfrom()
2026-02-20 05:15:49 +02:00
RipleyTom 53dcf2ba00 rpcn_client: Misc fixes
Fix missing freeaddrinfo
Fix wrong return value in a rpcn_client::connect() path
Fix missing 0 presence validation in vec_stream::get_string()
2026-02-20 05:15:49 +02:00
kd-11 2064bd87e3 rsx: Fix GCC build 2026-02-19 00:33:09 +03:00
kd-11 dc63f2fc1f rsx: Correct border-color register value for shader texel remapping
- PS3 border color does not correctly support signed channels and instead treats them as simple compression
- We instead perform the reverse conversion before sending it to our shader pipeline
2026-02-19 00:33:09 +03:00
kd-11 0faa8945bc rsx/vk: Fix bug with custom border color sampler storage
- If an app used multiple border colors, only the first one was being applied.
2026-02-19 00:33:09 +03:00
kd-11 b30a44c136 rsx: Make BX2 flag respect constant overrides 2026-02-15 21:04:56 +03:00
kd-11 8a1b323749 rsx/fp: Rework FP prepass analyzer to capture more information about bx2 expansion 2026-02-15 21:04:56 +03:00
kd-11 27fe5c6604 rsx: Fix input-side vs output-side remapping flags
- Sign bit and biased renorm apply on input, Gamma on output
2026-02-15 21:04:56 +03:00
Ani ed3d2a096c audio: Default buffering to 34ms 2026-02-15 15:19:32 +01:00
kd-11 49029c9b98 rsx: Handle 16-bit format remapping 2026-02-15 15:31:53 +03:00
kd-11 2f5a66581f rsx/fp: Fix biased renormalization without BX2 flag
- With biased renorm, a value of 0 gives a value slightly less than -1
- Biased renormalization does not have a "clamped" mode unlike sext
2026-02-15 15:31:53 +03:00
kd-11 3f321c61f3 rsx: Fix remapping behavior for depth textures (sampled as depth) 2026-02-15 15:31:53 +03:00
kd-11 765e72dcb7 rsx: Use 'format features' to drive BX2 texture sample remapping on the GPU
- Fixes problems with BX2 kicking in when it shouldn't
2026-02-15 15:31:53 +03:00
kd-11 d3cd3e9650 rsx: Remove value remapping shuffle 2026-02-15 15:31:53 +03:00
kd-11 e29832fa00 fixup [first commit] 2026-02-15 15:31:53 +03:00
kd-11 6b272ed563 rsx: Re-work value remapping capabilities to match real hardware
- Drop heurestics and use what real hardware is doing instead
2026-02-15 15:31:53 +03:00
kd-11 3df370a7e6 rsx: Value remapping can only happen to a texel lane once per sample
- Avoids double operation if for example BX2 and SNORM/SEXT are active concurrently
2026-02-15 15:31:53 +03:00
Ani dd490fc725 Update libpng to 1.6.55 2026-02-15 12:51:57 +01:00
Ani 1e63088b3e Update cubeb to 2026-01-22 2026-02-15 12:51:57 +01:00
Ani 8dfd7e126e Update glext to 2026.01.26 2026-02-15 12:51:57 +01:00
Ani 66c7dd1381 Update FAudio to 26.02 2026-02-15 12:51:57 +01:00
Ani 9290422fea Update 7zip to 26.00 2026-02-15 12:51:57 +01:00
Paul Plant 365b2939f6 Updated Fedora build dependencies list 2026-02-15 12:15:38 +01:00
Megamouse 97bbc2d419 Update yaml-cpp to 0.9.0 2026-02-15 11:19:02 +01:00
Marin Baron 06798ef729 [Build] Remove quotes protoc 2026-02-15 09:50:18 +01:00
Zion Nimchuk c6f5abe59f Update docker and ccache 2026-02-15 07:48:24 +01:00
RipleyTom 9f92824721 Fix glsl_invalid_program not fitting within 3 bits 2026-02-14 16:56:38 +02:00
RipleyTom 7f2dec46ca Ignore gcc strict aliasing warnings on __sync_lock_test_and_set 2026-02-14 16:56:38 +02:00
RipleyTom 236dc96689 Microphone fixes 2026-02-14 16:56:38 +02:00
Ani 7cfe96a1d1 macOS: Check for hw.optional.neon as fallback 2026-02-11 10:39:30 +01:00
Malcolm b2469039af ARM64: Detect some arm features and let LLVM know if they are or aren't present via attributes
- On x86, LLVM has robust detection for the CPU name. If a CPU like skylake has AVX disabled, it will fall back to something without AVX (nehalem)
- On ARM, detection is not as robust. For instance, on my snapdragon 8 gen 2, it assumes that we have SVE support, as the cortex-x3 supports SVE.
- If an ARM cpu is paired with other cpus from another generation which doesn't support the same instructions as the cortex-x3, or if the cortex-x3 just has SVE disabled for no apparant reason (in the case of the snapdragon 8 gen 2)
- We need to actually detect that ourselves.
- Beyond SVE also detect support for some instructions that might be useful SPU LLVM when optimized with intrinsics.
2026-02-11 08:19:59 +02:00
Megamouse 8f066541a3 Qt: adjust ansi colors based on background color 2026-02-09 23:22:45 +01:00
Megamouse 4c234dc744 Qt: Fix duplicate ansi highlighter creation
It is created in the slot when the action is toggled in LoadSettings
2026-02-09 23:22:45 +01:00
Megamouse 6a07c3f46d input: fix input guard button offsets for closing native overlays
L2, R1 and all hat buttons were incorrectly enforcing the
pad interception after closing a native dialog.
2026-02-09 21:51:46 +01:00
RipleyTom 3bb21db71b Guard async transactions against spurious wakeups 2026-02-09 07:59:29 +02:00
kd-11 aeaa62a28c rsx/sync: Do not allow short-circuiting behavior when releasing GCM labels via host queue 2026-02-08 17:46:15 +03:00
RipleyTom 93dbdead24 Improve add friend logging/dialogs 2026-02-06 08:33:23 +01:00
Malcolm 93fd33a19a ARM: Use ISB instead of yield in place of x86 pause
ISB isn't an exact match for pause, but it does slow down execution at least a litle.
Unfortunately, yield does nothing on machines without SMT (99% of aarch64 machines)
2026-02-06 07:54:44 +02:00
silviolet ebf9374ccd Fixed typos in rpcs3/System.cpp
- changed string containing a typo buyes -> bytes
- capitalized ps2/ps3 to PS2/PS3
2026-02-04 11:54:50 +02:00
Megamouse 43b2ce6577 MouseHandler: minor cleanup 2026-02-03 10:26:37 +01:00
Megamouse 7a6b34cac3 Update Qt to 6.10.2 2026-02-03 10:26:37 +01:00
Megamouse 98aaafe4a4 Update libpng to 1.6.54 2026-02-03 10:26:37 +01:00
Megamouse 294050986f Qt: allow to exclude strings in log viewer 2026-02-03 08:58:03 +01:00
Megamouse 3eb8fdaef4 Qt: simplify log level filtering in log viewer 2026-02-03 08:58:03 +01:00
Megamouse 622fe1ce47 Qt: don't filter log if the input dialog was canceled 2026-02-03 08:58:03 +01:00
trautamaki f1e679d981 Switch from FFmpeg av_opt_set_* to swr_alloc_set_opts2 (#18138)
ffmpeg 7 doesn't allow to set in_channel_count and out_channel_count anymore
2026-02-03 08:00:48 +01:00
Megamouse 8ba48932d3 Qt: try to fix update downloader 2026-02-03 07:13:03 +01:00
kd-11 55aae4dd40 vk: Fix NVIDIA crash when resizing the game window quickly 2026-02-02 21:21:50 +03:00
kd-11 ad90f8b44b rsx: Conservative MM flush during CPU handling of nv3089_image_in 2026-02-02 16:16:24 +03:00
Windsurf7 588cf69dad Add mouse-based gyro emulation (#18113)
This change adds a hardcoded mouse-based motion sensor emulation
feature, inspired by how Cemu handles mouse-driven gyro input.

While the game window is focused, holding the right mouse button enables
gyro emulation:
- Mouse X movement feeds Motion X
- Mouse Y movement feeds Motion Z
- Mouse Wheel feeds Motion Y

The axis mapping and behavior were tested with the "Spark Runner"
minigame in _Sly Cooper: Thieves in Time_ and _Bentley's Hackpack_.
In accordance with this minigame, a top-down view motion control scheme
relies on the X/Z axes.

While the right mouse button is being held, mouse deltas are captured
via the Qt native event filter and accumulated in the frontend, then
consumed by the pad thread.
On right mouse button release, motion values are reset to the neutral
center to avoid residual drift.

This input path is intentionally independent of pad configuration and
works even when a keyboard-only profile is selected.

This implementation thus resolves issue #13883 by allowing motion-only
gameplay without requiring a physical motion-capable controller.
2026-02-02 09:21:02 +01:00
RipleyTom 1c08439907 Force disable RPCN IPv6 support for now 2026-01-31 08:46:11 +02:00
RipleyTom 96cf5c4e63 Fix generic_async_transaction_context thread handling 2026-01-31 08:46:11 +02:00
RipleyTom db3d9cd217 Implement sceNpMatching2GetRoomMemberDataExternalList 2026-01-30 13:56:29 +01:00
RipleyTom 3e0cfc651d Fix sceNpBasicLimited_0xEB42E2E6 2026-01-30 10:45:55 +02:00
RipleyTom 4df51025e5 Improve Message ComId handling 2026-01-30 10:45:55 +02:00
RipleyTom 97feb4eed4 Add Message logging 2026-01-30 10:45:55 +02:00
Tuna Celik 086ab3cb37 Fix for an emulation shutdown hang 2026-01-29 23:25:56 +02:00
Ani b7311bd6db hle: Register missing functions 2026-01-29 09:13:22 +02:00
RipleyTom b0b0ed7634 Implement sceNpMatching2GetCbQueueInfo 2026-01-28 22:33:35 +01:00
RipleyTom cafc2aa9d0 Implement sceNpMatching2GetMemoryInfo 2026-01-28 22:33:35 +01:00
RipleyTom 8f8032b5a8 Implement sceNpMatching2GetSignalingOptParamLocal 2026-01-28 22:33:35 +01:00
RipleyTom 0e2584fc9f sceNpBasicLimitedSendMessage 2026-01-27 17:21:46 +02:00
kd-11 818b11fd2f Revert adrenalin crash workaround 2026-01-26 15:34:46 +01:00
kd-11 0ee3e24b25 vk: Drain the pending frame queue before resizing the swapchain 2026-01-26 02:59:31 +01:00
kd-11 fb420d5989 vk: Fix flood of VVL synchronization violations appearing when capturing media 2026-01-26 02:59:31 +01:00
kd-11 9b09fba811 vk: Prevent WAW hazard when the window size exceeds the output draw box 2026-01-26 02:59:31 +01:00
kd-11 33d79ee2cd vk: Fix CPU frame misalignment bug
- This one has been around for a really long time.
- The frame-based structure was due to translating the original vulkan tutorial to working code.
- While it is not feasible to throw the arch away, we don't need a rigid 2-frame set for acquire-submit semaphores.
2026-01-26 02:59:31 +01:00
kd-11 a907cc838b vk: Always specify LATE_FRAGMENT_TESTS and EARLY_FRAGMENT_TESTS together when declaring barriers
- The combination of access patterns can go either way, do not assume early testing to always take place.
2026-01-26 02:59:31 +01:00
kd-11 29cb4f59bd vk: Invalidate renderpass key in post-cyclic-z barrier
- Post-Z renderpass split is crucial due to loss of writes. The failure to invalidate the renderpass key was an oversight.
2026-01-26 02:59:31 +01:00
kd-11 9dfaca4cd8 vk: Fix WAW hazard when preparing copy commands for texture uploads using scratch 2026-01-26 02:59:31 +01:00
kd-11 318385787a vk: Force strict query scopes quirk if SRM is enabled 2026-01-26 02:59:31 +01:00
kd-11 11464f0793 vk: Tighten image barriers to account for IMAGE_OP_LOAD operation when starting a renderpass 2026-01-26 02:59:31 +01:00
kd-11 11087a973c vk: Set debug names for image views
- Crucial for debugging hangs and crashes as well as VVL output
2026-01-26 02:59:31 +01:00
kd-11 2e4a187145 vk: Persist debug name in the image wrapper to aid in debugging 2026-01-26 02:59:31 +01:00
Megamouse d854ff03fe Qt: allow to disable logging to the log frame while it is hidden 2026-01-25 11:42:16 +01:00
Florin9doi f883718b23 USB: Complete Summonride figures
- Support the last 3 riders discovered by @RipleyTom
- Simplify the creator dialog
2026-01-25 03:02:23 +01:00
kd-11 b9f5d85d16 rsx: Lower harmless errors to warnings 2026-01-25 01:31:58 +03:00
kd-11 131eee2eed rsx: Fix convolution filter decoding 2026-01-25 01:31:58 +03:00
kd-11 590a0bbcad vk: Include GCM format in debug name for temp texture-cache resources 2026-01-25 01:31:58 +03:00
kd-11 ae8e28282c rsx/zcull: Fix silly copypasta
- Find+Replace bug
2026-01-25 01:31:58 +03:00
Megamouse 1e0909c579 CI: download dependency if the filename is the same but the checksum changed 2026-01-24 21:23:26 +01:00
schm1dtmac fbd5bbcfa3 Address review comments 2026-01-24 20:18:25 +01:00
schm1dtmac 7a12e80666 [macOS] Specify plist version 2026-01-24 20:18:25 +01:00
schm1dtmac a646a66ead [macOS] Fix release naming 2026-01-24 20:18:25 +01:00
Daniel López Guimaraes b41c2754ce cellVdec: Remove resolved TODOs 2026-01-24 19:31:39 +01:00
Daniel López Guimaraes 4b07ac4f27 cellVdec: Document all supported codecs
These are all the codecs that the PS3 can handle. There are some numbers
skipped on the codecs enum, but this is intentional: there isn't a codec
assigned to those.
2026-01-24 19:31:39 +01:00
Daniel López Guimaraes f70b5e0c1c cellVdec: Add support for all MPEG4 profile levels
The names are based from the maximum resolution that the PS3 supports
and the levels that are listed on the MPEG-4 Part 2 Wikipedia.

The PS3 uses a separate decoder for MPEG4 instead of DivX, so the
handling on cellVdecGetPicItem should probably be separate too. However,
research needs to be done on that side and things seem to be working
with what we currently have.
2026-01-24 19:31:39 +01:00
Skiski ef9ff09e17 change velocity for RB3 pro guitar when it stays the same twice in a row (#18064)
There is a bug when you play twice in a row with the same velocity on a
string. The second note is not taken into account as the game does not
notice any change in the velocity.

It is because the velocity is never reset (or at least not very often).
The idea is to check if the velocity of the string is the same as the
previous one. And if it is, we just flip the last bit. Since the
accepted values goes from 6 to 127, from what I've seen, it should be
ok.

I don't have an official RB3 pro guitar, but I have a YouRock Guitar
that is compatible and works perfectly with a real MPA. When I use midi
in rpcs3, I miss notes because of that bug. I've add a log message to
test the patch and in a streak of nearly 150 notes, I should have missed
nearly 20 notes. I had absolutely no missed note with thanks to the
patch.

fixes https://github.com/RPCS3/rpcs3/issues/18062

---------

Co-authored-by: Romain Janvier <romain.janvier@ac-grenoble.fr>
2026-01-24 18:35:00 +01:00
Rosalie Wanders a5f570996f Qt: change UI labels based on device product type 2026-01-24 15:18:07 +01:00
RipleyTom aec981935c Migration bugfixes 2026-01-24 14:23:52 +01:00
RipleyTom 27ebd182e7 Flatbuffers to Protobuf (#18082)
Migrate from Flatbuffers to Protobuf to make some lawyers happy.

Fixes https://github.com/RPCS3/rpcs3/issues/17894
2026-01-24 09:37:47 +01:00
Florin9doi 3e49c32c9c USB: Summonride updates 2026-01-20 21:07:53 +02:00
qurious-pixel d91c11deb0 Define source encoding for iconv 2026-01-20 18:41:19 +01:00
qurious-pixel 2ef8dce8cf Explicitly install iconv 2026-01-20 18:41:19 +01:00
Malcolm 0f85e9123e utils: Scale busy_wait according to arm timer frequency
> - This is a fatal issue that was impacting arm builds, since busy_waits were written assuming an approx 3Ghz x86 machine
> and most arm machines have a hardware timer that runs south of 100mhz, meaning the top items in the profiler were calls to busy_wait();
> all over the code. Fixing this is a very significant speedup, on my snapdragon 8 gen 2 device. 27->37FPS in Metal Gear Rising, but almost
> all games benefit when run on ARM.
2026-01-17 10:07:01 +02:00
Malcolm 760c35eec8 PPU LLVM: Use arm fmax/fmin for vmaxfp/vminfp
- Arm fmax/fmin match altivec behaviour regarding nan behaviour
2026-01-17 09:20:13 +02:00
Malcolm eaebd3426e LLVM: enable FMA for ARM cpus unconditionally
- All armv8 machines should have FMA.
- Should be a speedup for snapdragon elite and apple machines.
2026-01-15 08:29:33 +02:00
Daniel López Guimaraes d7b723cd7c cellVdec: Add MPEG4 profile 3
This profile is used in SingStar recordings while in a song on some
versions.
2026-01-14 03:49:53 +01:00
qurious-pixel 1591b7f5a6 Prepend _win64_ 2026-01-14 03:22:17 +01:00
qurious-pixel 7090f16ff3 Prepend win64 on all Windows artifacts 2026-01-14 03:22:17 +01:00
Megamouse a0f2f006b1 Qt: just remove the entire .app dir on macOs 2026-01-13 23:51:57 +01:00
Megamouse 72851d7d44 VS: Fix ISO filters 2026-01-13 23:51:57 +01:00
Megamouse caaee9b7cc Qt: remove all shortcut files if requested 2026-01-13 23:51:57 +01:00
qurious-pixel d656420cc4 Export AVVER for Release Title name 2026-01-13 21:26:14 +01:00
Elad df72f4abed rsx: Fixup get_address() after #18038 2026-01-13 16:14:49 +02:00
Elad 960e2a9ed8 rsx: Make get_address(MAIN) more strict 2026-01-13 15:28:07 +02:00
Elad 57f162c3c4 rsx/nv3089: Fix wrong suggestion 2026-01-13 15:28:07 +02:00
Elad 2d42a4e25b rsx/gcm: Do not rely on GCM IOMAP table in HLE gcmIoOffsetToAddress 2026-01-13 15:28:07 +02:00
Elad 8f8d468774 rsx/gcm: Fix cellGcmGetTimeStampLocation 2026-01-13 10:53:42 +02:00
RipleyTom 4a12f70f2c Add Delete command to RPCN 2026-01-12 21:33:04 +01:00
Zion Nimchuk ee1886fad9 Fix windows aarch64 deploy 2026-01-12 18:48:49 +01:00
Valters 5fd6d413d7 Add async suffix to TODO sceNpLookupUserProfileAsync 2026-01-12 18:15:37 +01:00
Megamouse ec7f666c6b Loader: Fix graceful Emu Restart
This wasn't working because GracefulShutdown was guarding the boot
2026-01-12 15:45:27 +01:00
Megamouse d5bf11703d Qt: Restart game even if there's no savestate when using the restart shortcut 2026-01-12 15:45:27 +01:00
Megamouse cf94be2aac ISO: reset m_path to original path during Restart 2026-01-12 15:45:27 +01:00
Elad 100a402cd8 rsx/nv3089: Fix image_in source line length estimation 2026-01-12 15:33:41 +02:00
kd-11 86b559ab52 rsx/zcull: Stop any running when the clear command is processed 2026-01-12 14:24:05 +03:00
kd-11 c199a96dac rsx/zcull: Rename write_enabled to surface_active to make the meaning clear 2026-01-12 14:24:05 +03:00
kd-11 f45742df52 gcm: Implement cellGcmGetTimeStampLocation as HLE to improve timestamp reports detection
- Timestamp reports don't need host GPU access and are much faster to emulate
2026-01-12 14:24:05 +03:00
kd-11 578d30d3ae rsx: Fix context_dma enum naming 2026-01-12 14:24:05 +03:00
kd-11 a6321caaa2 rsx: Remove surface management hack breaking savestate capture 2026-01-12 14:24:05 +03:00
Zion Nimchuk 4842339f9e Setup to deploy aarch64 binaries 2026-01-12 10:58:16 +01:00
Florin9doi aa220d24e8 Fixed more SingStar previews 2026-01-11 22:14:36 +01:00
Florin9doi d9edf98d55 USB: Usbd support for microphones 2026-01-11 22:14:36 +01:00
Megamouse cf6aaaa74f VS: update googletest package
This fixes building the test project in VS 2026
2026-01-11 19:23:11 +01:00
Megamouse 25b412a90f cellVdec: impove error logging 2026-01-11 18:49:25 +01:00
Florin9doi d584575984 Fixed more SingStar previews, this time for v05.00 2026-01-11 17:36:38 +01:00
Live session user 7e9e0f56fb Windows ARM build 2026-01-11 16:53:16 +01:00
Elad 8188c45b9d Cut sceNpDrmIsAvailable sleep time 2026-01-11 17:03:41 +02:00
Elad 1f731afbd9 sys_fs: Add PPU sleep 2026-01-11 17:03:41 +02:00
Florin9doi 9781690918 Fixed SingStar previews 2026-01-11 14:26:04 +02:00
Megamouse cd6dfc82a2 cellVdec: also use ctx->framerate to calculate the timestamps
ffmpeg 7 doesn't seem to guess the time_base parameter anymore
2026-01-10 19:17:32 +01:00
Megamouse ae6bdf84f1 Update ffmpeg to 7.1.2 2026-01-10 19:17:32 +01:00
Megamouse ad65878c0c gl: fix some cppcheck issues 2026-01-10 19:17:32 +01:00
zeph 50fcee6fe0 UI: ANSI colors, code fix suggestion
Co-authored-by: Megamouse <studienricky89@googlemail.com>
2026-01-10 17:22:54 +01:00
zeph 4431f6b3d9 UI: ANSI TTY colors, fix git submodule versions and correct include 2026-01-10 17:22:54 +01:00
zeph 84ddcea45a UI: ANSI colors, more explicit erase check 2026-01-10 17:22:54 +01:00
zeph 6eeca69c56 UI: ANSI colors, further fix-ups 2026-01-10 17:22:54 +01:00
zeph 484d97caf1 UI: colored ANSI logs fix-ups 2026-01-10 17:22:54 +01:00
zeph b2768bbd61 UI: colored ANSI logs 2026-01-10 17:22:54 +01:00
Megamouse 9faf9a6145 ISO: optimize byteswap and utf16 string conversion 2026-01-10 15:22:41 +01:00
Megamouse 36bce33684 ISO: use string_view in retrieve 2026-01-10 15:22:41 +01:00
Megamouse f712de0c91 ISO: Remove psf hack 2026-01-10 15:22:41 +01:00
Megamouse a8624682a7 ISO: add some logging 2026-01-10 12:14:09 +01:00
Megamouse 4dc994833d Qt: fix shortcut creation for ISO 2026-01-10 12:14:09 +01:00
Megamouse 98e64d7821 Qt: fix appicon for ISO 2026-01-10 12:14:09 +01:00
Megamouse 6bd4f52173 Qt: Allow to boot iso files from menu 2026-01-10 12:14:09 +01:00
Megamouse 41a5c69db4 Qt: Allow to add iso files from menu 2026-01-10 12:14:09 +01:00
Megamouse f2afdee40c Qt: fix missing mice menu 2026-01-10 12:14:09 +01:00
Megamouse 19129eddd7 Qt: ISO clean up
Should fix some potential Qt bugs as well
2026-01-10 06:36:58 +01:00
Megamouse be77083a2b Qt: some cleanup 2026-01-10 06:36:58 +01:00
Functionable 49bcc93072 ISO: Move load_icon 2026-01-09 14:40:51 +02:00
Functionable a53f2fc7b9 ISO: Fix save states in games with multiple executables
- Some games will load into a different executable from EBOOT.BIN, and
attempting to restore those games from savestate causes the game to
crash immediately.
- This commit repurposes the disc_info field in a savestate generated
from an ISO game to store the running game executable at the time of the
save state.
2026-01-09 14:40:51 +02:00
Functionable f4dffd985b ISO: Fix argv[0] being set to a garbage value
- Due to GetCallbacks().resolve_path behaviour being reverted in a prior
commit, resolved_path will not have the path to the game executable.
This causes issues when setting argv[0] to the game executable path and
apparently breaks some games which may rely on this value.
2026-01-09 14:40:51 +02:00
Functionable 59a1f81e86 ISO: Game loading fixes
- After undoing the changes to do with resolve_path, loading game
updates was broken. This required the condition to be changed to check
for launching_from_disc_archive.
- When attempting to load an update for an ISO game,
inherited_ps3_game_path needs to be set otherwise launching the updated
game will fail.
- An additional check was added to ensure that the inherited vitual game
directory isn't saved as the game path in games.yml.
- Fixed attempting to load an updated ISO game by launching its updated
executable, which can happen when loading a savestate for a game with
updates, the emulator would crash before.
- Unload ISO file when Load() fails, otherwise ISO loading might be
stuck in a broken state.
2026-01-09 14:40:51 +02:00
Functionable a2d76aedaa ISO: Fix recent actions created when launching ISO games 2026-01-09 14:40:51 +02:00
Functionable 59f9a7c080 ISO: Use clearer code to set game.icon_in_archive
- Suggested change from PR review
2026-01-09 14:40:51 +02:00
Functionable 714359b544 ISO: Move icon loading to a common function in qt_utils.h 2026-01-09 14:40:51 +02:00
Functionable bc1d0b9e65 ISO: Move game size assignment to size_calc_func in game_list_table.cpp 2026-01-09 14:40:51 +02:00
Functionable 407cbf9690 ISO: Add ISO games through Emulator::AddGamesFromDir
- When dragging and dropping ISO files, they will be treated the same as
game directories currently are and added to the game list rather than
immediately being opened.
2026-01-09 14:40:51 +02:00
Functionable 4cd75971f0 ISO: Move code to load psf::registry into iso_archive
- Multiple places end up needing to retrieve a psf::registry from an is
o archive.
- Added a safety check along with this
2026-01-09 14:40:51 +02:00
Functionable 38daf8d325 ISO: Add empty path check to iso_archive::retrieve 2026-01-09 14:40:51 +02:00
Functionable 095f433f8e ISO: Fix loading games in continuous mode
Some games will load into another game and continuous mode will be set.
Currently, if this happens the ISO will get unloaded in the shutdown
function. This commit adds an additional check before calling the unload
function to fix this.
2026-01-09 14:40:51 +02:00
Functionable fa11af1cba ISO: Remove resolve_path hack
- Modify Emulator::GetFakeCat to return "DG" for mounted ISO games like
expected.
- Undo changes to main_application resolve_path callback
2026-01-09 14:40:51 +02:00
Functionable 48f39acac7 ISO: Unload the iso_device on shutdown 2026-01-09 14:40:51 +02:00
Functionable 257043529a ISO: Loader improvements
- Don't use floating point when advancing sectors
- Remove redudndant seek in iso_archive constructor
- Drop error code checks in iso_file::read_at
- Don't use lexically_normal for handling path in iso_archive::retrieve.
More complete directory search implementation.
2026-01-09 14:40:51 +02:00
Functionable 2533aa02d0 ISO: Don't access m_game_info from icon_load_func 2026-01-09 14:40:51 +02:00
Functionable 27510f5fa8 ISO: Move game image loading to game_list_base::IconLoadFunction 2026-01-09 14:40:51 +02:00
Functionable acdb0ee729 ISO: Small clean up
Cleaning up old comments and fixing small mistakes in ISO.cpp
2026-01-09 14:40:51 +02:00
Functionable 673cc040fa ISO: Add UI support
Adds ISO file type to load dialog and allows launching ISO games via
drag and drop.
2026-01-09 14:40:51 +02:00
Functionable eff25ed0aa ISO: Fix game movie icons 2026-01-09 14:40:51 +02:00
Functionable ab45b1bf61 ISO: Fix icons in savestate_manager_dialog 2026-01-09 14:40:51 +02:00
Functionable 1d2f6404c6 ISO: Fix for save states 2026-01-09 14:40:51 +02:00
Functionable d6d7ae35f8 ISO: Add games to games list 2026-01-09 14:40:51 +02:00
Functionable 990e002782 ISO: Modify game boot for ISOs
This commit modifies code in System.cpp to allow games to boot from ISO
images. Game data is loaded by leveraging fs::set_virtual_device, and
setting the m_path to the ISO device location.

This commit also modifies the resolve_path callback to return the path
it was given if it wasn't found in the OS. This is necessary as
Emulator::GetFakeCat will return "HG" on disc games, making games
unplayable through ISO.
2026-01-09 14:40:51 +02:00
Functionable 6c083d6184 ISO: Add ISO reader code and ISO device
Adds infrastructure to read files/data from ISOs.

Also adds classes extending fs::device_base and fs::file_base in order
to allow reading files through fs namespace functions. This approach
should allow ISO data to be read by the emulator with the least changes
to existing code.
2026-01-09 14:40:51 +02:00
Megamouse ef5a4bf7e4 Qt/input: fix pressure intensity button availability 2026-01-08 14:33:37 +01:00
kd-11 c22d2b51bb gl: Do not overwrite texture-cache image dimensions when updating format
- The code was an outdated relic from the early days. The calculated pitch was wrong as it did not take subregions (incomplete rows) into account.
2026-01-08 14:31:44 +03:00
Megamouse 72a19a87b6 Qt: Add mulit selection to game grid 2026-01-08 07:45:04 +01:00
Megamouse 1bfd1154f5 Update FAudio to 26.01 2026-01-07 19:12:04 +01:00
Megamouse 0bd6aee8c8 Update SDL to 3.4.0 2026-01-07 19:12:04 +01:00
qurious-pixel e3a938fb76 Embed qt.conf in RPCS3 binary 2026-01-07 09:58:06 +01:00
qurious-pixel db89f55ca1 Add Qt translations to Windows Clang 2026-01-07 09:58:06 +01:00
Antonino Di Guardo 27033ee0cb move disk usage dialog box to game list's context menu (#17977) 2026-01-07 08:22:40 +01:00
Megamouse 90df8baa5f Qt: Fix game list multi-selection after Refresh 2026-01-06 17:09:39 +01:00
Megamouse 1eb0b2260d Refactor game_list_frame 2026-01-06 16:22:07 +01:00
digant73 9fb7c8f52c Add multi-selection context menu
fix compile errors on Mac and provide reviewed changes

fix wrong resolved conflict

removed duplicate

cleanup after latest merged PRs

minor cleanup

rename and move get_existing_dir() to File.cpp

apply reviewed changes
2026-01-06 09:47:15 +01:00
Florin9doi 9b256d71a9 USB: Fixed G27 crash during reinitialization 2026-01-05 21:00:37 +01:00
Megamouse 8f26c01ae5 Qt: try to fix drag and drop issues 2026-01-05 20:14:55 +01:00
Megamouse 113679ead8 Update SDL to 3.2.30 2026-01-05 18:13:25 +01:00
Megamouse c2b93317ad Revert "Update SDL to 3.4.0"
This reverts commit cfbc416521.
2026-01-05 18:13:25 +01:00
schm1dtmac a0e0a6c6a6 [macOS Updater] Cleanup remnants of the old app bundle post-update 2026-01-04 19:11:37 +01:00
kd-11 cc37a40f40 rsx/fp: Harden the FP decompiler a bit when bogus inputs are passed in. 2026-01-04 15:05:52 +03:00
schm1dtmac aab40bd269 Try and cut down unnecessary Qt translations 2026-01-04 09:46:49 +01:00
schm1dtmac 44bd0568e7 Unify Mac CI action 2026-01-04 09:46:49 +01:00
schm1dtmac c83769e79e Unify & cleanup Mac deploy script 2026-01-04 09:46:49 +01:00
schm1dtmac e65755d68d Unify & optimise Mac build script 2026-01-04 09:46:49 +01:00
Megamouse 643d1102cc Add SDL camera handler 2026-01-03 14:40:02 +01:00
Megamouse ea6bb77d57 Qt: Fix image dimensions passed to camera_video_sink::present 2026-01-03 02:27:54 +01:00
Megamouse 050d2d3b2f macOs: Deploy Qt translations 2026-01-03 00:28:41 +01:00
Megamouse 8d55db334e Qt: deploy and apply Qt translations 2026-01-01 19:17:13 +01:00
kd-11 ee06dccdea vk: Disable VK_EXT_attachment_feedback_loop_layout support for adrenalin driver 2026-01-01 13:36:31 +02:00
qurious-pixel 8d7484df89 [BSD] Use FreeBSD 14.3 vm
Fixes runner stopping when running out of disk space.
2026-01-01 10:50:19 +02:00
Megamouse ae72de3881 Refactor camera code to support different camera handlers
I split this off the sdl camera PR due to rebase conflicts.
It can also be seen as a partial integration test.
2026-01-01 08:54:57 +01:00
Megamouse cfbc416521 Update SDL to 3.4.0 2026-01-01 06:51:46 +01:00
Megamouse 05ae739a22 Update OpenAl to 1.25.0 2026-01-01 06:51:46 +01:00
Megamouse f50b9cd5c4 Update libpng to 1.6.53 2026-01-01 06:51:46 +01:00
AniLeo c5511200d5 rpcs3_version: Bump to 0.0.39 2025-12-31 23:53:44 +01:00
Florin9doi 51fd4b2f76 USB: Added support for G27 compatibility modes
- Driving Force EX
- Driving Force Pro
- Driving Force GT
- G25
2025-12-31 21:25:37 +00:00
Niram7777 2f94891c23 Build Freebsd update LLVM dev (22)
Fix the CI by using the correct compiler version
https://wiki.freebsd.org/HardcodedCCVersions
2025-12-31 20:17:40 +00:00
Antonino Di Guardo f535c82a3f Improve Utilities and Log menus (#17944) 2025-12-31 16:44:11 +01:00
digant73 d929596b0f improve menus 2025-12-30 14:48:09 +01:00
Megamouse 4feb876b7f cellPhotoImport: Try to create unique filenames 2025-12-30 10:26:13 +01:00
Megamouse 953e31cbe8 Adjust media list dialog for larger folder depth
Use shared_ptr to fix crashes when navigating deeper folders
2025-12-30 10:26:13 +01:00
Megamouse 953f9f7e01 cellPhotoExport: Use roughly same path as cellScreenShot 2025-12-30 10:26:13 +01:00
Megamouse d85b9d0cd1 cellScreenshot: escape photo_title in path 2025-12-30 10:26:13 +01:00
Megamouse 9810d24ebb cellScreenshot: update filenames 2025-12-30 10:26:13 +01:00
RipleyTom 65273dde76 Remove call to glxewInit 2025-12-29 15:29:34 +02:00
Ninetime 2579ddf996 RPCN menu changes (#17936)
- Adds a shortcut for RPCN to the toolbar

- Adds a link for the Network tab to the Configuration menu
2025-12-29 07:12:21 +02:00
Megamouse 01fe12483f Qt: remove unused NotifyBatchedGameActionFinished signal 2025-12-27 22:00:12 +01:00
Megamouse bba1cf4b6e Qt: ask user for install options before starting the installation 2025-12-27 22:00:12 +01:00
Megamouse 92f56215d0 Qt: Allow user to precompile caches on demand when installing packages or adding disc games 2025-12-27 22:00:12 +01:00
kd-11 f5be489d9f rsx: Improve framebuffer layout change detection 2025-12-27 22:54:27 +03:00
kd-11 316aa44d3e vk: Fix crash when shuffling between cyclic and non-cyclic Z-buffer in one logical pass 2025-12-27 22:54:27 +03:00
kd-11 e586986845 rsx/gl: Clear cyclic Z barrier flag
- OpenGL doesn't care about this but we clear it anyway to indicate it is no longer pending.
2025-12-27 22:54:27 +03:00
kd-11 ba673d1407 rsx/vk: Add post-cyclic-z barriers allowing us to keep early Z optimizations 2025-12-27 22:54:27 +03:00
kd-11 fd3ecea21e rsx: Improve early-Z disablement mechanism 2025-12-27 22:54:27 +03:00
kd-11 5a809c5f72 rsx/fp: Stop using m_ctrl and use the correct object from m_prog 2025-12-27 22:54:27 +03:00
kd-11 441e7e0485 rsx: Disable early-Z optimizations if a loopback on the depth texture is active
- The optimizations worked a bit too well and allowed early-Z to kick in.
- Early Z inverts the logic making reads happen after writes and breaking loopback sampling.
2025-12-27 22:54:27 +03:00
kd-11 5baf8aeb22 vk/fp: Only emit alpha-testing variables when required 2025-12-27 22:54:27 +03:00
kd-11 bd1a25698c rsx: Fix alpha testing
- We no longer reload fragment state when toggling alpha-test. Instead, a different shader variant is picked.
2025-12-27 22:54:27 +03:00
kd-11 307dac479c rsx: Fix texcoord clamp regression 2025-12-27 22:54:27 +03:00
kd-11 0e9c877b83 rsx: Drop pointless ROP control bit check 2025-12-27 22:54:27 +03:00
kd-11 6e0b5a874d rxs: Improve alpha-to-coverage emulation 2025-12-27 22:54:27 +03:00
kd-11 da21b10144 rsx: Propagate state changes to trigger permutation lookup
- Alpha test
- MSAA (for CSAA enable flag)
- Polygon stipple
2025-12-27 22:54:27 +03:00
kd-11 69cdded5ba rsx: Fix sRGB control flag propagation to shader control
- Also clean up the texturing code and fix some memcpy overflow bugs.
2025-12-27 22:54:27 +03:00
kd-11 8030b01064 rsx: Propagate shader kill flag and refactor texture flags processing a bit 2025-12-27 22:54:27 +03:00
kd-11 1a733353de rsx: Fix MSAA sampling operations 2025-12-27 22:54:27 +03:00
kd-11 20dcfa5c8a rsx: Move heavy codegen capabilities to permutation flags from runtime checks 2025-12-27 22:54:27 +03:00
kd-11 3cb3f6972e vk: Hoist texture param loads 2025-12-27 22:54:27 +03:00
kd-11 215880cd1a rsx/vk/gl: Make texture parameter reads backend-dependent
- Allows optimizations and improvements per-backend
2025-12-27 22:54:27 +03:00
kd-11 308adca206 rsx/fp: Stop referencing wpos when the value is just getting discarded. 2025-12-27 22:54:27 +03:00
kd-11 5e4c2433c1 vk/gl: Mark unused FP outputs as unused 2025-12-27 22:54:27 +03:00
Florin9doi 0536ad3b23 USB: Fix an incorrect log 2025-12-27 20:40:28 +01:00
Florin9doi bdcde24e28 USB: Remove a duplicate PSP entry 2025-12-27 20:40:28 +01:00
Florin9doi 80d7db520b USB: Remove unused method 2025-12-27 20:40:28 +01:00
Florin9doi eafe0f76cf USB: Update Kamen Rider Summonride virtual portal
- Increase ack time for interrupt packets
- Add missing HID Descriptor Node
2025-12-27 20:40:28 +01:00
Florin9doi ce0a6da88e Docs: Update clone instructions 2025-12-27 20:40:28 +01:00
Megamouse fdbf25076e Fix lld warning LNK4286 2025-12-27 20:04:43 +01:00
oltolm 0ce686b1f1 fix lld warning LNK4217 2025-12-27 18:40:01 +01:00
Antonino Di Guardo 908c616783 Improve Manage menu (#17919) 2025-12-27 17:54:03 +01:00
Megamouse 739c178aac Qt/cheats: don't accept imported cheats unless valid 2025-12-27 17:18:44 +01:00
schm1dtmac 77aa5d4bbf [macOS] Don’t compile in GL-related code or link GLEW
This seems sensible enough since macOS’s archaic, deprecated OpenGL
implementation isn’t supported by RPCS3 anyways. Also fixes some CI
fails caused by GLEW as a consequence.
2025-12-24 21:21:57 +02:00
RipleyTom 847a147002 Improve usb timing accuracy 2025-12-24 04:44:47 +02:00
RipleyTom df6a3d01df Clean UsbTransfer state 2025-12-24 04:44:47 +02:00
Megamouse f81a5a5cb1 sceNpClans: cleanup 2025-12-23 13:26:34 +01:00
Megamouse 2fb697322f overlays: log font lookup info on exception (#17903)
- Logs the font lookup dirs and the target fonts when no font was found
in the native overlay
2025-12-21 14:00:36 +01:00
zeph 73bcabf7d5 Clans: fix graphical bug displaying JID instead of username (#17906)
This PR fixes a visual bug with the Clans system, incorrectly converting
the `jid` to a user's NPID, instead of using their username.

Variable names should now be a bit clearer and avoid similar issues in
the future.

---------

Signed-off-by: zeph <zephyrzefa15@gmail.com>
2025-12-21 13:11:33 +01:00
schm1dtmac 3819b9d57e [macOS] Force max pthread priority, fix throttling 2025-12-21 07:18:43 +02:00
zeph f946054a37 Clans: Emulator and server implementation (#17835)
This PR implements the Sony Clans subsystem for the RPCS3 emulator.

Used in:
- PlayStation Home [NPIA00005]
- ?

Addresses and closes
[#16464](https://github.com/RPCS3/rpcs3/issues/16464).

---

The source code for the server is available
[here](https://github.com/ZephyrCodesStuff/clans-rs) and is licensed
AGPLv3.
- It's written in Rust, with my best efforts in readability and
documentation.
- Every feature not-pertaining to RPCS3 has been feature-gated at
compile-time.
- Fully Dockerized deployment
- Ticket signature verification

NOTE: The server is fully compatible with the PS3 console as well, as it
follows the PS3 Clans Library specification.

---

The emulator code tries its best to follow on the steps of the RPCN
client code wherever possible; both in the Client as well as the
Settings and Config components.

Features:

- Clans client implementation in `clans_client.[h,cpp]`
- Syscalls implementation in `sceNpClans.[h,cpp]`
- A couple of missing structs and/or enum members have been added in
`sceNp.h`
- Qt GUI for selecting the desired Clans server to use (default: [HTTPS]
`clans.rpcs3.net`)
  - Implemented in `clans_settings_dialog.[h,cpp]`
  - Prevents modifying during emulator usage
- `clans.yml` config file for persistence
  - Implemented in `clans_config.[h,cpp]`

---------

Signed-off-by: zeph <35661622+ZephyrCodesStuff@users.noreply.github.com>
Signed-off-by: zeph <zephyrzefa15@gmail.com>
2025-12-20 16:43:17 +01:00
schm1dtmac 6546cf9e3a [macOS] General cleanup/fixups 2025-12-20 07:35:36 +01:00
Niram7777 cbecb91b94 Build 3rdparty/soundtouch include as system 2025-12-19 13:40:04 +00:00
Niram7777 8c9d266284 Build LLVM wrap getFirstNonPHI by version 2025-12-19 13:40:04 +00:00
Niram7777 a65eb3eb30 Build LLVM wrap getDeclaration by version 2025-12-19 13:40:04 +00:00
Marin Baron c9725b79fc Build 3rdparty include as system 2025-12-19 13:40:04 +00:00
Marin Baron 78690282eb Build LLVM some API dont support iterator so use pointer 2025-12-19 13:40:04 +00:00
Marin Baron 46db5c35eb Build LLVM deprecated getFirstNonPHI 2025-12-19 13:40:04 +00:00
Marin Baron 752155d5dd Build LLVM-22 fix removed getDeclaration 2025-12-19 13:40:04 +00:00
RipleyTom 371af2d94f Refuse to abort sceNp2 requests that change state 2025-12-19 12:06:02 +01:00
RipleyTom b99bd12d5e Add Extra sceNp2 logging 2025-12-19 12:06:02 +01:00
schm1dtmac 5507078bd8 [macOS] Use native os_sync calls for futexes 2025-12-17 21:21:59 +02:00
Elad ddfa773675 sys_fs: Optimize split files handling 2025-12-17 12:39:37 +02:00
Ani 36af9f54d3 Revert "SPU/config: Make SPU LLVM Mega block size default"
This reverts commit 4a042ae84f.
2025-12-17 07:03:15 +00:00
schm1dtmac 1147f47a8a Switch macOS atomics to futexes, bump min ver to 14.4
Co-authored-by: elad335 <18193363+elad335@users.noreply.github.com>
2025-12-17 00:38:38 +00:00
kd-11 03a91aa052 rsx/cfg: Increase valid register file size to 768 bytes per pixel pipe 2025-12-17 00:05:22 +00:00
Elad e0cdafddb5 SPU Analyzer: Fix missing jump table entries in Mega mode 2025-12-16 23:20:37 +00:00
schm1dtmac 4c7d19fc69 [macOS] Update to MVK 1.4.1 with private API support (fixes panics, improves feature support) 2025-12-16 22:50:40 +00:00
Ani 061fb5d112 Revert "Fix hypervisor context memory placement"
This reverts commit b1089ab1a3.
2025-12-16 21:54:21 +00:00
kd-11 b1089ab1a3 Fix hypervisor context memory placement 2025-12-16 16:31:56 +02:00
Elad 812d84e7f4 Util/sync.h: Fix iterator invalidation in futex emulation 2025-12-16 13:08:58 +02:00
Elad 103d580d9a Fixup futex emulation
std::unordered_multimap::find may return any matching element.. unlike equal_range. (code relied on matching the first)
There was also UB there of reference to an element after it has deleted.
2025-12-16 10:41:21 +02:00
Elad de8552048f PPU: Prevent repeated notifications 2025-12-16 10:41:21 +02:00
Elad 65cd4deb77 Prevent atomic cache line collisions 2025-12-16 10:41:21 +02:00
Elad 16e41f4492 Fix compilation with older Qt versions 2025-12-16 10:41:21 +02:00
RipleyTom 711ec69e48 Fix RPCN replies ordering 2025-12-16 10:07:03 +02:00
Megamouse cf87f24587 cellGem: improve bayer demosaicing 2025-12-15 14:20:34 +01:00
Megamouse 12a3818fcf Fix logging of gem configs 2025-12-15 14:20:34 +01:00
kd-11 d9da5f26c0 vk: Ignore memory pressure handling when allocating data heaps into ReBAR memory. 2025-12-15 11:53:47 +00:00
kd-11 1a3e150a62 vk: Extend memory allocation system to explicitly allow requesting no VRAM recovery on allocation fail. 2025-12-15 11:53:47 +00:00
Megamouse c3db85c68e cellGem: Fix YUV conversions, implement gain, averaging and basic outlier detection 2025-12-13 12:43:22 +01:00
kd-11 2b0456520e rsx/cfg: Fix edge case where an empty block is defined 2025-12-13 13:50:39 +03:00
Megamouse 0c455d12c9 Fix int -> float conversion warning 2025-12-13 03:55:44 +01:00
Megamouse 236f783466 overlays fix c++23 elifndef
This is a c++23 feature...
2025-12-13 03:55:44 +01:00
Megamouse f739ce7323 cellGem: Implement CELL_CAMERA_RAW8 to CELL_GEM_BAYER_RESTORED_RASTERIZED 2025-12-12 10:31:26 +01:00
Megamouse 3c0558c822 cellGem: Implement CELL_CAMERA_RAW8 to CELL_GEM_BAYER_RESTORED_RGGB 2025-12-12 10:31:26 +01:00
Megamouse c38146636a Update fusion to 1.2.11 2025-12-12 10:31:26 +01:00
Megamouse 26b0f822d8 ps_move_handler: enable orientation by default 2025-12-12 10:31:26 +01:00
Megamouse ee9dc44059 ps_move_handler: fix decoding of ZCM1 sensor values 2025-12-12 10:31:26 +01:00
Megamouse 24745416c5 cellGem: fix compilation 2025-12-12 10:31:26 +01:00
Megamouse fa4e2d1b42 ps_move_handler: fix trigger values depending on ps move version 2025-12-12 10:31:26 +01:00
Megamouse c2284c962b move ps_move_data to own file 2025-12-12 10:31:26 +01:00
Megamouse 757e9a0493 cellGem: implement world coordinate orientation in cellGemGetState 2025-12-12 10:31:26 +01:00
Megamouse f7cda4b2b4 cellGem: fix default orientation 2025-12-12 10:31:26 +01:00
Megamouse c6ef09500a cellGem: fix division by zero 2025-12-12 10:31:26 +01:00
Megamouse 26ae6f0902 cellGem: fix default accelerometer value 2025-12-12 10:31:26 +01:00
Megamouse 1b01a9274c cellGem: clarify member descriptions 2025-12-12 10:31:26 +01:00
kd-11 0f1eadcab0 rsx/gtest: Drop unused function 2025-12-10 13:07:07 +03:00
kd-11 1ea3c121fa rsx/cfg: Fix delay-slot detection when copying from the same register index but different precision. 2025-12-10 13:07:07 +03:00
kd-11 2c6d3dde67 C++ Pro
- Different from C++ amateur.
- Addresses code review suggestions to step up the C++
2025-12-10 13:07:07 +03:00
kd-11 a412e34fa6 rsx/cfg/fp: Fix back-traversal for IF-ELSE pairs 2025-12-10 13:07:07 +03:00
kd-11 4dc52fde82 rsx/common: Implement list insert for simple_array 2025-12-10 13:07:07 +03:00
kd-11 5688573b3d rsx/fp: Fix pre-branch epilogue emit 2025-12-10 13:07:07 +03:00
kd-11 98a12de256 rsx/gtest: Enable unit tests for nix builds 2025-12-10 13:07:07 +03:00
kd-11 43d8518faa rsx/fp: Warning cleanup 2025-12-10 13:07:07 +03:00
kd-11 1e6fe1f4ab rsx/cfg/fp: Add delay-slot detection to remove unnecessary barriers
- Reduces emitted barriers by like 99%
2025-12-10 13:07:07 +03:00
kd-11 93f89b8a74 rsx/cfg: Fix instruction injection when more than one barrier is needed for a single instruction 2025-12-10 13:07:07 +03:00
kd-11 8cd241ca10 rsx/fp: Implement OR16_LO and OR16_HI instructions 2025-12-10 13:07:07 +03:00
kd-11 8d2f7ae85f rsx/cfg: Implement partial barriers for 32-bit register channels 2025-12-10 13:07:07 +03:00
kd-11 81d657a960 rsx/cfg: Fix grouping barrier16 instructions when lane is shared. 2025-12-10 13:07:07 +03:00
kd-11 4183d09a52 rsx/fp/cfg: Fix input mask for DIV and DIVSQ instructions 2025-12-10 13:07:07 +03:00
kd-11 316e01995b rsx/fp: Re-implement ROP output resolve 2025-12-10 13:07:07 +03:00
kd-11 f2913e4692 rsx/fp: Reimplement GLSL code generation from CFG 2025-12-10 13:07:07 +03:00
kd-11 d23ea4760b rsx/cfg: Handle nested IF/LOOP blocks falling out to unsuitable nodes (ELSE).
- In that case, find the node's END node and link to that instead. ELSE nodes are not reachable from children of the preceding IF.
- ELSE nodes are special this way, all other types of nodes are reachable by adjacency.
2025-12-10 13:07:07 +03:00
kd-11 26fd0510ab rsx/fp: Enable CFG passes and emit block epilogues 2025-12-10 13:07:07 +03:00
kd-11 e8e2d4b93d rsx/fp: Fix issues with FP decompiler using new CFG system 2025-12-10 13:07:07 +03:00
kd-11 a7f5514913 rsx/cfg: Fix dependency injection tests for FP 2025-12-10 13:07:07 +03:00
kd-11 3bed46b844 rsx/fp/cfg: Fix IF/ELSE and LOOP node linkage 2025-12-10 13:07:07 +03:00
kd-11 e1ec2f58bb rsx/fp/asm: Fix ELSE encoding 2025-12-10 13:07:07 +03:00
kd-11 91e19652de rsx/cfg/gtest: Rewrite CFG tests using the assembler
- Also extend IF-ELSE test to catch a broken succession chain
2025-12-10 13:07:07 +03:00
kd-11 b244c0fa0f rsx/cfg/gtest: Update unit tests 2025-12-10 13:07:07 +03:00
kd-11 f4ba548748 rsx/fp/asm: Implement asm support for branches
- Allows creating more complex command sequences from text
2025-12-10 13:07:07 +03:00
kd-11 856eaac1b6 rsx/cfg: Implement dependency injection pass with branches 2025-12-10 13:07:07 +03:00
kd-11 8ff3dda5e8 rsx/cfg: Skip literal constants when annotating instructions 2025-12-10 13:07:07 +03:00
kd-11 fa40cef0b1 rsx/fp/cfg: Insert bi-directional edges correctly during traversal 2025-12-10 13:07:07 +03:00
kd-11 65b4bcb027 rsx/fp/asm: Add support for more instructions 2025-12-10 13:07:07 +03:00
kd-11 5a8ad219ba rsx/asm: Implement dependency barrier injection pass 2025-12-10 13:07:07 +03:00
kd-11 ed397c5d67 rsx/asm: Add support for more opcodes and add tests for mixed block IO 2025-12-10 13:07:07 +03:00
kd-11 13d66f324b rsx/shaders: Fix nix builds 2025-12-10 13:07:07 +03:00
kd-11 aaaa6feb5a rsx: Add UTs for register annotation pass and fix uncovered bugs 2025-12-10 13:07:07 +03:00
kd-11 88a54e2d98 rsx/fp: Add a basic assembler to aid in test authoring 2025-12-10 13:07:07 +03:00
kd-11 9d30716aa8 rsx: Implement register annotation pass 2025-12-10 13:07:07 +03:00
kd-11 e20bae3cd7 rsx/asm: Stub out register annotation and dependency passes 2025-12-10 13:07:07 +03:00
Megamouse aff645272f overlays/macOs: add some fallback fonts for cyrillic 2025-12-09 12:52:51 +01:00
Megamouse 27f39d2ac0 fmt: add more string_view versions of string functions 2025-12-08 19:49:42 +01:00
oltolm c840c98e9e bit_set.h: forward declare fmt_unveil
This change is necessary to fix the following clangd error in `StrFmt.h`

Redefinition of 'fmt_unveil'clang(redefinition)
bit_set.h(388, 8): Previous definition is here
2025-12-08 12:43:15 +02:00
RipleyTom adcacc1119 Remove RPCN test server 2025-12-08 09:16:52 +01:00
RipleyTom 65458effa6 RPCN v1.5.0 2025-12-08 09:16:52 +01:00
Antonino Di Guardo 0f1d516d9a Check available and required size when installing a package (#17829)
Show and check available and required size when installing a package.
Installation is not allowed, by disabling `Yes` and/or `Install` button,
if not enough disk space is detected.
On multi installation dialog box, installation size for each package is
reported in the list.

fixes #14440

</br>
</br>

### Single PKG installation - Not enough space available

![pr_single_no_space](https://github.com/user-attachments/assets/3fc83d3e-8219-4dca-a4ae-a351f3c4c662)

</br>
</br>

### Single PKG installation - Required space available

![pr_single_space](https://github.com/user-attachments/assets/84b6b4a0-ee4a-430e-b84f-60a754e0a4fa)

</br>
</br>

### Multi PKG installation - Not enough space available

![pr_no_space](https://github.com/user-attachments/assets/56af51a1-cd78-4ad5-818d-7707c0c45de4)

</br>
</br>

### Multi PKG installation - Required space available

![pr_space](https://github.com/user-attachments/assets/43cc66dd-7e98-46de-8dd3-859f8ebb2b05)

---------

Co-authored-by: Megamouse <studienricky89@googlemail.com>
2025-12-07 14:38:13 +01:00
oltolm 3f6529fecb UI: remove unnecessary QOverloads 2025-12-06 20:58:28 +01:00
schm1dtmac b76ca8807f (macOS) Support loading VK ICDs (in preparation for KosmicKrisp) 2025-12-06 19:21:54 +03:00
689 changed files with 116941 additions and 20313 deletions
-125
View File
@@ -1,125 +0,0 @@
#!/bin/sh -ex
# shellcheck disable=SC2086
export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
export HOMEBREW_NO_ENV_HINTS=1
export HOMEBREW_NO_INSTALL_CLEANUP=1
brew install -f --overwrite --quiet pipenv googletest opencv@4 ffmpeg@5 "llvm@$LLVM_COMPILER_VER" glew sdl3 vulkan-headers
brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative
brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
# moltenvk based on commit for 1.4.0 release
export HOMEBREW_DEVELOPER=1 # Prevents blocking of local formulae
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/ea2bec5f1f4384e188d7fc0702ab21a20a2ced08/Formula/m/molten-vk.rb
/opt/homebrew/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb
export HOMEBREW_DEVELOPER=0
export CXX=clang++
export CC=clang
export BREW_PATH;
BREW_PATH="$(brew --prefix)"
export BREW_BIN="/opt/homebrew/bin"
export BREW_SBIN="/opt/homebrew/sbin"
export CMAKE_EXTRA_OPTS='-DLLVM_TARGETS_TO_BUILD=arm64'
export WORKDIR;
WORKDIR="$(pwd)"
# Setup ccache
if [ ! -d "$CCACHE_DIR" ]; then
mkdir -p "$CCACHE_DIR"
fi
# Get Qt
if [ ! -d "/tmp/Qt/$QT_VER" ]; then
mkdir -p "/tmp/Qt"
git clone https://github.com/engnr/qt-downloader.git
cd qt-downloader
git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597
sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader
sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader
cd "/tmp/Qt"
"$BREW_PATH/bin/pipenv" run pip3 uninstall py7zr requests semantic_version lxml
"$BREW_PATH/bin/pipenv" run pip3 install py7zr requests semantic_version lxml --no-cache
mkdir -p "$QT_VER/macos" ; ln -s "macos" "$QT_VER/clang_64"
sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader"
"$BREW_PATH/bin/pipenv" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats -o "$QT_VER/clang_64"
fi
cd "$WORKDIR"
ditto "/tmp/Qt/$QT_VER" "qt-downloader/$QT_VER"
export Qt6_DIR="$WORKDIR/qt-downloader/$QT_VER/clang_64/lib/cmake/Qt$QT_VER_MAIN"
export SDL3_DIR="$BREW_PATH/opt/sdl3/lib/cmake/SDL3"
export PATH="$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/bin:$WORKDIR/qt-downloader/$QT_VER/clang_64/bin:$BREW_BIN:$BREW_SBIN:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:$PATH"
export LDFLAGS="-L$BREW_PATH/lib $BREW_PATH/opt/ffmpeg@5/lib/libavcodec.dylib $BREW_PATH/opt/ffmpeg@5/lib/libavformat.dylib $BREW_PATH/opt/ffmpeg@5/lib/libavutil.dylib $BREW_PATH/opt/ffmpeg@5/lib/libswscale.dylib $BREW_PATH/opt/ffmpeg@5/lib/libswresample.dylib $BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++.1.dylib $BREW_PATH/lib/libSDL3.dylib $BREW_PATH/lib/libGLEW.dylib $BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/unwind/libunwind.1.dylib -Wl,-rpath,$BREW_PATH/lib"
export CPPFLAGS="-I$BREW_PATH/include -I$BREW_PATH/include -no-pie -D__MAC_OS_X_VERSION_MIN_REQUIRED=140000"
export CFLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000"
export LIBRARY_PATH="$BREW_PATH/lib"
export LD_LIBRARY_PATH="$BREW_PATH/lib"
export VULKAN_SDK
VULKAN_SDK="$BREW_PATH/opt/molten-vk"
ln -s "$VULKAN_SDK/lib/libMoltenVK.dylib" "$VULKAN_SDK/lib/libvulkan.dylib" || true
export VK_ICD_FILENAMES="$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json"
export LLVM_DIR
LLVM_DIR="$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER"
# exclude ffmpeg, LLVM, opencv, and sdl from submodule update
# shellcheck disable=SC2046
git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/ffmpeg/ && !/llvm/ && !/opencv/ && !/SDL/ && !/feralinteractive/ { print $3 }' .gitmodules)
# 3rdparty fixes
sed -i '' "s/extern const double NSAppKitVersionNumber;/const double NSAppKitVersionNumber = 1343;/g" 3rdparty/hidapi/hidapi/mac/hid.c
mkdir build && cd build || exit 1
export MACOSX_DEPLOYMENT_TARGET=14.0
"$BREW_PATH/bin/cmake" .. \
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
-DUSE_SDL=ON \
-DUSE_DISCORD_RPC=ON \
-DUSE_VULKAN=ON \
-DUSE_ALSA=OFF \
-DUSE_PULSE=OFF \
-DUSE_AUDIOUNIT=ON \
-DUSE_SYSTEM_FFMPEG=ON \
-DLLVM_CCACHE_BUILD=OFF \
-DLLVM_BUILD_RUNTIME=OFF \
-DLLVM_BUILD_TOOLS=OFF \
-DLLVM_INCLUDE_DOCS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_TOOLS=OFF \
-DLLVM_INCLUDE_UTILS=OFF \
-DLLVM_USE_PERF=OFF \
-DLLVM_ENABLE_Z3_SOLVER=OFF \
-DUSE_NATIVE_INSTRUCTIONS=OFF \
-DUSE_SYSTEM_MVK=ON \
-DUSE_SYSTEM_FAUDIO=OFF \
-DUSE_SYSTEM_SDL=ON \
-DUSE_SYSTEM_OPENCV=ON \
"$CMAKE_EXTRA_OPTS" \
-DLLVM_TARGET_ARCH=arm64 \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DCMAKE_IGNORE_PATH="$BREW_PATH/lib" \
-DCMAKE_IGNORE_PREFIX_PATH=/opt/homebrew/opt \
-DCMAKE_CXX_FLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000" \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
-G Ninja
"$BREW_PATH/bin/ninja"; build_status=$?;
cd ..
# If it compiled succesfully let's deploy.
if [ "$build_status" -eq 0 ]; then
.ci/deploy-mac-arm64.sh
fi
+75 -66
View File
@@ -1,38 +1,52 @@
#!/bin/sh -ex
# Gather explicit version number and number of commits
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' rpcs3/rpcs3_version.cpp)
COMM_COUNT=$(git rev-list --count HEAD)
COMM_HASH=$(git rev-parse --short=8 HEAD)
# AVVER is used for GitHub releases, it is the version number. LVER is used for release naming.
AVVER="${COMM_TAG}-${COMM_COUNT}"
export LVER="${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}"
echo "AVVER=$AVVER" >> .ci/ci-vars.env
# shellcheck disable=SC2086
export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
export HOMEBREW_NO_ENV_HINTS=1
export HOMEBREW_NO_INSTALL_CLEANUP=1
brew install -f --overwrite --quiet ccache pipenv "llvm@$LLVM_COMPILER_VER"
brew update
brew install -f --overwrite --quiet ccache "llvm@$LLVM_COMPILER_VER"
brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER"
# shellcheck disable=SC3009
rm /usr/local/bin/{idle3.14,pip3.14,pydoc3.14,python3.14,python3.14-config} && \
rm /usr/local/bin/{idle3,pip3,pydoc3,python3,python3-config}
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
arch -x86_64 /usr/local/bin/brew install -f --overwrite --quiet opencv@4 ffmpeg@5 "llvm@$LLVM_COMPILER_VER" glew sdl3 vulkan-headers
arch -x86_64 /usr/local/bin/brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative
arch -x86_64 /usr/local/bin/brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
if [ "$AARCH64" -eq 1 ]; then
brew install -f --overwrite --quiet googletest opencv@4 sdl3 vulkan-headers vulkan-loader molten-vk
brew unlink --quiet ffmpeg fmt qtbase qtsvg qtdeclarative protobuf || true
else
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
arch -x86_64 /usr/local/bin/brew install -f --overwrite --quiet python@3.14 opencv@4 "llvm@$LLVM_COMPILER_VER" sdl3 vulkan-headers vulkan-loader molten-vk
arch -x86_64 /usr/local/bin/brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative protobuf || true
fi
# moltenvk based on commit for 1.4.0 release
export HOMEBREW_DEVELOPER=1 # Prevents blocking of local formulae
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/ea2bec5f1f4384e188d7fc0702ab21a20a2ced08/Formula/m/molten-vk.rb
arch -x86_64 /usr/local/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb
export HOMEBREW_DEVELOPER=0
export CXX=clang++
export CC=clang
export BREW_X64_PATH;
BREW_X64_PATH="$("/usr/local/bin/brew" --prefix)"
export BREW_BIN="/usr/local/bin"
export BREW_SBIN="/usr/local/sbin"
export CMAKE_EXTRA_OPTS='-DLLVM_TARGETS_TO_BUILD=X86'
export BREW_PATH;
if [ "$AARCH64" -eq 1 ]; then
BREW_PATH="$(brew --prefix)"
export BREW_BIN="/opt/homebrew/bin"
export BREW_SBIN="/opt/homebrew/sbin"
else
BREW_PATH="$("/usr/local/bin/brew" --prefix)"
export BREW_BIN="/usr/local/bin"
export BREW_SBIN="/usr/local/sbin"
fi
export WORKDIR;
WORKDIR="$(pwd)"
# Setup ccache
if [ ! -d "$CCACHE_DIR" ]; then
mkdir -p "$CCACHE_DIR"
fi
# Get Qt
if [ ! -d "/tmp/Qt/$QT_VER" ]; then
mkdir -p "/tmp/Qt"
@@ -42,82 +56,77 @@ if [ ! -d "/tmp/Qt/$QT_VER" ]; then
sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader
sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader
cd "/tmp/Qt"
"/opt/homebrew/bin/pipenv" --python "/opt/homebrew/bin/python3" run pip3 install py7zr requests semantic_version lxml
pip3 install py7zr requests semantic_version lxml --no-cache --break-system-packages
mkdir -p "$QT_VER/macos" ; ln -s "macos" "$QT_VER/clang_64"
sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader"
"/opt/homebrew/bin/pipenv" --python "/opt/homebrew/bin/python3" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats -o "$QT_VER/clang_64"
python3 "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats -o "$QT_VER/clang_64"
fi
cd "$WORKDIR"
ditto "/tmp/Qt/$QT_VER" "qt-downloader/$QT_VER"
export Qt6_DIR="$WORKDIR/qt-downloader/$QT_VER/clang_64/lib/cmake/Qt$QT_VER_MAIN"
export SDL3_DIR="$BREW_X64_PATH/opt/sdl3/lib/cmake/SDL3"
export SDL3_DIR="$BREW_PATH/opt/sdl3/lib/cmake/SDL3"
export PATH="/opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/bin:$WORKDIR/qt-downloader/$QT_VER/clang_64/bin:$BREW_BIN:$BREW_SBIN:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:$PATH"
# shellcheck disable=SC2155
export LDFLAGS="-L$BREW_X64_PATH/lib -Wl,-rpath,$BREW_X64_PATH/lib,-L$(brew --prefix llvm)/lib/c++"
export CPPFLAGS="-I$BREW_X64_PATH/include -msse -msse2 -mcx16 -no-pie -D__MAC_OS_X_VERSION_MIN_REQUIRED=140000"
export CFLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000"
export LIBRARY_PATH="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER/lib:$BREW_X64_PATH/lib"
export LD_LIBRARY_PATH="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER/lib:$BREW_X64_PATH/lib"
export PATH="/opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/bin:$PATH"
export LDFLAGS="-L$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++ -L$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/unwind -lunwind"
export VULKAN_SDK
VULKAN_SDK="$BREW_X64_PATH/opt/molten-vk"
ln -s "$VULKAN_SDK/lib/libMoltenVK.dylib" "$VULKAN_SDK/lib/libvulkan.dylib"
export VK_ICD_FILENAMES="$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json"
VULKAN_SDK="$BREW_PATH/opt/molten-vk"
ln -s "$BREW_PATH/opt/vulkan-loader/lib/libvulkan.dylib" "$VULKAN_SDK/lib/libvulkan.dylib"
export LLVM_DIR
LLVM_DIR="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER"
# exclude ffmpeg, LLVM, opencv, and sdl from submodule update
LLVM_DIR="$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER"
# Pull all the submodules except some
# shellcheck disable=SC2046
git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/ffmpeg/ && !/llvm/ && !/opencv/ && !/SDL/ && !/feralinteractive/ { print $3 }' .gitmodules)
# 3rdparty fixes
sed -i '' "s/extern const double NSAppKitVersionNumber;/const double NSAppKitVersionNumber = 1343;/g" 3rdparty/hidapi/hidapi/mac/hid.c
git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/llvm/ && !/opencv/ && !/SDL/ && !/feralinteractive/ { print $3 }' .gitmodules)
mkdir build && cd build || exit 1
export MACOSX_DEPLOYMENT_TARGET=14.0
"/opt/homebrew/bin/cmake" .. \
-DBUILD_RPCS3_TESTS=OFF \
-DRUN_RPCS3_TESTS=OFF \
if [ "$AARCH64" -eq 1 ]; then
cmake .. \
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
-DCMAKE_OSX_DEPLOYMENT_TARGET=14.4 \
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
-DMACOSX_BUNDLE_SHORT_VERSION_STRING="${COMM_TAG}" \
-DMACOSX_BUNDLE_BUNDLE_VERSION="${COMM_COUNT}" \
-DSTATIC_LINK_LLVM=ON \
-DUSE_SDL=ON \
-DUSE_DISCORD_RPC=ON \
-DUSE_VULKAN=ON \
-DUSE_ALSA=OFF \
-DUSE_PULSE=OFF \
-DUSE_AUDIOUNIT=ON \
-DUSE_SYSTEM_FFMPEG=ON \
-DLLVM_CCACHE_BUILD=OFF \
-DLLVM_BUILD_RUNTIME=OFF \
-DLLVM_BUILD_TOOLS=OFF \
-DLLVM_INCLUDE_DOCS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_TOOLS=OFF \
-DLLVM_INCLUDE_UTILS=OFF \
-DLLVM_USE_PERF=OFF \
-DLLVM_ENABLE_Z3_SOLVER=OFF \
-DUSE_SYSTEM_FFMPEG=OFF \
-DUSE_NATIVE_INSTRUCTIONS=OFF \
-DUSE_PRECOMPILED_HEADERS=OFF \
-DUSE_SYSTEM_MVK=ON \
-DUSE_SYSTEM_FAUDIO=OFF \
-DUSE_SYSTEM_SDL=ON \
-DUSE_SYSTEM_OPENCV=ON \
"$CMAKE_EXTRA_OPTS" \
-DLLVM_TARGET_ARCH=X86_64 \
-G Ninja
else
cmake .. \
-DBUILD_RPCS3_TESTS=OFF \
-DRUN_RPCS3_TESTS=OFF \
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
-DCMAKE_SYSTEM_PROCESSOR=x86_64 \
-DCMAKE_TOOLCHAIN_FILE=buildfiles/cmake/TCDarwinX86_64.cmake \
-DCMAKE_IGNORE_PATH="$BREW_X64_PATH/lib" \
-DCMAKE_IGNORE_PREFIX_PATH=/usr/local/opt \
-DCMAKE_CXX_FLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=140000" \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_OSX_DEPLOYMENT_TARGET=14.4 \
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
-DMACOSX_BUNDLE_SHORT_VERSION_STRING="${COMM_TAG}" \
-DMACOSX_BUNDLE_BUNDLE_VERSION="${COMM_COUNT}"\
-DSTATIC_LINK_LLVM=ON \
-DUSE_SDL=ON \
-DUSE_DISCORD_RPC=ON \
-DUSE_AUDIOUNIT=ON \
-DUSE_SYSTEM_FFMPEG=OFF \
-DUSE_NATIVE_INSTRUCTIONS=OFF \
-DUSE_PRECOMPILED_HEADERS=OFF \
-DUSE_SYSTEM_MVK=ON \
-DUSE_SYSTEM_SDL=ON \
-DUSE_SYSTEM_OPENCV=ON \
-G Ninja
fi
"/opt/homebrew/bin/ninja"; build_status=$?;
ninja; build_status=$?;
cd ..
+7 -4
View File
@@ -2,6 +2,9 @@
git config --global --add safe.directory '*'
CPU_ARCH="${1:-x86_64}"
MSYS2="${2:-clang64}"
# Pull all the submodules except some
# Note: Tried to use git submodule status, but it takes over 20 seconds
# shellcheck disable=SC2046
@@ -23,7 +26,7 @@ else
fi
cmake .. \
-DCMAKE_PREFIX_PATH=/clang64 \
-DCMAKE_PREFIX_PATH=/"${MSYS2}" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DUSE_NATIVE_INSTRUCTIONS=OFF \
-DUSE_PRECOMPILED_HEADERS=OFF \
@@ -44,8 +47,8 @@ cmake .. \
-DUSE_DISCORD_RPC=ON \
-DOpenGL_GL_PREFERENCE=LEGACY \
-DWITH_LLVM=ON \
-DLLVM_DIR=/clang64/lib/cmake/llvm \
-DVulkan_LIBRARY=/clang64/lib/libvulkan-1.dll.a \
-DLLVM_DIR=/"${MSYS2}"/lib/cmake/llvm \
-DVulkan_LIBRARY=/"${MSYS2}"/lib/libvulkan-1.dll.a \
-DSTATIC_LINK_LLVM=ON \
-DBUILD_RPCS3_TESTS=OFF \
-DRUN_RPCS3_TESTS=OFF \
@@ -57,5 +60,5 @@ cd ..
# If it compiled succesfully let's deploy.
if [ "$build_status" -eq 0 ]; then
.ci/deploy-windows-clang.sh "x86_64"
.ci/deploy-windows-clang.sh "${CPU_ARCH}" "${MSYS2}"
fi
-76
View File
@@ -1,76 +0,0 @@
#!/bin/sh -ex
# shellcheck disable=SC2086
cd build || exit 1
# Gather explicit version number and number of commits
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ../rpcs3/rpcs3_version.cpp)
COMM_COUNT=$(git rev-list --count HEAD)
COMM_HASH=$(git rev-parse --short=8 HEAD)
AVVER="${COMM_TAG}-${COMM_COUNT}"
# AVVER is used for GitHub releases, it is the version number.
echo "AVVER=$AVVER" >> ../.ci/ci-vars.env
cd bin
mkdir "rpcs3.app/Contents/lib/" || true
cp "$(realpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib"
cp "$(realpath /opt/homebrew/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib)" "rpcs3.app/Contents/Frameworks/libgcc_s.1.1.dylib"
cp "$(realpath /opt/homebrew/lib/libsharpyuv.0.dylib)" "rpcs3.app/Contents/lib/libsharpyuv.0.dylib"
cp "$(realpath /opt/homebrew/lib/libintl.8.dylib)" "rpcs3.app/Contents/lib/libintl.8.dylib"
rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
"rpcs3.app/Contents/Frameworks/QtQml.framework" \
"rpcs3.app/Contents/Frameworks/QtQmlModels.framework" \
"rpcs3.app/Contents/Frameworks/QtQuick.framework" \
"rpcs3.app/Contents/Frameworks/QtVirtualKeyboard.framework" \
"rpcs3.app/Contents/Plugins/platforminputcontexts" \
"rpcs3.app/Contents/Plugins/virtualkeyboard" \
"rpcs3.app/Contents/Resources/git"
../../.ci/optimize-mac.sh rpcs3.app
# Download translations
mkdir -p "rpcs3.app/Contents/translations"
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
| grep "browser_download_url" \
| grep "RPCS3-languages.zip" \
| cut -d '"' -f 4)
if [ -z "$ZIP_URL" ]; then
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
else
echo "Downloading translations from: $ZIP_URL"
curl -L -o translations.zip "$ZIP_URL" || {
echo "Failed to download translations.zip. Continuing without translations."
exit 0
}
unzip -o translations.zip -d "rpcs3.app/Contents/translations" >/dev/null 2>&1 || \
echo "Failed to extract translations.zip. Continuing without translations."
rm -f translations.zip
fi
# Hack
install_name_tool -delete_rpath /opt/homebrew/lib RPCS3.app/Contents/MacOS/rpcs3 || echo "Hack for deleting rpath /opt/homebrew/lib not needed"
install_name_tool -delete_rpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib RPCS3.app/Contents/MacOS/rpcs3 || echo "Hack for deleting rpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib not needed"
# Need to do this rename hack due to case insensitive filesystem
mv rpcs3.app RPCS3_.app
mv RPCS3_.app RPCS3.app
# NOTE: "--deep" is deprecated
codesign --deep -fs - RPCS3.app
echo "[InternetShortcut]" > Quickstart.url
echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url
echo "IconIndex=0" >> Quickstart.url
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos_arm64.7z"
"/opt/homebrew/bin/7z" a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
FILESIZE=$(stat -f %z "$ARCHIVE_FILEPATH")
SHA256SUM=$(shasum -a 256 "$ARCHIVE_FILEPATH" | awk '{ print $1 }')
cd ..
echo "${SHA256SUM};${FILESIZE}B" > "$RELEASE_MESSAGE"
cd bin
+24 -21
View File
@@ -3,24 +3,16 @@
# shellcheck disable=SC2086
cd build || exit 1
# Gather explicit version number and number of commits
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ../rpcs3/rpcs3_version.cpp)
COMM_COUNT=$(git rev-list --count HEAD)
COMM_HASH=$(git rev-parse --short=8 HEAD)
AVVER="${COMM_TAG}-${COMM_COUNT}"
# AVVER is used for GitHub releases, it is the version number.
echo "AVVER=$AVVER" >> ../.ci/ci-vars.env
cd bin
mkdir "rpcs3.app/Contents/lib/"
mkdir -p "rpcs3.app/Contents/Resources/vulkan/icd.d" || true
wget https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar
tar -xvf MoltenVK-macos-privateapi.tar
cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib" "rpcs3.app/Contents/Frameworks/libMoltenVK.dylib"
cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/MoltenVK_icd.json" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json"
sed -i '' "s/.\//..\/..\/..\/Frameworks\//g" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json"
cp "$(realpath /usr/local/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib"
cp "$(realpath /usr/local/opt/llvm@$LLVM_COMPILER_VER/lib/unwind/libunwind.1.dylib)" "rpcs3.app/Contents/Frameworks/libunwind.1.dylib"
cp "$(realpath /usr/local/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib)" "rpcs3.app/Contents/Frameworks/libgcc_s.1.1.dylib"
cp "$(realpath /usr/local/lib/libsharpyuv.0.dylib)" "rpcs3.app/Contents/lib/libsharpyuv.0.dylib"
cp "$(realpath /usr/local/lib/libintl.8.dylib)" "rpcs3.app/Contents/lib/libintl.8.dylib"
cp "$(realpath $BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib"
cp "$(realpath $BREW_PATH/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib)" "rpcs3.app/Contents/Frameworks/libgcc_s.1.1.dylib"
rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
"rpcs3.app/Contents/Frameworks/QtQml.framework" \
@@ -29,7 +21,7 @@ rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
"rpcs3.app/Contents/Frameworks/QtVirtualKeyboard.framework" \
"rpcs3.app/Contents/Plugins/platforminputcontexts" \
"rpcs3.app/Contents/Plugins/virtualkeyboard" \
"rpcs3.app/Contents/Resources/git"
"rpcs3.app/Contents/Resources/git" || true
../../.ci/optimize-mac.sh rpcs3.app
@@ -52,13 +44,20 @@ else
rm -f translations.zip
fi
# Copy Qt translations manually
QT_TRANS="$WORKDIR/qt-downloader/$QT_VER/clang_64/translations"
cp $QT_TRANS/qt_*.qm rpcs3.app/Contents/translations
cp $QT_TRANS/qtbase_*.qm rpcs3.app/Contents/translations
cp $QT_TRANS/qtmultimedia_*.qm rpcs3.app/Contents/translations
rm -f rpcs3.app/Contents/translations/qt_help_*.qm || true
# Need to do this rename hack due to case insensitive filesystem
mv rpcs3.app RPCS3_.app
mv RPCS3_.app RPCS3.app
# Hack
install_name_tool -delete_rpath /usr/local/lib RPCS3.app/Contents/MacOS/rpcs3
#-delete_rpath /usr/local/Cellar/sdl3/3.2.8/lib
install_name_tool -delete_rpath /opt/homebrew/lib RPCS3.app/Contents/MacOS/rpcs3 || true
install_name_tool -delete_rpath /usr/local/lib RPCS3.app/Contents/MacOS/rpcs3 || true
# NOTE: "--deep" is deprecated
codesign --deep -fs - RPCS3.app
@@ -67,8 +66,12 @@ echo "[InternetShortcut]" > Quickstart.url
echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url
echo "IconIndex=0" >> Quickstart.url
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos.7z"
"/opt/homebrew/bin/7z" a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
if [ "$AARCH64" -eq 1 ]; then
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${LVER}_macos_aarch64.7z"
else
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${LVER}_macos.7z"
fi
7z a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
FILESIZE=$(stat -f %z "$ARCHIVE_FILEPATH")
SHA256SUM=$(shasum -a 256 "$ARCHIVE_FILEPATH" | awk '{ print $1 }')
+5 -4
View File
@@ -7,12 +7,13 @@
cd build || exit 1
CPU_ARCH="${1:-x86_64}"
MSYS2="${2:-clang64}"
echo "Deploying rpcs3 windows clang $CPU_ARCH"
# BUILD_blablabla is CI specific, so we wrap it for portability
ARTIFACT_DIR=$(cygpath -u "$BUILD_ARTIFACTSTAGINGDIRECTORY")
MSYS2_CLANG_BIN=$(cygpath -w /clang64/bin)
MSYS2_CLANG_BIN=$(cygpath -w /"${MSYS2}"/bin)
MSYS2_USR_BIN=$(cygpath -w /usr/bin)
echo "Installing dependencies of: ./bin/rpcs3.exe (MSYS2 dir is '$MSYS2_CLANG_BIN', usr dir is '$MSYS2_USR_BIN')"
@@ -22,7 +23,7 @@ cmake -DMSYS2_CLANG_BIN="$MSYS2_CLANG_BIN" -DMSYS2_USR_BIN="$MSYS2_USR_BIN" -Dex
mkdir ./bin/config
mkdir ./bin/config/input_configs
curl -fsSL 'https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt' 1> ./bin/config/input_configs/gamecontrollerdb.txt
curl -fsSL 'https://rpcs3.net/compatibility?api=v1&export' | iconv -t UTF-8 1> ./bin/GuiConfigs/compat_database.dat
curl -fsSL 'https://rpcs3.net/compatibility?api=v1&export' | iconv -f ISO-8859-1 -t UTF-8 1> ./bin/GuiConfigs/compat_database.dat
# Download translations
mkdir -p ./bin/share/qt6/translations
@@ -38,7 +39,7 @@ else
echo "Failed to download translations.zip. Continuing without translations."
exit 0
}
unzip -o translations.zip -d "./bin/share/qt6/translations" >/dev/null 2>&1 || \
7z x translations.zip -o"./bin/share/qt6/translations" >/dev/null 2>&1 || \
echo "Failed to extract translations.zip. Continuing without translations."
rm -f translations.zip
fi
@@ -49,7 +50,7 @@ fi
# Generate sha256 hashes
# Write to file for GitHub releases
sha256sum "$BUILD" | awk '{ print $1 }' | tee "$BUILD.sha256"
echo "$(cat "$BUILD.sha256");$(stat -c %s "$BUILD")B" > GitHubReleaseMessage.txt
echo "$(cat "$BUILD.sha256");$(stat -c %s "$BUILD")B" > "$RELEASE_MESSAGE"
# Move files to publishing directory
mkdir -p "$ARTIFACT_DIR"
+16 -4
View File
@@ -1,7 +1,7 @@
#!/bin/sh -ex
# Resource/dependency URLs
CCACHE_URL="https://github.com/ccache/ccache/releases/download/v4.11.2/ccache-4.11.2-windows-x86_64.zip"
CCACHE_URL="https://github.com/ccache/ccache/releases/download/v4.12.3/ccache-4.12.3-windows-x86_64.zip"
DEP_URLS=" \
$CCACHE_URL"
@@ -28,11 +28,23 @@ download_and_verify()
correctChecksum="$2"
algo="$3"
fileName="$4"
path="$DEPS_CACHE_DIR/$fileName"
for _ in 1 2 3; do
[ -e "$DEPS_CACHE_DIR/$fileName" ] || curl -fLo "$DEPS_CACHE_DIR/$fileName" "$url"
fileChecksum=$("${algo}sum" "$DEPS_CACHE_DIR/$fileName" | awk '{ print $1 }')
[ "$fileChecksum" = "$correctChecksum" ] && return 0
# Check if the file exists and the checksum is correct
if [ -e "$path" ]; then
fileChecksum=$("${algo}sum" "$path" | awk '{ print $1 }')
[ "$fileChecksum" = "$correctChecksum" ] && return 0
fi
# Otherwise download the file
curl -fLo "$path" "$url"
# Check again if the file exists and the checksum is correct
if [ -e "$path" ]; then
fileChecksum=$("${algo}sum" "$path" | awk '{ print $1 }')
[ "$fileChecksum" = "$correctChecksum" ] && return 0
fi
done
return 1;
+9 -2
View File
@@ -13,14 +13,21 @@ COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ./rpcs3/rpcs3_
COMM_COUNT=$(git rev-list --count HEAD)
COMM_HASH=$(git rev-parse --short=8 HEAD)
# Differentiate Windows builds
if [ "$COMPILER" = 'clang' ];then
BUILD_SUFFIX="win64_${CPU_ARCH}_${COMPILER}"
else
BUILD_SUFFIX="${CPU_ARCH}_${COMPILER}"
fi
# Format the above into filenames
if [ -n "$PR_NUMBER" ]; then
AVVER="${COMM_TAG}-${COMM_HASH}"
BUILD_RAW="rpcs3-v${AVVER}_${CPU_ARCH}_${COMPILER}"
BUILD_RAW="rpcs3-v${AVVER}_${BUILD_SUFFIX}"
BUILD="${BUILD_RAW}.7z"
else
AVVER="${COMM_TAG}-${COMM_COUNT}"
BUILD_RAW="rpcs3-v${AVVER}-${COMM_HASH}_${CPU_ARCH}_${COMPILER}"
BUILD_RAW="rpcs3-v${AVVER}-${COMM_HASH}_${BUILD_SUFFIX}"
BUILD="${BUILD_RAW}.7z"
fi
+19 -5
View File
@@ -6,7 +6,7 @@
QT_HOST="http://qt.mirror.constant.com/"
QT_URL_VER=$(echo "$QT_VER" | sed "s/\.//g")
QT_VER_MSVC_UP=$(echo "${QT_VER_MSVC}" | tr '[:lower:]' '[:upper:]')
QT_PREFIX="online/qtsdkrepository/windows_x86/desktop/qt${QT_VER_MAIN}_${QT_URL_VER}/qt${QT_VER_MAIN}_${QT_URL_VER}/qt.qt${QT_VER_MAIN}.${QT_URL_VER}."
QT_PREFIX="online/qtsdkrepository/windows_x86/desktop/qt${QT_VER_MAIN}_${QT_URL_VER}/qt${QT_VER_MAIN}_${QT_URL_VER}_${QT_VER_MSVC}_64/qt.qt${QT_VER_MAIN}.${QT_URL_VER}."
QT_PREFIX_2="win64_${QT_VER_MSVC}_64/${QT_VER}-0-${QT_DATE}"
QT_SUFFIX="-Windows-Windows_11_24H2-${QT_VER_MSVC_UP}-Windows-Windows_11_24H2-X86_64.7z"
QT_BASE_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtbase${QT_SUFFIX}"
@@ -14,9 +14,10 @@ QT_DECL_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtdeclarative${QT_SUFFIX}"
QT_TOOL_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qttools${QT_SUFFIX}"
QT_MM_URL="${QT_HOST}${QT_PREFIX}addons.qtmultimedia.${QT_PREFIX_2}qtmultimedia${QT_SUFFIX}"
QT_SVG_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtsvg${QT_SUFFIX}"
QT_TRANSLATIONS_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qttranslations${QT_SUFFIX}"
LLVMLIBS_URL="https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win-${LLVM_VER}/llvmlibs_mt.7z"
VULKAN_SDK_URL="https://www.dropbox.com/scl/fi/sjjh0fc4ld281pjbl2xzu/VulkanSDK-${VULKAN_VER}-Installer.exe?rlkey=f6wzc0lvms5vwkt2z3qabfv9d&dl=1"
CCACHE_URL="https://github.com/ccache/ccache/releases/download/v4.11.2/ccache-4.11.2-windows-x86_64.zip"
CCACHE_URL="https://github.com/ccache/ccache/releases/download/v4.12.3/ccache-4.12.3-windows-x86_64.zip"
DEP_URLS=" \
$QT_BASE_URL \
@@ -24,6 +25,7 @@ DEP_URLS=" \
$QT_TOOL_URL \
$QT_MM_URL \
$QT_SVG_URL \
$QT_TRANSLATIONS_URL \
$LLVMLIBS_URL \
$VULKAN_SDK_URL\
$CCACHE_URL"
@@ -51,11 +53,23 @@ download_and_verify()
correctChecksum="$2"
algo="$3"
fileName="$4"
path="$DEPS_CACHE_DIR/$fileName"
for _ in 1 2 3; do
[ -e "$DEPS_CACHE_DIR/$fileName" ] || curl -fLo "$DEPS_CACHE_DIR/$fileName" "$url"
fileChecksum=$("${algo}sum" "$DEPS_CACHE_DIR/$fileName" | awk '{ print $1 }')
[ "$fileChecksum" = "$correctChecksum" ] && return 0
# Check if the file exists and the checksum is correct
if [ -e "$path" ]; then
fileChecksum=$("${algo}sum" "$path" | awk '{ print $1 }')
[ "$fileChecksum" = "$correctChecksum" ] && return 0
fi
# Otherwise download the file
curl -fLo "$path" "$url"
# Check again if the file exists and the checksum is correct
if [ -e "$path" ]; then
fileChecksum=$("${algo}sum" "$path" | awk '{ print $1 }')
[ "$fileChecksum" = "$correctChecksum" ] && return 0
fi
done
return 1;
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
runs-on: windows-2025
env:
COMPILER: msvc
CCACHE_SHA: '1f39f3ad5aae3fe915e99ad1302633bc8f6718e58fa7c0de2b0ba7e080f0f08c'
CCACHE_SHA: '859141059ac950e1e8cd042c66f842f26b9e3a62a1669a69fe6ba180cb58bbdf'
CCACHE_BIN_DIR: 'C:\ccache_bin'
CCACHE_DIR: 'C:\ccache'
CCACHE_INODECACHE: 'true'
+74 -37
View File
@@ -30,23 +30,23 @@ jobs:
matrix:
include:
- os: ubuntu-24.04
docker_img: "rpcs3/rpcs3-ci-jammy:1.7"
docker_img: "rpcs3/rpcs3-ci-jammy:1.10"
build_sh: "/rpcs3/.ci/build-linux.sh"
compiler: clang
UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f
UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux"
- os: ubuntu-24.04
docker_img: "rpcs3/rpcs3-ci-jammy:1.7"
docker_img: "rpcs3/rpcs3-ci-jammy:1.10"
build_sh: "/rpcs3/.ci/build-linux.sh"
compiler: gcc
- os: ubuntu-24.04-arm
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.7"
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.10"
build_sh: "/rpcs3/.ci/build-linux-aarch64.sh"
compiler: clang
UPLOAD_COMMIT_HASH: a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1
UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux-arm64"
- os: ubuntu-24.04-arm
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.7"
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.10"
build_sh: "/rpcs3/.ci/build-linux-aarch64.sh"
compiler: gcc
name: RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }}
@@ -123,23 +123,24 @@ jobs:
matrix:
include:
- name: Intel
build_sh: .ci/build-mac.sh
AARCH64: 0
UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842
UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac
- name: Apple Silicon
build_sh: .ci/build-mac-arm64.sh
AARCH64: 1
UPLOAD_COMMIT_HASH: 8e21bdbc40711a3fccd18fbf17b742348b0f4281
UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac-arm64
name: RPCS3 Mac ${{ matrix.name }}
runs-on: macos-14
env:
CCACHE_DIR: /tmp/ccache_dir
QT_VER: '6.10.1'
QT_VER: '6.11.0'
QT_VER_MAIN: '6'
LLVM_COMPILER_VER: '21'
RELEASE_MESSAGE: ../GitHubReleaseMessage.txt
UPLOAD_COMMIT_HASH: ${{ matrix.UPLOAD_COMMIT_HASH }}
UPLOAD_REPO_FULL_NAME: ${{ matrix.UPLOAD_REPO_FULL_NAME }}
AARCH64: ${{ matrix.AARCH64 }}
RUN_UNIT_TESTS: github.event_name == 'pull_request' && 'ON' || 'OFF'
steps:
- name: Checkout repository
@@ -164,7 +165,7 @@ jobs:
restore-keys: ${{ runner.os }}-qt-${{ matrix.name }}-${{ env.QT_VER }}
- name: Build
run: ${{ matrix.build_sh }}
run: .ci/build-mac.sh
- name: Upload artifacts
uses: actions/upload-artifact@main
@@ -212,13 +213,13 @@ jobs:
env:
COMPILER: msvc
QT_VER_MAIN: '6'
QT_VER: '6.10.1'
QT_VER: '6.11.0'
QT_VER_MSVC: 'msvc2022'
QT_DATE: '202511161843'
QT_DATE: '202603180535'
LLVM_VER: '19.1.7'
VULKAN_VER: '1.3.268.0'
VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5'
CCACHE_SHA: '1f39f3ad5aae3fe915e99ad1302633bc8f6718e58fa7c0de2b0ba7e080f0f08c'
CCACHE_SHA: '859141059ac950e1e8cd042c66f842f26b9e3a62a1669a69fe6ba180cb58bbdf'
CCACHE_BIN_DIR: 'C:\ccache_bin'
CCACHE_DIR: 'C:\ccache'
CCACHE_INODECACHE: 'true'
@@ -328,16 +329,25 @@ jobs:
Windows_Build_Clang:
# Only run push event on master branch of main repo, but run all PRs
if: github.event_name != 'push' || (github.repository == 'RPCS3/rpcs3' && github.ref_name == 'master')
name: RPCS3 Windows Clang
runs-on: windows-2025
strategy:
fail-fast: false
matrix:
include:
- msys2: clang64
compiler: clang
arch: win64
arch: x86_64
os: windows-2025
name: X64
- msys2: clangarm64
compiler: clang
arch: aarch64
os: windows-11-arm
name: ARM64
env:
CCACHE_DIR: 'C:\ccache'
RELEASE_MESSAGE: ../GitHubReleaseMessage.txt
name: RPCS3 Windows Clang ${{ matrix.arch }}
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@main
@@ -351,23 +361,26 @@ jobs:
update: true
cache: true
install: |
mingw-w64-clang-x86_64-clang
mingw-w64-clang-x86_64-ccache
mingw-w64-clang-x86_64-cmake
mingw-w64-clang-x86_64-lld
mingw-w64-clang-x86_64-ninja
mingw-w64-clang-x86_64-llvm
mingw-w64-clang-x86_64-ffmpeg
mingw-w64-clang-x86_64-opencv
mingw-w64-clang-x86_64-glew
mingw-w64-clang-x86_64-vulkan
mingw-w64-clang-x86_64-vulkan-headers
mingw-w64-clang-x86_64-vulkan-loader
mingw-w64-clang-x86_64-gtest
mingw-w64-clang-x86_64-qt6-base
mingw-w64-clang-x86_64-qt6-declarative
mingw-w64-clang-x86_64-qt6-multimedia
mingw-w64-clang-x86_64-qt6-svg
mingw-w64-clang-${{ matrix.arch }}-clang
mingw-w64-clang-${{ matrix.arch }}-ccache
mingw-w64-clang-${{ matrix.arch }}-cmake
mingw-w64-clang-${{ matrix.arch }}-lld
mingw-w64-clang-${{ matrix.arch }}-ninja
mingw-w64-clang-${{ matrix.arch }}-llvm
mingw-w64-clang-${{ matrix.arch }}-ffmpeg
mingw-w64-clang-${{ matrix.arch }}-opencv
mingw-w64-clang-${{ matrix.arch }}-iconv
mingw-w64-clang-${{ matrix.arch }}-glew
mingw-w64-clang-${{ matrix.arch }}-vulkan
mingw-w64-clang-${{ matrix.arch }}-vulkan-headers
mingw-w64-clang-${{ matrix.arch }}-vulkan-loader
mingw-w64-clang-${{ matrix.arch }}-gtest
mingw-w64-clang-${{ matrix.arch }}-qt6-base
mingw-w64-clang-${{ matrix.arch }}-qt6-declarative
mingw-w64-clang-${{ matrix.arch }}-qt6-multimedia
mingw-w64-clang-${{ matrix.arch }}-qt6-svg
mingw-w64-clang-${{ matrix.arch }}-qt6-tools
mingw-w64-clang-${{ matrix.arch }}-qt6-translations
base-devel
curl
git
@@ -378,8 +391,8 @@ jobs:
id: restore-build-ccache
with:
path: ${{ env.CCACHE_DIR }}
key: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-${{ github.run_id }}
restore-keys: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-
key: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ matrix.arch }}-${{ github.run_id }}
restore-keys: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ matrix.arch }}-
- name: Build RPCS3
shell: msys2 {0}
@@ -387,7 +400,25 @@ jobs:
export CCACHE_DIR=$(cygpath -u "$CCACHE_DIR")
echo "CCACHE_DIR=$CCACHE_DIR"
.ci/setup-windows-ci-vars.sh ${{ matrix.arch }} ${{ matrix.compiler }}
.ci/build-windows-clang.sh
.ci/build-windows-clang.sh ${{ matrix.arch }} ${{ matrix.msys2 }}
- name: Deploy master build to GitHub Releases (only aarch64)
if: |
matrix.arch == 'aarch64' &&
github.event_name != 'pull_request' &&
github.repository == 'RPCS3/rpcs3' &&
github.ref == 'refs/heads/master'
env:
RPCS3_TOKEN: ${{ secrets.RPCS3_TOKEN }}
# We specify it here since this upload is specific to arm64
UPLOAD_COMMIT_HASH: ee05050fd1d8488148a771b526702656a10dacf0
UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-win-arm64"
run: |
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ./rpcs3/rpcs3_version.cpp)
COMM_COUNT=$(git rev-list --count HEAD)
COMM_HASH=$(git rev-parse --short=8 HEAD)
export AVVER="${COMM_TAG}-${COMM_COUNT}"
.ci/github-upload.sh
- name: Save build Ccache
if: github.ref == 'refs/heads/master'
@@ -399,7 +430,7 @@ jobs:
- name: Upload artifacts
uses: actions/upload-artifact@main
with:
name: RPCS3 for Windows (${{ runner.arch }}, ${{ matrix.compiler }})
name: RPCS3 for Windows (${{ matrix.name }}, clang)
path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}
compression-level: 0
if-no-files-found: error
@@ -413,7 +444,11 @@ jobs:
env:
CCACHE_DIR: ${{ github.workspace }}/ccache
QT_VER_MAIN: '6'
LLVM_COMPILER_VER: '19'
LLVM_COMPILER_VER: '-devel'
CC: 'clang-devel'
CXX: 'clang++-devel'
LLVM_CONFIG: 'llvm-config-devel'
steps:
- name: Checkout repository
uses: actions/checkout@main
@@ -432,8 +467,10 @@ jobs:
id: root
uses: vmactions/freebsd-vm@v1
with:
envs: 'QT_VER_MAIN LLVM_COMPILER_VER CCACHE_DIR'
envs: 'QT_VER_MAIN LLVM_COMPILER_VER CCACHE_DIR CC CXX LLVM_CONFIG'
usesh: true
copyback: false
release: "14.3"
run: .ci/install-freebsd.sh && .ci/build-freebsd.sh
- name: Save Build Ccache
+3
View File
@@ -69,6 +69,9 @@ CMakeSettings.json
*PVS-Studio*
PVS/*
# Zed Editor files
.zed/*
# Ignore other system generated files
x64/*
rpcs3/x64/*
+4 -4
View File
@@ -52,10 +52,6 @@
path = 3rdparty/wolfssl/wolfssl
url = ../../wolfSSL/wolfssl.git
ignore = dirty
[submodule "3rdparty/flatbuffers"]
path = 3rdparty/flatbuffers
url = ../../google/flatbuffers.git
ignore = dirty
[submodule "3rdparty/cubeb/cubeb"]
path = 3rdparty/cubeb/cubeb
url = ../../mozilla/cubeb.git
@@ -112,3 +108,7 @@
path = 3rdparty/feralinteractive/feralinteractive
url = ../../FeralInteractive/gamemode.git
ignore = dirty
[submodule "3rdparty/protobuf/protobuf"]
path = 3rdparty/protobuf/protobuf
url = ../../protocolbuffers/protobuf.git
ignore = dirty
+2 -2
View File
@@ -59,11 +59,11 @@ if(WIN32 OR APPLE)
7zip/C/XzEnc.c
7zip/C/XzIn.c
7zip/C/ZstdDec.c)
target_include_directories(3rdparty_7zip INTERFACE
target_include_directories(3rdparty_7zip SYSTEM INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/7zip/C>
$<INSTALL_INTERFACE:/7zip/C>)
target_include_directories(3rdparty_7zip INTERFACE 7zip)
target_include_directories(3rdparty_7zip SYSTEM INTERFACE 7zip)
set_property(TARGET 3rdparty_7zip PROPERTY FOLDER "3rdparty/")
+10 -22
View File
@@ -25,18 +25,8 @@ add_subdirectory(zstd EXCLUDE_FROM_ALL)
# 7zip sdk
add_subdirectory(7zip EXCLUDE_FROM_ALL)
add_library(3rdparty_flatbuffers INTERFACE)
if (USE_SYSTEM_FLATBUFFERS)
pkg_check_modules(FLATBUFFERS REQUIRED IMPORTED_TARGET flatbuffers>=2.0.0)
target_link_libraries(3rdparty_flatbuffers INTERFACE PkgConfig::FLATBUFFERS)
set(FBS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../rpcs3/Emu/NP/generated/")
execute_process(COMMAND flatc --cpp -o "${FBS_DIR}" "${FBS_DIR}/np2_structs.fbs" RESULT_VARIABLE FBS_CMD_ERROR)
if(FBS_CMD_ERROR AND NOT FBS_CMD_ERROR EQUAL 0)
message(FATAL_ERROR "flatc failed to regenerate flatbuffers headers.")
endif()
else()
target_include_directories(3rdparty_flatbuffers INTERFACE flatbuffers/include)
endif()
# Protobuf
add_subdirectory(protobuf EXCLUDE_FROM_ALL)
# libPNG
add_subdirectory(libpng EXCLUDE_FROM_ALL)
@@ -56,7 +46,7 @@ if (USE_SYSTEM_VULKAN_MEMORY_ALLOCATOR)
add_library(3rdparty::vulkanmemoryallocator ALIAS GPUOpen::VulkanMemoryAllocator)
else()
add_library(3rdparty_vulkanmemoryallocator INTERFACE)
target_include_directories(3rdparty_vulkanmemoryallocator INTERFACE GPUOpen/VulkanMemoryAllocator/include)
target_include_directories(3rdparty_vulkanmemoryallocator SYSTEM INTERFACE GPUOpen/VulkanMemoryAllocator/include)
add_library(3rdparty::vulkanmemoryallocator ALIAS 3rdparty_vulkanmemoryallocator)
endif()
@@ -107,11 +97,11 @@ add_subdirectory(yaml-cpp)
# OpenGL
if (NOT ANDROID)
if (NOT ANDROID AND NOT APPLE)
find_package(OpenGL REQUIRED OPTIONAL_COMPONENTS EGL)
add_library(3rdparty_opengl INTERFACE)
target_include_directories(3rdparty_opengl INTERFACE GL)
target_include_directories(3rdparty_opengl SYSTEM INTERFACE GL)
if (WIN32)
if(NOT MSVC)
@@ -119,8 +109,6 @@ if (NOT ANDROID)
else()
target_link_libraries(3rdparty_opengl INTERFACE dxgi.lib d2d1.lib dwrite.lib)
endif()
elseif(APPLE)
target_link_libraries(3rdparty_opengl INTERFACE OpenGL::GL OpenGL::GLU)
else()
target_link_libraries(3rdparty_opengl INTERFACE OpenGL::GL OpenGL::GLU OpenGL::GLX)
endif()
@@ -204,7 +192,7 @@ if(USE_VULKAN)
find_package(Wayland)
if (WAYLAND_FOUND)
target_include_directories(3rdparty_vulkan
INTERFACE ${WAYLAND_INCLUDE_DIR})
SYSTEM INTERFACE ${WAYLAND_INCLUDE_DIR})
endif()
endif()
@@ -298,7 +286,7 @@ if(NOT ANDROID)
message(STATUS "RPCS3: using shared ffmpeg")
find_package(FFMPEG REQUIRED)
target_include_directories(3rdparty_ffmpeg INTERFACE ${FFMPEG_INCLUDE_DIR})
target_include_directories(3rdparty_ffmpeg SYSTEM INTERFACE ${FFMPEG_INCLUDE_DIR})
target_link_libraries(3rdparty_ffmpeg INTERFACE ${FFMPEG_LIBRARIES})
else()
message(STATUS "RPCS3: using builtin ffmpeg")
@@ -328,14 +316,14 @@ if(NOT ANDROID)
${FFMPEG_LIB_SWSCALE}
${FFMPEG_LIB_SWRESAMPLE}
)
target_include_directories(3rdparty_ffmpeg INTERFACE "ffmpeg/include")
target_include_directories(3rdparty_ffmpeg SYSTEM INTERFACE "ffmpeg/include")
endif()
endif()
# GLEW
add_library(3rdparty_glew INTERFACE)
if(NOT MSVC AND NOT ANDROID)
if(NOT MSVC AND NOT ANDROID AND NOT APPLE)
find_package(GLEW REQUIRED)
target_link_libraries(3rdparty_glew INTERFACE GLEW::GLEW)
endif()
@@ -374,7 +362,7 @@ endif()
add_library(3rdparty::zlib ALIAS 3rdparty_zlib)
add_library(3rdparty::zstd ALIAS 3rdparty_zstd)
add_library(3rdparty::7zip ALIAS 3rdparty_7zip)
add_library(3rdparty::flatbuffers ALIAS 3rdparty_flatbuffers)
add_library(3rdparty::protobuf ALIAS 3rdparty_protobuf)
add_library(3rdparty::pugixml ALIAS pugixml)
add_library(3rdparty::glslang ALIAS 3rdparty_glslang)
add_library(3rdparty::yaml-cpp ALIAS yaml-cpp)
+123 -2
View File
@@ -6,7 +6,7 @@ extern "C" {
#endif
/*
** Copyright 2013-2020 The Khronos Group Inc.
** Copyright 2013-2026 The Khronos Group Inc.
** SPDX-License-Identifier: MIT
**
** This header is generated from the Khronos OpenGL / OpenGL ES XML
@@ -32,7 +32,7 @@ extern "C" {
#define GLAPI extern
#endif
#define GL_GLEXT_VERSION 20250203
#define GL_GLEXT_VERSION 20260126
#include <KHR/khrplatform.h>
@@ -7358,6 +7358,47 @@ GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const voi
#endif
#endif /* GL_EXT_fog_coord */
#ifndef GL_EXT_fragment_shading_rate
#define GL_EXT_fragment_shading_rate 1
#define GL_SHADING_RATE_1X1_PIXELS_EXT 0x96A6
#define GL_SHADING_RATE_1X2_PIXELS_EXT 0x96A7
#define GL_SHADING_RATE_2X1_PIXELS_EXT 0x96A8
#define GL_SHADING_RATE_2X2_PIXELS_EXT 0x96A9
#define GL_SHADING_RATE_1X4_PIXELS_EXT 0x96AA
#define GL_SHADING_RATE_4X1_PIXELS_EXT 0x96AB
#define GL_SHADING_RATE_4X2_PIXELS_EXT 0x96AC
#define GL_SHADING_RATE_2X4_PIXELS_EXT 0x96AD
#define GL_SHADING_RATE_4X4_PIXELS_EXT 0x96AE
#define GL_SHADING_RATE_EXT 0x96D0
#define GL_SHADING_RATE_ATTACHMENT_EXT 0x96D1
#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT 0x96D2
#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT 0x96D3
#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_EXT 0x96D4
#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_EXT 0x96D5
#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_EXT 0x96D6
#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D7
#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D8
#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96D9
#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96DA
#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_ASPECT_RATIO_EXT 0x96DB
#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT 0x96DC
#define GL_FRAGMENT_SHADING_RATE_WITH_SHADER_DEPTH_STENCIL_WRITES_SUPPORTED_EXT 0x96DD
#define GL_FRAGMENT_SHADING_RATE_WITH_SAMPLE_MASK_SUPPORTED_EXT 0x96DE
#define GL_FRAGMENT_SHADING_RATE_ATTACHMENT_WITH_DEFAULT_FRAMEBUFFER_SUPPORTED_EXT 0x96DF
#define GL_FRAGMENT_SHADING_RATE_NON_TRIVIAL_COMBINERS_SUPPORTED_EXT 0x8F6F
#define GL_FRAGMENT_SHADING_RATE_PRIMITIVE_RATE_WITH_MULTI_VIEWPORT_SUPPORTED_EXT 0x9780
typedef void (APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC) (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates);
typedef void (APIENTRYP PFNGLSHADINGRATEEXTPROC) (GLenum rate);
typedef void (APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC) (GLenum combinerOp0, GLenum combinerOp1);
typedef void (APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates);
GLAPI void APIENTRY glShadingRateEXT (GLenum rate);
GLAPI void APIENTRY glShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1);
GLAPI void APIENTRY glFramebufferShadingRateEXT (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight);
#endif
#endif /* GL_EXT_fragment_shading_rate */
#ifndef GL_EXT_framebuffer_blit
#define GL_EXT_framebuffer_blit 1
#define GL_READ_FRAMEBUFFER_EXT 0x8CA8
@@ -7816,6 +7857,86 @@ GLAPI void APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GL
#endif
#endif /* GL_EXT_memory_object_win32 */
#ifndef GL_EXT_mesh_shader
#define GL_EXT_mesh_shader 1
#define GL_MESH_SHADER_EXT 0x9559
#define GL_TASK_SHADER_EXT 0x955A
#define GL_MAX_MESH_UNIFORM_BLOCKS_EXT 0x8E60
#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_EXT 0x8E61
#define GL_MAX_MESH_IMAGE_UNIFORMS_EXT 0x8E62
#define GL_MAX_MESH_UNIFORM_COMPONENTS_EXT 0x8E63
#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_EXT 0x8E64
#define GL_MAX_MESH_ATOMIC_COUNTERS_EXT 0x8E65
#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_EXT 0x8E66
#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_EXT 0x8E67
#define GL_MAX_TASK_UNIFORM_BLOCKS_EXT 0x8E68
#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_EXT 0x8E69
#define GL_MAX_TASK_IMAGE_UNIFORMS_EXT 0x8E6A
#define GL_MAX_TASK_UNIFORM_COMPONENTS_EXT 0x8E6B
#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_EXT 0x8E6C
#define GL_MAX_TASK_ATOMIC_COUNTERS_EXT 0x8E6D
#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_EXT 0x8E6E
#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_EXT 0x8E6F
#define GL_MAX_TASK_WORK_GROUP_TOTAL_COUNT_EXT 0x9740
#define GL_MAX_MESH_WORK_GROUP_TOTAL_COUNT_EXT 0x9741
#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_EXT 0x9757
#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_EXT 0x9759
#define GL_MAX_TASK_PAYLOAD_SIZE_EXT 0x9742
#define GL_MAX_TASK_SHARED_MEMORY_SIZE_EXT 0x9743
#define GL_MAX_MESH_SHARED_MEMORY_SIZE_EXT 0x9744
#define GL_MAX_TASK_PAYLOAD_AND_SHARED_MEMORY_SIZE_EXT 0x9745
#define GL_MAX_MESH_PAYLOAD_AND_SHARED_MEMORY_SIZE_EXT 0x9746
#define GL_MAX_MESH_OUTPUT_MEMORY_SIZE_EXT 0x9747
#define GL_MAX_MESH_PAYLOAD_AND_OUTPUT_MEMORY_SIZE_EXT 0x9748
#define GL_MAX_MESH_OUTPUT_VERTICES_EXT 0x9538
#define GL_MAX_MESH_OUTPUT_PRIMITIVES_EXT 0x9756
#define GL_MAX_MESH_OUTPUT_COMPONENTS_EXT 0x9749
#define GL_MAX_MESH_OUTPUT_LAYERS_EXT 0x974A
#define GL_MAX_MESH_MULTIVIEW_VIEW_COUNT_EXT 0x9557
#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_EXT 0x92DF
#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_EXT 0x9543
#define GL_MAX_PREFERRED_TASK_WORK_GROUP_INVOCATIONS_EXT 0x974B
#define GL_MAX_PREFERRED_MESH_WORK_GROUP_INVOCATIONS_EXT 0x974C
#define GL_MESH_PREFERS_LOCAL_INVOCATION_VERTEX_OUTPUT_EXT 0x974D
#define GL_MESH_PREFERS_LOCAL_INVOCATION_PRIMITIVE_OUTPUT_EXT 0x974E
#define GL_MESH_PREFERS_COMPACT_VERTEX_OUTPUT_EXT 0x974F
#define GL_MESH_PREFERS_COMPACT_PRIMITIVE_OUTPUT_EXT 0x9750
#define GL_MAX_TASK_WORK_GROUP_COUNT_EXT 0x9751
#define GL_MAX_MESH_WORK_GROUP_COUNT_EXT 0x9752
#define GL_MAX_MESH_WORK_GROUP_SIZE_EXT 0x9758
#define GL_MAX_TASK_WORK_GROUP_SIZE_EXT 0x975A
#define GL_MESH_WORK_GROUP_SIZE_EXT 0x953E
#define GL_TASK_WORK_GROUP_SIZE_EXT 0x953F
#define GL_MESH_VERTICES_OUT_EXT 0x9579
#define GL_MESH_PRIMITIVES_OUT_EXT 0x957A
#define GL_MESH_OUTPUT_TYPE_EXT 0x957B
#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_EXT 0x959C
#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_EXT 0x959D
#define GL_REFERENCED_BY_MESH_SHADER_EXT 0x95A0
#define GL_REFERENCED_BY_TASK_SHADER_EXT 0x95A1
#define GL_TASK_SHADER_INVOCATIONS_EXT 0x9753
#define GL_MESH_SHADER_INVOCATIONS_EXT 0x9754
#define GL_MESH_PRIMITIVES_GENERATED_EXT 0x9755
#define GL_MESH_SHADER_BIT_EXT 0x00000040
#define GL_TASK_SHADER_BIT_EXT 0x00000080
#define GL_MESH_SUBROUTINE_EXT 0x957C
#define GL_TASK_SUBROUTINE_EXT 0x957D
#define GL_MESH_SUBROUTINE_UNIFORM_EXT 0x957E
#define GL_TASK_SUBROUTINE_UNIFORM_EXT 0x957F
#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_EXT 0x959E
#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_EXT 0x959F
typedef void (APIENTRYP PFNGLDRAWMESHTASKSEXTPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
typedef void (APIENTRYP PFNGLDRAWMESHTASKSINDIRECTEXTPROC) (GLintptr indirect);
typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTEXTPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride);
typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTEXTPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glDrawMeshTasksEXT (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
GLAPI void APIENTRY glDrawMeshTasksIndirectEXT (GLintptr indirect);
GLAPI void APIENTRY glMultiDrawMeshTasksIndirectEXT (GLintptr indirect, GLsizei drawcount, GLsizei stride);
GLAPI void APIENTRY glMultiDrawMeshTasksIndirectCountEXT (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
#endif
#endif /* GL_EXT_mesh_shader */
#ifndef GL_EXT_misc_attribute
#define GL_EXT_misc_attribute 1
#endif /* GL_EXT_misc_attribute */
+2 -2
View File
@@ -11,11 +11,11 @@ add_library(soundtouch STATIC EXCLUDE_FROM_ALL
soundtouch/source/SoundTouch/TDStretch.cpp
)
target_include_directories(soundtouch PRIVATE
target_include_directories(soundtouch SYSTEM PRIVATE
soundtouch/source/SoundTouch
soundtouch/include)
target_include_directories(soundtouch INTERFACE
target_include_directories(soundtouch SYSTEM INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/soundtouch/include>
$<INSTALL_INTERFACE:/soundtouch/include>)
+1 -1
View File
@@ -9,7 +9,7 @@ set(ASMJIT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/asmjit" CACHE PATH "Location of 'asm
include("${ASMJIT_DIR}/CMakeLists.txt")
add_library(asmjit ${ASMJIT_SRC})
target_include_directories(asmjit PUBLIC ${ASMJIT_DIR}/src)
target_include_directories(asmjit SYSTEM PUBLIC ${ASMJIT_DIR}/src)
target_link_libraries(asmjit PRIVATE ${ASMJIT_DEPS})
# ASMJIT should have a option for disabling installing and this wouldnt
-3
View File
@@ -18,9 +18,6 @@ else()
set(USE_LIBIDN2 OFF CACHE BOOL "Use libidn2 for IDN support") # Disabled because MacOS CI doesn't work otherwise
set(CURL_CA_PATH "none" CACHE STRING "Location of default CA path. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.")
option(CURL_DISABLE_INSTALL "Disable installation targets" ON)
if(USE_MSVC_STATIC_CRT)
set(CURL_STATIC_CRT ON CACHE BOOL "Use static crt to build curl")
endif()
if(WIN32)
set(ENABLE_UNICODE ON CACHE BOOL "enable Unicode")
endif()
+14 -14
View File
@@ -79,12 +79,16 @@
<ClCompile Include="curl\lib\cookie.c" />
<ClCompile Include="curl\lib\cshutdn.c" />
<ClCompile Include="curl\lib\curlx\base64.c" />
<ClCompile Include="curl\lib\curlx\basename.c" />
<ClCompile Include="curl\lib\curlx\dynbuf.c" />
<ClCompile Include="curl\lib\curlx\fopen.c" />
<ClCompile Include="curl\lib\curlx\inet_ntop.c" />
<ClCompile Include="curl\lib\curlx\inet_pton.c" />
<ClCompile Include="curl\lib\curlx\multibyte.c" />
<ClCompile Include="curl\lib\curlx\nonblock.c" />
<ClCompile Include="curl\lib\curlx\snprintf.c" />
<ClCompile Include="curl\lib\curlx\strcopy.c" />
<ClCompile Include="curl\lib\curlx\strdup.c" />
<ClCompile Include="curl\lib\curlx\strerr.c" />
<ClCompile Include="curl\lib\curlx\strparse.c" />
<ClCompile Include="curl\lib\curlx\timediff.c" />
@@ -106,6 +110,7 @@
<ClCompile Include="curl\lib\curl_rtmp.c" />
<ClCompile Include="curl\lib\curl_sasl.c" />
<ClCompile Include="curl\lib\curl_sha512_256.c" />
<ClCompile Include="curl\lib\curl_share.c" />
<ClCompile Include="curl\lib\curl_sspi.c" />
<ClCompile Include="curl\lib\curl_threads.c" />
<ClCompile Include="curl\lib\curl_trc.c" />
@@ -169,14 +174,13 @@
<ClCompile Include="curl\lib\progress.c" />
<ClCompile Include="curl\lib\psl.c" />
<ClCompile Include="curl\lib\rand.c" />
<ClCompile Include="curl\lib\rename.c" />
<ClCompile Include="curl\lib\ratelimit.c" />
<ClCompile Include="curl\lib\request.c" />
<ClCompile Include="curl\lib\rtsp.c" />
<ClCompile Include="curl\lib\select.c" />
<ClCompile Include="curl\lib\sendf.c" />
<ClCompile Include="curl\lib\setopt.c" />
<ClCompile Include="curl\lib\sha256.c" />
<ClCompile Include="curl\lib\share.c" />
<ClCompile Include="curl\lib\slist.c" />
<ClCompile Include="curl\lib\smb.c" />
<ClCompile Include="curl\lib\smtp.c" />
@@ -184,10 +188,8 @@
<ClCompile Include="curl\lib\socks.c" />
<ClCompile Include="curl\lib\socks_gssapi.c" />
<ClCompile Include="curl\lib\socks_sspi.c" />
<ClCompile Include="curl\lib\speedcheck.c" />
<ClCompile Include="curl\lib\splay.c" />
<ClCompile Include="curl\lib\strcase.c" />
<ClCompile Include="curl\lib\strdup.c" />
<ClCompile Include="curl\lib\strequal.c" />
<ClCompile Include="curl\lib\strerror.c" />
<ClCompile Include="curl\lib\system_win32.c" />
@@ -204,6 +206,7 @@
<ClCompile Include="curl\lib\version.c" />
<ClCompile Include="curl\lib\vquic\curl_ngtcp2.c" />
<ClCompile Include="curl\lib\vquic\curl_quiche.c" />
<ClCompile Include="curl\lib\vssh\vssh.c" />
<ClCompile Include="curl\lib\vtls\apple.c" />
<ClCompile Include="curl\lib\vtls\cipher_suite.c" />
<ClCompile Include="curl\lib\vtls\hostcheck.c" />
@@ -224,13 +227,11 @@
<ClCompile Include="curl\lib\vauth\spnego_sspi.c" />
<ClCompile Include="curl\lib\vauth\vauth.c" />
<ClCompile Include="curl\lib\vquic\vquic.c" />
<ClCompile Include="curl\lib\vssh\curl_path.c" />
<ClCompile Include="curl\lib\vssh\libssh.c" />
<ClCompile Include="curl\lib\vssh\libssh2.c" />
<ClCompile Include="curl\lib\vtls\gtls.c" />
<ClCompile Include="curl\lib\vtls\keylog.c" />
<ClCompile Include="curl\lib\vtls\mbedtls.c" />
<ClCompile Include="curl\lib\vtls\mbedtls_threadlock.c" />
<ClCompile Include="curl\lib\vtls\openssl.c" />
<ClCompile Include="curl\lib\vtls\schannel.c" />
<ClCompile Include="curl\lib\vtls\schannel_verify.c" />
@@ -272,6 +273,7 @@
<ClInclude Include="curl\lib\cookie.h" />
<ClInclude Include="curl\lib\cshutdn.h" />
<ClInclude Include="curl\lib\curlx\base64.h" />
<ClInclude Include="curl\lib\curlx\basename.h" />
<ClInclude Include="curl\lib\curlx\binmode.h" />
<ClInclude Include="curl\lib\curlx\curlx.h" />
<ClInclude Include="curl\lib\curlx\dynbuf.h" />
@@ -280,6 +282,9 @@
<ClInclude Include="curl\lib\curlx\inet_pton.h" />
<ClInclude Include="curl\lib\curlx\multibyte.h" />
<ClInclude Include="curl\lib\curlx\nonblock.h" />
<ClInclude Include="curl\lib\curlx\snprintf.h" />
<ClInclude Include="curl\lib\curlx\strcopy.h" />
<ClInclude Include="curl\lib\curlx\strdup.h" />
<ClInclude Include="curl\lib\curlx\strerr.h" />
<ClInclude Include="curl\lib\curlx\strparse.h" />
<ClInclude Include="curl\lib\curlx\timediff.h" />
@@ -300,9 +305,7 @@
<ClInclude Include="curl\lib\curl_ldap.h" />
<ClInclude Include="curl\lib\curl_md4.h" />
<ClInclude Include="curl\lib\curl_md5.h" />
<ClInclude Include="curl\lib\curl_memory.h" />
<ClInclude Include="curl\lib\curl_memrchr.h" />
<ClInclude Include="curl\lib\curl_mem_undef.h" />
<ClInclude Include="curl\lib\curl_ntlm_core.h" />
<ClInclude Include="curl\lib\curl_printf.h" />
<ClInclude Include="curl\lib\curl_range.h" />
@@ -312,6 +315,7 @@
<ClInclude Include="curl\lib\curl_setup_once.h" />
<ClInclude Include="curl\lib\curl_sha256.h" />
<ClInclude Include="curl\lib\curl_sha512_256.h" />
<ClInclude Include="curl\lib\curl_share.h" />
<ClInclude Include="curl\lib\curl_sspi.h" />
<ClInclude Include="curl\lib\curl_threads.h" />
<ClInclude Include="curl\lib\curl_trc.h" />
@@ -352,7 +356,6 @@
<ClInclude Include="curl\lib\imap.h" />
<ClInclude Include="curl\lib\llist.h" />
<ClInclude Include="curl\lib\macos.h" />
<ClInclude Include="curl\lib\memdebug.h" />
<ClInclude Include="curl\lib\mime.h" />
<ClInclude Include="curl\lib\mqtt.h" />
<ClInclude Include="curl\lib\multihandle.h" />
@@ -367,7 +370,7 @@
<ClInclude Include="curl\lib\progress.h" />
<ClInclude Include="curl\lib\psl.h" />
<ClInclude Include="curl\lib\rand.h" />
<ClInclude Include="curl\lib\rename.h" />
<ClInclude Include="curl\lib\ratelimit.h" />
<ClInclude Include="curl\lib\request.h" />
<ClInclude Include="curl\lib\rtsp.h" />
<ClInclude Include="curl\lib\select.h" />
@@ -376,7 +379,6 @@
<ClInclude Include="curl\lib\setup-os400.h" />
<ClInclude Include="curl\lib\setup-vms.h" />
<ClInclude Include="curl\lib\setup-win32.h" />
<ClInclude Include="curl\lib\share.h" />
<ClInclude Include="curl\lib\sigpipe.h" />
<ClInclude Include="curl\lib\slist.h" />
<ClInclude Include="curl\lib\smb.h" />
@@ -384,7 +386,6 @@
<ClInclude Include="curl\lib\sockaddr.h" />
<ClInclude Include="curl\lib\socketpair.h" />
<ClInclude Include="curl\lib\socks.h" />
<ClInclude Include="curl\lib\speedcheck.h" />
<ClInclude Include="curl\lib\splay.h" />
<ClInclude Include="curl\lib\strcase.h" />
<ClInclude Include="curl\lib\strdup.h" />
@@ -405,6 +406,7 @@
<ClInclude Include="curl\lib\vquic\curl_ngtcp2.h" />
<ClInclude Include="curl\lib\vquic\curl_quiche.h" />
<ClInclude Include="curl\lib\vquic\vquic_int.h" />
<ClInclude Include="curl\lib\vssh\vssh.h" />
<ClInclude Include="curl\lib\vtls\apple.h" />
<ClInclude Include="curl\lib\vtls\cipher_suite.h" />
<ClInclude Include="curl\lib\vtls\hostcheck.h" />
@@ -418,12 +420,10 @@
<ClInclude Include="curl\lib\vauth\ntlm.h" />
<ClInclude Include="curl\lib\vauth\vauth.h" />
<ClInclude Include="curl\lib\vquic\vquic.h" />
<ClInclude Include="curl\lib\vssh\curl_path.h" />
<ClInclude Include="curl\lib\vssh\ssh.h" />
<ClInclude Include="curl\lib\vtls\gtls.h" />
<ClInclude Include="curl\lib\vtls\keylog.h" />
<ClInclude Include="curl\lib\vtls\mbedtls.h" />
<ClInclude Include="curl\lib\vtls\mbedtls_threadlock.h" />
<ClInclude Include="curl\lib\vtls\openssl.h" />
<ClInclude Include="curl\lib\vtls\schannel.h" />
<ClInclude Include="curl\lib\vtls\vtls.h" />
+42 -42
View File
@@ -204,9 +204,6 @@
<ClCompile Include="curl\lib\rand.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\rename.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\rtsp.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -222,9 +219,6 @@
<ClCompile Include="curl\lib\sha256.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\share.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\slist.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -246,18 +240,12 @@
<ClCompile Include="curl\lib\socks_sspi.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\speedcheck.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\splay.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\strcase.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\strdup.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\strerror.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -318,9 +306,6 @@
<ClCompile Include="curl\lib\vauth\vauth.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vssh\curl_path.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vssh\libssh.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -333,9 +318,6 @@
<ClCompile Include="curl\lib\vtls\mbedtls.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vtls\mbedtls_threadlock.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vtls\openssl.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -549,6 +531,27 @@
<ClCompile Include="curl\lib\curlx\strerr.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curlx\strcopy.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vssh\vssh.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curl_share.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\ratelimit.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curlx\basename.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curlx\snprintf.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curlx\strdup.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="curl\include\curl\curl.h">
@@ -653,9 +656,6 @@
<ClInclude Include="curl\lib\curl_md5.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curl_memory.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curl_memrchr.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -758,9 +758,6 @@
<ClInclude Include="curl\lib\llist.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\memdebug.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\mime.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -791,9 +788,6 @@
<ClInclude Include="curl\lib\rand.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\rename.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\rtsp.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -812,9 +806,6 @@
<ClInclude Include="curl\lib\setup-vms.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\share.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\sigpipe.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -836,9 +827,6 @@
<ClInclude Include="curl\lib\socks.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\speedcheck.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\splay.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -887,9 +875,6 @@
<ClInclude Include="curl\lib\vauth\vauth.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\vssh\curl_path.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\vssh\ssh.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -899,9 +884,6 @@
<ClInclude Include="curl\lib\vtls\mbedtls.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\vtls\mbedtls_threadlock.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\vtls\openssl.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -1103,9 +1085,6 @@
<ClInclude Include="curl\lib\cf-ip-happy.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curl_mem_undef.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curl_fopen.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -1121,6 +1100,27 @@
<ClInclude Include="curl\lib\curlx\strerr.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curlx\snprintf.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curlx\strcopy.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\vssh\vssh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curl_share.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\ratelimit.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curlx\basename.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curlx\strdup.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="curl\lib\libcurl.rc">
+1 -1
View File
@@ -9,7 +9,7 @@ if (USE_DISCORD_RPC AND (WIN32 OR CMAKE_SYSTEM MATCHES "Linux" OR APPLE))
set(WARNINGS_AS_ERRORS FALSE CACHE BOOL "When enabled, compiles with `-Werror` (on *nix platforms).")
add_subdirectory(discord-rpc EXCLUDE_FROM_ALL)
target_include_directories(3rdparty_discordRPC INTERFACE discord-rpc/include)
target_include_directories(3rdparty_discordRPC SYSTEM INTERFACE discord-rpc/include)
target_compile_definitions(3rdparty_discordRPC INTERFACE -DWITH_DISCORD_RPC)
target_link_libraries(3rdparty_discordRPC INTERFACE discord-rpc)
endif()
+1 -1
View File
@@ -3,7 +3,7 @@
add_library(3rdparty_feralinteractive INTERFACE)
if (CMAKE_SYSTEM MATCHES "Linux")
target_include_directories(3rdparty_feralinteractive INTERFACE feralinteractive/lib)
target_include_directories(3rdparty_feralinteractive SYSTEM INTERFACE feralinteractive/lib)
target_compile_definitions(3rdparty_feralinteractive INTERFACE -DGAMEMODE_AVAILABLE)
target_link_libraries(3rdparty_feralinteractive INTERFACE feralinteractive)
endif()
Submodule 3rdparty/flatbuffers deleted from 595bf0007a
+1 -1
View File
@@ -7,7 +7,7 @@ if(USE_SYSTEM_GLSLANG)
target_link_libraries(3rdparty_glslang INTERFACE glslang::SPIRV)
get_target_property(SPIRV_INCLUDE_DIRS glslang::SPIRV INTERFACE_INCLUDE_DIRECTORIES)
list(TRANSFORM SPIRV_INCLUDE_DIRS APPEND "/glslang")
target_include_directories(3rdparty_glslang INTERFACE ${SPIRV_INCLUDE_DIRS})
target_include_directories(3rdparty_glslang SYSTEM INTERFACE ${SPIRV_INCLUDE_DIRS})
else()
set(ENABLE_PCH OFF CACHE BOOL "Enables Precompiled header" FORCE)
set(BUILD_EXTERNAL OFF CACHE BOOL "Build external dependencies in /External" FORCE)
+1 -1
View File
@@ -4,7 +4,7 @@ if(USE_SYSTEM_HIDAPI)
pkg_check_modules(hidapi-hidraw REQUIRED IMPORTED_TARGET hidapi-hidraw)
add_library(3rdparty_hidapi INTERFACE)
target_link_libraries(3rdparty_hidapi INTERFACE PkgConfig::hidapi-hidraw)
target_include_directories(3rdparty_hidapi INTERFACE PkgConfig::hidapi-hidraw)
target_include_directories(3rdparty_hidapi SYSTEM INTERFACE PkgConfig::hidapi-hidraw)
else()
set(BUILD_SHARED_LIBS FALSE CACHE BOOL "Don't build shared libs")
set(HIDAPI_INSTALL_TARGETS FALSE CACHE BOOL "Don't install anything")
+2 -2
View File
@@ -6,14 +6,14 @@ if (NOT USE_SYSTEM_LIBPNG)
set(PNG_TESTS OFF CACHE BOOL "Build libpng tests")
set(SKIP_INSTALL_ALL ON)
add_subdirectory(libpng EXCLUDE_FROM_ALL)
target_include_directories(png_static INTERFACE "${libpng_BINARY_DIR}" "${libpng_SOURCE_DIR}")
target_include_directories(png_static SYSTEM INTERFACE "${libpng_BINARY_DIR}" "${libpng_SOURCE_DIR}")
set(LIBPNG_TARGET png_static PARENT_SCOPE)
else()
find_package(PNG REQUIRED)
add_library(3rdparty_system_libpng INTERFACE)
target_include_directories(3rdparty_system_libpng INTERFACE ${PNG_INCLUDE_DIR})
target_include_directories(3rdparty_system_libpng SYSTEM INTERFACE ${PNG_INCLUDE_DIR})
target_link_libraries(3rdparty_system_libpng INTERFACE ${PNG_LIBRARY})
target_compile_definitions(3rdparty_system_libpng INTERFACE ${PNG_DEFINITIONS})
+29 -7
View File
@@ -23,6 +23,7 @@
<ClInclude Include="SDL\include\SDL3\SDL_clipboard.h" />
<ClInclude Include="SDL\include\SDL3\SDL_copying.h" />
<ClInclude Include="SDL\include\SDL3\SDL_cpuinfo.h" />
<ClInclude Include="SDL\include\SDL3\SDL_dlopennote.h" />
<ClInclude Include="SDL\include\SDL3\SDL_egl.h" />
<ClInclude Include="SDL\include\SDL3\SDL_endian.h" />
<ClInclude Include="SDL\include\SDL3\SDL_error.h" />
@@ -102,6 +103,7 @@
<ClInclude Include="SDL\src\audio\wasapi\SDL_wasapi.h" />
<ClInclude Include="SDL\src\camera\SDL_camera_c.h" />
<ClInclude Include="SDL\src\camera\SDL_syscamera.h" />
<ClInclude Include="SDL\src\core\SDL_core_unsupported.h" />
<ClInclude Include="SDL\src\core\windows\SDL_directx.h" />
<ClInclude Include="SDL\src\core\windows\SDL_gameinput.h" />
<ClInclude Include="SDL\src\core\windows\SDL_hid.h" />
@@ -130,6 +132,8 @@
<ClInclude Include="SDL\src\filesystem\SDL_sysfilesystem.h" />
<ClInclude Include="SDL\src\gpu\SDL_sysgpu.h" />
<ClInclude Include="SDL\src\gpu\vulkan\SDL_gpu_vulkan_vkfuncs.h" />
<ClInclude Include="SDL\src\haptic\hidapi\SDL_hidapihaptic.h" />
<ClInclude Include="SDL\src\haptic\hidapi\SDL_hidapihaptic_c.h" />
<ClInclude Include="SDL\src\io\SDL_asyncio_c.h" />
<ClInclude Include="SDL\src\io\SDL_sysasyncio.h" />
<ClInclude Include="SDL\src\haptic\SDL_haptic_c.h" />
@@ -140,7 +144,11 @@
<ClInclude Include="SDL\src\hidapi\SDL_hidapi_c.h" />
<ClInclude Include="SDL\src\joystick\controller_type.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapijoystick_c.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_flydigi.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_nintendo.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_rumble.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_sinput.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_report_descriptor.h" />
<ClInclude Include="SDL\src\joystick\SDL_gamepad_c.h" />
<ClInclude Include="SDL\src\joystick\SDL_gamepad_db.h" />
<ClInclude Include="SDL\src\joystick\SDL_joystick_c.h" />
@@ -156,6 +164,7 @@
<ClInclude Include="SDL\src\libm\math_private.h" />
<ClInclude Include="SDL\src\locale\SDL_syslocale.h" />
<ClInclude Include="SDL\src\main\SDL_main_callbacks.h" />
<ClInclude Include="SDL\src\misc\SDL_libusb.h" />
<ClInclude Include="SDL\src\misc\SDL_sysurl.h" />
<ClInclude Include="SDL\src\power\SDL_syspower.h" />
<ClInclude Include="SDL\src\render\direct3d11\SDL_shaders_d3d11.h" />
@@ -175,7 +184,6 @@
<ClInclude Include="SDL\src\render\software\SDL_drawline.h" />
<ClInclude Include="SDL\src\render\software\SDL_drawpoint.h" />
<ClInclude Include="SDL\src\render\software\SDL_render_sw_c.h" />
<ClInclude Include="SDL\src\render\software\SDL_rotate.h" />
<ClInclude Include="SDL\src\render\software\SDL_triangle.h" />
<ClInclude Include="SDL\src\render\vulkan\SDL_shaders_vulkan.h" />
<ClInclude Include="SDL\src\SDL_assert_c.h" />
@@ -184,20 +192,35 @@
<ClCompile Include="SDL\src\camera\dummy\SDL_camera_dummy.c" />
<ClCompile Include="SDL\src\camera\mediafoundation\SDL_camera_mediafoundation.c" />
<ClCompile Include="SDL\src\camera\SDL_camera.c" />
<ClCompile Include="SDL\src\core\windows\pch_cpp.cpp" />
<ClCompile Include="SDL\src\core\windows\SDL_gameinput.cpp" />
<ClCompile Include="SDL\src\dialog\SDL_dialog.c" />
<ClCompile Include="SDL\src\dialog\SDL_dialog_utils.c" />
<ClCompile Include="SDL\src\filesystem\SDL_filesystem.c" />
<ClCompile Include="SDL\src\filesystem\windows\SDL_sysfsops.c" />
<ClCompile Include="SDL\src\haptic\hidapi\SDL_hidapihaptic.c" />
<ClCompile Include="SDL\src\haptic\hidapi\SDL_hidapihaptic_lg4ff.c" />
<ClCompile Include="SDL\src\io\windows\SDL_asyncio_windows_ioring.c" />
<ClCompile Include="SDL\src\gpu\SDL_gpu.c" />
<ClCompile Include="SDL\src\gpu\d3d12\SDL_gpu_d3d12.c" />
<ClCompile Include="SDL\src\gpu\vulkan\SDL_gpu_vulkan.c" />
<ClCompile Include="SDL\src\io\generic\SDL_asyncio_generic.c" />
<ClCompile Include="SDL\src\io\SDL_asyncio.c" />
<ClCompile Include="SDL\src\joystick\gdk\SDL_gameinputjoystick.cpp" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_8bitdo.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_flydigi.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_gip.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_lg4ff.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_sinput.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_steam_triton.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_switch2.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_zuiki.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_report_descriptor.c" />
<ClCompile Include="SDL\src\main\generic\SDL_sysmain_callbacks.c" />
<ClCompile Include="SDL\src\main\SDL_main_callbacks.c" />
<ClCompile Include="SDL\src\main\SDL_runapp.c" />
<ClCompile Include="SDL\src\main\windows\SDL_sysmain_runapp.c" />
<ClCompile Include="SDL\src\misc\SDL_libusb.c" />
<ClCompile Include="SDL\src\render\vulkan\SDL_render_vulkan.c" />
<ClCompile Include="SDL\src\render\vulkan\SDL_shaders_vulkan.c" />
<ClCompile Include="SDL\src\SDL_guid.c" />
@@ -241,6 +264,7 @@
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xcb.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xlib.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xlib_xrandr.h" />
<ClInclude Include="SDL\src\video\miniz.h" />
<ClInclude Include="SDL\src\video\offscreen\SDL_offscreenevents_c.h" />
<ClInclude Include="SDL\src\video\offscreen\SDL_offscreenframebuffer_c.h" />
<ClInclude Include="SDL\src\video\offscreen\SDL_offscreenopengles.h" />
@@ -256,13 +280,14 @@
<ClInclude Include="SDL\src\video\SDL_pixels_c.h" />
<ClInclude Include="SDL\src\video\SDL_rect_c.h" />
<ClInclude Include="SDL\src\video\SDL_RLEaccel_c.h" />
<ClInclude Include="SDL\src\video\SDL_rotate.h" />
<ClInclude Include="SDL\src\video\SDL_stb_c.h" />
<ClInclude Include="SDL\src\video\SDL_surface_c.h" />
<ClInclude Include="SDL\src\video\SDL_sysvideo.h" />
<ClInclude Include="SDL\src\video\SDL_video_unsupported.h" />
<ClInclude Include="SDL\src\video\SDL_vulkan_internal.h" />
<ClInclude Include="SDL\src\video\SDL_yuv_c.h" />
<ClInclude Include="SDL\src\video\windows\SDL_msctf.h" />
<ClInclude Include="SDL\src\video\windows\SDL_surface_utils.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsclipboard.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsevents.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsframebuffer.h" />
@@ -303,7 +328,6 @@
<ClCompile Include="SDL\src\audio\SDL_wave.c" />
<ClCompile Include="SDL\src\audio\wasapi\SDL_wasapi.c" />
<ClCompile Include="SDL\src\core\SDL_core_unsupported.c" />
<ClCompile Include="SDL\src\core\windows\SDL_gameinput.c" />
<ClCompile Include="SDL\src\core\windows\SDL_hid.c" />
<ClCompile Include="SDL\src\core\windows\SDL_immdevice.c" />
<ClCompile Include="SDL\src\core\windows\SDL_windows.c" />
@@ -333,7 +357,6 @@
<ClCompile Include="SDL\src\hidapi\SDL_hidapi.c" />
<ClCompile Include="SDL\src\joystick\controller_type.c" />
<ClCompile Include="SDL\src\joystick\dummy\SDL_sysjoystick.c" />
<ClCompile Include="SDL\src\joystick\gdk\SDL_gameinputjoystick.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapijoystick.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_combined.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_gamecube.c" />
@@ -393,7 +416,6 @@
<ClCompile Include="SDL\src\render\software\SDL_drawline.c" />
<ClCompile Include="SDL\src\render\software\SDL_drawpoint.c" />
<ClCompile Include="SDL\src\render\software\SDL_render_sw.c" />
<ClCompile Include="SDL\src\render\software\SDL_rotate.c" />
<ClCompile Include="SDL\src\render\software\SDL_triangle.c" />
<ClCompile Include="SDL\src\SDL.c" />
<ClCompile Include="SDL\src\SDL_assert.c" />
@@ -464,6 +486,7 @@
<ClCompile Include="SDL\src\video\SDL_pixels.c" />
<ClCompile Include="SDL\src\video\SDL_rect.c" />
<ClCompile Include="SDL\src\video\SDL_RLEaccel.c" />
<ClCompile Include="SDL\src\video\SDL_rotate.c" />
<ClCompile Include="SDL\src\video\SDL_stb.c" />
<ClCompile Include="SDL\src\video\SDL_stretch.c" />
<ClCompile Include="SDL\src\video\SDL_surface.c" />
@@ -471,12 +494,11 @@
<ClCompile Include="SDL\src\video\SDL_video_unsupported.c" />
<ClCompile Include="SDL\src\video\SDL_vulkan_utils.c" />
<ClCompile Include="SDL\src\video\SDL_yuv.c" />
<ClCompile Include="SDL\src\video\windows\SDL_surface_utils.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsclipboard.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsevents.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsframebuffer.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsgameinput.cpp" />
<ClCompile Include="SDL\src\video\windows\SDL_windowskeyboard.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsgameinput.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsmessagebox.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsmodes.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsmouse.c" />
+117 -30
View File
@@ -214,6 +214,9 @@
<Filter Include="io\windows">
<UniqueIdentifier>{000028b2ea36d7190d13777a4dc70000}</UniqueIdentifier>
</Filter>
<Filter Include="haptic\hidapi">
<UniqueIdentifier>{695ffc61-5497-4227-b415-15e9bdd5b6bf}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="SDL\include\SDL3\SDL_begin_code.h">
@@ -699,9 +702,6 @@
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_std_func.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\windows\SDL_surface_utils.h">
<Filter>video\windows</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\windows\SDL_windowsclipboard.h">
<Filter>video\windows</Filter>
</ClInclude>
@@ -831,9 +831,6 @@
<ClInclude Include="SDL\src\render\software\SDL_render_sw_c.h">
<Filter>render\software</Filter>
</ClInclude>
<ClInclude Include="SDL\src\render\software\SDL_rotate.h">
<Filter>render\software</Filter>
</ClInclude>
<ClInclude Include="SDL\src\render\software\SDL_triangle.h">
<Filter>render\software</Filter>
</ClInclude>
@@ -911,12 +908,6 @@
<ClInclude Include="SDL\src\hidapi\SDL_hidapi_c.h" />
<ClInclude Include="SDL\src\thread\generic\SDL_sysrwlock_c.h" />
<ClInclude Include="SDL\src\thread\generic\SDL_sysrwlock_c.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_common.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_internal.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_lsx.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_lsx_func.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_sse.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_std.h" />
<ClInclude Include="SDL\src\render\vulkan\SDL_shaders_vulkan.h">
<Filter>render\vulkan</Filter>
</ClInclude>
@@ -950,6 +941,60 @@
<ClInclude Include="SDL\include\SDL3\SDL_storage.h" />
<ClInclude Include="SDL\include\SDL3\SDL_time.h" />
<ClInclude Include="SDL\src\events\SDL_categories_c.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_std.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_common.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_internal.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_lsx.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_lsx_func.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_sse.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\miniz.h">
<Filter>video</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\SDL_rotate.h">
<Filter>video</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\SDL_video_unsupported.h">
<Filter>video</Filter>
</ClInclude>
<ClInclude Include="SDL\src\misc\SDL_libusb.h">
<Filter>misc</Filter>
</ClInclude>
<ClInclude Include="SDL\src\haptic\hidapi\SDL_hidapihaptic.h">
<Filter>haptic\hidapi</Filter>
</ClInclude>
<ClInclude Include="SDL\src\haptic\hidapi\SDL_hidapihaptic_c.h">
<Filter>haptic\hidapi</Filter>
</ClInclude>
<ClInclude Include="SDL\src\core\SDL_core_unsupported.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_flydigi.h">
<Filter>joystick\hidapi</Filter>
</ClInclude>
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_nintendo.h">
<Filter>joystick\hidapi</Filter>
</ClInclude>
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_sinput.h">
<Filter>joystick\hidapi</Filter>
</ClInclude>
<ClInclude Include="SDL\src\joystick\hidapi\SDL_report_descriptor.h">
<Filter>joystick\hidapi</Filter>
</ClInclude>
<ClInclude Include="SDL\include\SDL3\SDL_dlopennote.h">
<Filter>API Headers</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="SDL\src\audio\wasapi\SDL_wasapi.c" />
@@ -1037,9 +1082,6 @@
<ClCompile Include="SDL\src\core\SDL_core_unsupported.c">
<Filter>core</Filter>
</ClCompile>
<ClCompile Include="SDL\src\core\windows\SDL_gameinput.c">
<Filter>core\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\core\windows\SDL_hid.c">
<Filter>core\windows</Filter>
</ClCompile>
@@ -1166,9 +1208,6 @@
<ClCompile Include="SDL\src\joystick\dummy\SDL_sysjoystick.c">
<Filter>joystick\dummy</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\gdk\SDL_gameinputjoystick.c">
<Filter>joystick\gdk</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_combined.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
@@ -1328,9 +1367,6 @@
<ClCompile Include="SDL\src\video\dummy\SDL_nullvideo.c">
<Filter>video\dummy</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\windows\SDL_surface_utils.c">
<Filter>video\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\windows\SDL_windowsclipboard.c">
<Filter>video\windows</Filter>
</ClCompile>
@@ -1343,9 +1379,6 @@
<ClCompile Include="SDL\src\video\windows\SDL_windowskeyboard.c">
<Filter>video\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\windows\SDL_windowsgameinput.c">
<Filter>video\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\windows\SDL_windowsmessagebox.c">
<Filter>video\windows</Filter>
</ClCompile>
@@ -1508,9 +1541,6 @@
<ClCompile Include="SDL\src\render\software\SDL_render_sw.c">
<Filter>render\software</Filter>
</ClCompile>
<ClCompile Include="SDL\src\render\software\SDL_rotate.c">
<Filter>render\software</Filter>
</ClCompile>
<ClCompile Include="SDL\src\render\software\SDL_triangle.c">
<Filter>render\software</Filter>
</ClCompile>
@@ -1535,9 +1565,6 @@
</ClCompile>
<ClCompile Include="SDL\src\thread\generic\SDL_sysrwlock.c" />
<ClCompile Include="SDL\src\thread\generic\SDL_sysrwlock.c" />
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb_lsx.c" />
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb_sse.c" />
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb_std.c" />
<ClCompile Include="SDL\src\render\vulkan\SDL_render_vulkan.c">
<Filter>render\vulkan</Filter>
</ClCompile>
@@ -1579,6 +1606,66 @@
<ClCompile Include="SDL\src\storage\generic\SDL_genericstorage.c" />
<ClCompile Include="SDL\src\storage\steam\SDL_steamstorage.c" />
<ClCompile Include="SDL\src\storage\SDL_storage.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsgameinput.cpp">
<Filter>video\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb_lsx.c">
<Filter>video\yuv2rgb</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb_sse.c">
<Filter>video\yuv2rgb</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb_std.c">
<Filter>video\yuv2rgb</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\SDL_rotate.c">
<Filter>video</Filter>
</ClCompile>
<ClCompile Include="SDL\src\misc\SDL_libusb.c">
<Filter>misc</Filter>
</ClCompile>
<ClCompile Include="SDL\src\haptic\hidapi\SDL_hidapihaptic.c">
<Filter>haptic\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\haptic\hidapi\SDL_hidapihaptic_lg4ff.c">
<Filter>haptic\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\core\windows\pch_cpp.cpp">
<Filter>core\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\core\windows\SDL_gameinput.cpp">
<Filter>core\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\gdk\SDL_gameinputjoystick.cpp">
<Filter>joystick\gdk</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_8bitdo.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_flydigi.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_gip.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_lg4ff.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_sinput.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_steam_triton.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_switch2.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_zuiki.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_report_descriptor.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="SDL\src\core\windows\version.rc" />
+1 -1
View File
@@ -107,7 +107,7 @@ if(WITH_LLVM)
add_library(3rdparty_llvm INTERFACE)
target_link_libraries(3rdparty_llvm INTERFACE ${LLVM_LIBS})
target_include_directories(3rdparty_llvm INTERFACE ${LLVM_INCLUDE_DIRS})
target_include_directories(3rdparty_llvm SYSTEM INTERFACE ${LLVM_INCLUDE_DIRS})
separate_arguments(LLVM_DEFINITIONS_LIST NATIVE_COMMAND ${LLVM_DEFINITIONS})
target_compile_definitions(3rdparty_llvm INTERFACE ${LLVM_DEFINITIONS_LIST} LLVM_AVAILABLE)
+3 -3
View File
@@ -3,9 +3,9 @@ if(USE_SYSTEM_MINIUPNPC)
pkg_check_modules(MiniUPnPc REQUIRED IMPORTED_TARGET miniupnpc>=2.3.3)
add_library(3rdparty_miniupnpc INTERFACE)
target_link_libraries(3rdparty_miniupnpc INTERFACE PkgConfig::MiniUPnPc)
target_include_directories(3rdparty_miniupnpc INTERFACE PkgConfig::MiniUPnPc)
target_include_directories(3rdparty_miniupnpc SYSTEM INTERFACE PkgConfig::MiniUPnPc)
list(TRANSFORM MiniUPnPc_INCLUDE_DIRS APPEND "/miniupnpc")
target_include_directories(3rdparty_miniupnpc INTERFACE ${MiniUPnPc_INCLUDE_DIRS})
target_include_directories(3rdparty_miniupnpc SYSTEM INTERFACE ${MiniUPnPc_INCLUDE_DIRS})
else()
option (UPNPC_BUILD_STATIC "Build static library" TRUE)
option (UPNPC_BUILD_SHARED "Build shared library" FALSE)
@@ -17,5 +17,5 @@ else()
add_subdirectory(miniupnp/miniupnpc EXCLUDE_FROM_ALL)
add_library(3rdparty_miniupnpc INTERFACE)
target_link_libraries(3rdparty_miniupnpc INTERFACE libminiupnpc-static)
target_include_directories(3rdparty_miniupnpc INTERFACE libminiupnpc-static)
target_include_directories(3rdparty_miniupnpc SYSTEM INTERFACE libminiupnpc-static)
endif()
+29
View File
@@ -0,0 +1,29 @@
add_library(3rdparty_protobuf INTERFACE)
if (USE_SYSTEM_PROTOBUF)
pkg_check_modules(PROTOBUF REQUIRED IMPORTED_TARGET protobuf>=33.0.0)
target_link_libraries(3rdparty_protobuf INTERFACE PkgConfig::PROTOBUF)
set(PROTOBUF_DIR "${CMAKE_SOURCE_DIR}/rpcs3/Emu/NP/generated")
execute_process(COMMAND protoc --cpp_out=${PROTOBUF_DIR} --proto_path=${PROTOBUF_DIR} np2_structs.proto RESULT_VARIABLE PROTOBUF_CMD_ERROR)
if(PROTOBUF_CMD_ERROR AND NOT PROTOBUF_CMD_ERROR EQUAL 0)
message(FATAL_ERROR "protoc failed to regenerate protobuf files.")
endif()
else()
option(protobuf_INSTALL "Install protobuf binaries and files" OFF)
option(protobuf_BUILD_TESTS "Build tests" OFF)
option(protobuf_BUILD_CONFORMANCE "Build conformance tests" OFF)
option(protobuf_BUILD_EXAMPLES "Build examples" OFF)
option(protobuf_BUILD_PROTOBUF_BINARIES "Build protobuf libraries and protoc compiler" ON)
option(protobuf_BUILD_PROTOC_BINARIES "Build libprotoc and protoc compiler" OFF)
option(protobuf_BUILD_LIBPROTOC "Build libprotoc" OFF)
option(protobuf_BUILD_LIBUPB "Build libupb" OFF)
option(protobuf_ALLOW_CCACHE "Adjust build flags to allow for ccache support." ON)
option(protobuf_DISABLE_RTTI "Remove runtime type information in the binaries" OFF)
option(protobuf_FORCE_FETCH_DEPENDENCIES "Force all dependencies to be downloaded from GitHub. Local installations will be ignored." OFF)
option(protobuf_LOCAL_DEPENDENCIES_ONLY "Prevent downloading any dependencies from GitHub. If this option is set, the dependency must be available locally as an installed package." OFF)
option(protobuf_BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
option(protobuf_MSVC_STATIC_RUNTIME "Link static runtime libraries" OFF)
add_subdirectory(protobuf EXCLUDE_FROM_ALL)
target_include_directories(3rdparty_protobuf SYSTEM INTERFACE protobuf/src)
target_link_libraries(3rdparty_protobuf INTERFACE libprotobuf)
endif()
Vendored Submodule
+1
+111
View File
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}</ProjectGuid>
<Keyword>MakeFileProj</Keyword>
</PropertyGroup>
<Import Project="$(SolutionDir)\buildfiles\msvc\common_default.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(SolutionDir)\buildfiles\msvc\common_default_macros.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros">
<CmakeReleaseCLI>call vsdevcmd.bat -arch=amd64
if not exist "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)" mkdir "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
cd "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_STANDARD=20 -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build" -DCMAKE_SYSTEM_VERSION=10.0 -DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=$(WindowsTargetPlatformVersion) -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -Dprotobuf_INSTALL=ON -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_CONFORMANCE=OFF -Dprotobuf_BUILD_EXAMPLES=OFF -Dprotobuf_BUILD_PROTOBUF_BINARIES=ON -Dprotobuf_BUILD_PROTOC_BINARIES=OFF -Dprotobuf_BUILD_LIBPROTOC=OFF -Dprotobuf_BUILD_LIBUPB=OFF -Dprotobuf_ALLOW_CCACHE=ON -Dprotobuf_FORCE_FETCH_DEPENDENCIES=ON -Dprotobuf_WITH_ZLIB=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=ON "$(SolutionDir)3rdparty\protobuf\protobuf"
</CmakeReleaseCLI>
<CmakeDebugCLI>call vsdevcmd.bat -arch=amd64
if not exist "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)" mkdir "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
cd "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_STANDARD=20 -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_INSTALL_PREFIX="$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build" -DCMAKE_SYSTEM_VERSION=10.0 -DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=$(WindowsTargetPlatformVersion) -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebugDLL -Dprotobuf_INSTALL=ON -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_CONFORMANCE=OFF -Dprotobuf_BUILD_EXAMPLES=OFF -Dprotobuf_BUILD_PROTOBUF_BINARIES=ON -Dprotobuf_BUILD_PROTOC_BINARIES=OFF -Dprotobuf_BUILD_LIBPROTOC=OFF -Dprotobuf_BUILD_LIBUPB=OFF -Dprotobuf_ALLOW_CCACHE=ON -Dprotobuf_FORCE_FETCH_DEPENDENCIES=ON -Dprotobuf_WITH_ZLIB=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF "$(SolutionDir)3rdparty\protobuf\protobuf"
</CmakeDebugCLI>
<CmakeCleanCLI>
echo Cleaning..
rmdir /s /q "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build"
cd "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
for /F "delims= eol=|" %%f in ('
dir /b ^| findstr /V "[^.]*\build[^.]*\.vcxproj"') do (
echo Deleting .\%%f
if exist %%f\nul (
rmdir .\%%f /s /q
) else (
del .\%%f /q
)
)
</CmakeCleanCLI>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<NMakePreprocessorDefinitions>
</NMakePreprocessorDefinitions>
<OutDir>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\</OutDir>
<IntDir>$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\</IntDir>
<NMakeBuildCommandLine>
$(CmakeDebugCLI)
ninja
ninja install
</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>
$(CmakeCleanCLI)
$(CmakeDebugCLI)
ninja
ninja install
</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>
$(CmakeCleanCLI)
</NMakeCleanCommandLine>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<NMakePreprocessorDefinitions>
</NMakePreprocessorDefinitions>
<OutDir>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\</OutDir>
<IntDir>$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\</IntDir>
<NMakeBuildCommandLine>
$(CmakeReleaseCLI)
ninja
ninja install
</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>
$(CmakeCleanCLI)
$(CmakeReleaseCLI)
ninja
ninja install
</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>
$(CmakeCleanCLI)
</NMakeCleanCommandLine>
</PropertyGroup>
<ItemDefinitionGroup>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+10 -3
View File
@@ -6,15 +6,22 @@ find_package(Qt6 ${QT_MIN_VER} CONFIG COMPONENTS Widgets Concurrent Multimedia M
if(WIN32)
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets)
else()
set(QT_NO_PRIVATE_MODULE_WARNING ON)
find_package(Qt6 ${QT_MIN_VER} COMPONENTS DBus Gui GuiPrivate)
find_package(Qt6 ${QT_MIN_VER} COMPONENTS DBus Gui)
if(Qt6_VERSION VERSION_GREATER_EQUAL "6.10.0")
set(QT_NO_PRIVATE_MODULE_WARNING ON)
find_package(Qt6 ${QT_MIN_VER} COMPONENTS GuiPrivate)
endif()
if(Qt6DBus_FOUND)
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::DBus Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets)
target_compile_definitions(3rdparty_qt6 INTERFACE -DHAVE_QTDBUS)
else()
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets)
endif()
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::GuiPrivate)
if(Qt6_VERSION VERSION_GREATER_EQUAL "6.10.0")
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::GuiPrivate)
else()
target_include_directories(3rdparty_qt6 INTERFACE ${Qt6Gui_PRIVATE_INCLUDE_DIRS})
endif()
endif()
if(Qt6Widgets_FOUND)
+1 -1
View File
@@ -3,7 +3,7 @@ if(USE_SYSTEM_RTMIDI)
pkg_check_modules(RtMidi REQUIRED IMPORTED_TARGET rtmidi>=6.0.0)
add_library(rtmidi INTERFACE)
target_link_libraries(rtmidi INTERFACE PkgConfig::RtMidi)
target_include_directories(rtmidi INTERFACE PkgConfig::RtMidi)
target_include_directories(rtmidi SYSTEM INTERFACE PkgConfig::RtMidi)
else()
option(RTMIDI_API_JACK "Compile with JACK support." OFF)
option(RTMIDI_BUILD_TESTING "Build test programs" OFF)
+1 -1
View File
@@ -1,2 +1,2 @@
add_library(3rdparty_stblib INTERFACE)
target_include_directories(3rdparty_stblib INTERFACE stb)
target_include_directories(3rdparty_stblib SYSTEM INTERFACE stb)
+1
View File
@@ -76,6 +76,7 @@
<ClCompile Include="yaml-cpp\src\exceptions.cpp" />
<ClCompile Include="yaml-cpp\src\exp.cpp">
</ClCompile>
<ClCompile Include="yaml-cpp\src\fptostring.cpp" />
<ClCompile Include="yaml-cpp\src\memory.cpp">
</ClCompile>
<ClCompile Include="yaml-cpp\src\node.cpp">
+3
View File
@@ -94,5 +94,8 @@
<ClCompile Include="yaml-cpp\src\depthguard.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="yaml-cpp\src\fptostring.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>
+3 -2
View File
@@ -6,13 +6,14 @@ if (USE_SYSTEM_ZLIB)
target_link_libraries(3rdparty_zlib INTERFACE ZLIB::ZLIB)
target_compile_definitions(3rdparty_zlib INTERFACE -DZLIB_CONST=1)
else()
option(ZLIB_BUILD_EXAMPLES "Enable Zlib Examples" OFF)
option(ZLIB_BUILD_TESTING "Enable Zlib Examples as tests" OFF)
option(ZLIB_BUILD_SHARED "Enable building zlib shared library" OFF)
message(STATUS "RPCS3: Using builtin ZLIB")
set(SKIP_INSTALL_ALL ON)
add_subdirectory(zlib EXCLUDE_FROM_ALL)
add_library(3rdparty_zlib INTERFACE)
target_link_libraries(3rdparty_zlib INTERFACE zlibstatic)
target_include_directories(3rdparty_zlib INTERFACE zlib ${CMAKE_CURRENT_BINARY_DIR}/zlib)
target_include_directories(3rdparty_zlib SYSTEM INTERFACE zlib ${CMAKE_CURRENT_BINARY_DIR}/zlib)
target_compile_definitions(3rdparty_zlib INTERFACE -DZLIB_CONST=1)
endif()
+1 -1
View File
@@ -3,7 +3,7 @@ if(USE_SYSTEM_ZSTD)
pkg_check_modules(zstd REQUIRED IMPORTED_TARGET libzstd)
add_library(3rdparty_zstd INTERFACE)
target_link_libraries(3rdparty_zstd INTERFACE PkgConfig::zstd)
target_include_directories(3rdparty_zstd INTERFACE PkgConfig::RtMidi)
target_include_directories(3rdparty_zstd SYSTEM INTERFACE PkgConfig::RtMidi)
else()
option(ZSTD_BUILD_PROGRAMS "BUILD PROGRAMS" OFF)
option(ZSTD_BUILD_SHARED "BUILD SHARED LIBRARIES" OFF)
+9 -8
View File
@@ -20,26 +20,26 @@ The following tools are required to build RPCS3 on Windows 10 or later:
with standalone **CMake** tool.
- [Python 3.6+](https://www.python.org/downloads/) (add to PATH)
- [Qt 6.10.1](https://www.qt.io/download-qt-installer) In case you can't download from the official installer, you can use [Another Qt installer](https://github.com/miurahr/aqtinstall) (In that case you will need to manually add the "qtmultimedia" module when installing Qt)
- [Qt 6.11.0](https://www.qt.io/download-qt-installer) In case you can't download from the official installer, you can use [Another Qt installer](https://github.com/miurahr/aqtinstall) (In that case you will need to manually add the "qtmultimedia" module when installing Qt)
- [Vulkan SDK 1.3.268.0](https://vulkan.lunarg.com/sdk/home) (see "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html)) for now future SDKs don't work. You need precisely 1.3.268.0.
The `sln` solution available only on **Visual Studio** is the preferred building solution. It easily allows to build the **RPCS3** application in `Release` and `Debug` mode.
In order to build **RPCS3** with the `sln` solution (with **Visual Studio**), **Qt** libs need to be detected. To detect the libs:
- add and set the `QTDIR` environment variable, e.g. `<QtInstallFolder>\6.10.1\msvc2022_64\`
- add and set the `QTDIR` environment variable, e.g. `<QtInstallFolder>\6.11.0\msvc2022_64\`
- or use the [Visual Studio Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2022)
**NOTE:** If you have issues with the **Visual Studio Qt Plugin**, you may want to uninstall it and install the [Legacy Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.LEGACYQtVisualStudioTools2022) instead.
In order to build **RPCS3** with the `CMake` solution (with both **Visual Studio** and standalone **CMake** tool):
- add and set the `Qt6_ROOT` environment variable to the **Qt** libs path, e.g. `<QtInstallFolder>\6.10.1\msvc2022_64\`
- add and set the `Qt6_ROOT` environment variable to the **Qt** libs path, e.g. `<QtInstallFolder>\6.11.0\msvc2022_64\`
### Linux
These are the essentials tools to build RPCS3 on Linux. Some of them can be installed through your favorite package manager:
- Clang 17+ or GCC 13+
- [CMake 3.28.0+](https://www.cmake.org/download/)
- [Qt 6.10.1](https://www.qt.io/download-qt-installer)
- [Qt 6.11.0](https://www.qt.io/download-qt-installer)
- [Vulkan SDK 1.3.268.0](https://vulkan.lunarg.com/sdk/home) (See "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html)) for now future SDKs don't work. You need precisely 1.3.268.0.
- [SDL3](https://github.com/libsdl-org/SDL/releases) (for the FAudio backend)
@@ -51,7 +51,7 @@ These are the essentials tools to build RPCS3 on Linux. Some of them can be inst
#### Debian & Ubuntu
sudo apt-get install build-essential ninja-build libasound2-dev libpulse-dev libopenal-dev libglew-dev zlib1g-dev libedit-dev libvulkan-dev libudev-dev git libevdev-dev libsdl3-3.2 libsdl3-dev libjack-dev libsndio-dev
sudo apt-get install build-essential ninja-build libasound2-dev libpulse-dev libopenal-dev libglew-dev zlib1g-dev libedit-dev libvulkan-dev libudev-dev git libevdev-dev libsdl3-dev libjack-dev libsndio-dev libcurl4-openssl-dev qt6-base-dev qt6-base-private-dev qt6-multimedia-dev qt6-svg-dev libxkbcommon-dev
Ubuntu is usually horrendously out of date, and some packages need to be downloaded by hand. This part is for Qt, GCC, Vulkan, and CMake
@@ -95,7 +95,7 @@ sudo apt-get install cmake
#### Fedora
sudo dnf install alsa-lib-devel cmake ninja-build glew glew-devel libatomic libevdev-devel libudev-devel openal-devel qt6-qtbase-devel qt6-qtbase-private-devel vulkan-devel pipewire-jack-audio-connection-kit-devel qt6-qtmultimedia-devel qt6-qtsvg-devel llvm-devel
sudo dnf install alsa-lib-devel cmake ninja-build glew glew-devel libatomic libevdev-devel libudev-devel openal-soft-devel qt6-qtbase-devel qt6-qtbase-private-devel vulkan-devel pipewire-jack-audio-connection-kit-devel qt6-qtmultimedia-devel qt6-qtsvg-devel llvm-devel libcurl-devel
#### OpenSUSE
@@ -108,9 +108,10 @@ Clone and initialize the repository
```bash
git clone --recurse-submodules https://github.com/RPCS3/rpcs3.git
cd rpcs3
git submodule sync
# This is automatically done by `git clone --recurse-submodules`,
# but in case you forgot it, you can manually fetch submodules this way:
git submodule update --init
git submodule update --init --recursive
```
### Windows
@@ -122,7 +123,7 @@ Start **Visual Studio**, click on `Open a project or solution` and select the `r
##### Configuring the Qt Plugin (if used)
1) go to `Extensions->Qt VS Tools->Qt Versions`
2) add the path to your Qt installation with compiler e.g. `<QtInstallFolder>\6.10.1\msvc2022_64`, version will fill in automatically
2) add the path to your Qt installation with compiler e.g. `<QtInstallFolder>\6.11.0\msvc2022_64`, version will fill in automatically
3) go to `Extensions->Qt VS Tools->Options->Legacy Project Format`. (Only available in the **Legacy Qt Plugin**)
4) set `Build: Run pre-build setup` to `true`. (Only available in the **Legacy Qt Plugin**)
+8 -55
View File
@@ -13,12 +13,12 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11)
message(FATAL_ERROR "RPCS3 requires at least gcc-11.")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13)
message(FATAL_ERROR "RPCS3 requires at least gcc-13.")
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.0)
message(FATAL_ERROR "RPCS3 requires at least clang-12.0.")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0)
message(FATAL_ERROR "RPCS3 requires at least clang-19.0.")
endif()
endif()
@@ -37,12 +37,12 @@ option(USE_LIBEVDEV "libevdev-based joystick support" ON)
option(USE_DISCORD_RPC "Discord rich presence integration" OFF)
option(USE_VULKAN "Vulkan render backend" ON)
option(USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF)
option(USE_SDL "Enables SDL input handler" OFF)
option(USE_SDL "Enables SDL input handler" ON)
option(USE_SYSTEM_CUBEB "Prefer system cubeb instead of the builtin one" OFF)
option(USE_SYSTEM_CURL "Prefer system Curl instead of the prebuild one" ON)
option(USE_SYSTEM_FAUDIO "Prefer system FAudio instead of the builtin one" OFF)
option(USE_SYSTEM_FFMPEG "Prefer system ffmpeg instead of the prebuild one" OFF)
option(USE_SYSTEM_FLATBUFFERS "Prefer system flatbuffers instead of the builtin one" OFF)
option(USE_SYSTEM_PROTOBUF "Prefer system protobuf instead of the builtin one" OFF)
option(USE_SYSTEM_GLSLANG "Prefer system glslang instead of the builtin one" OFF)
option(USE_SYSTEM_HIDAPI "Prefer system hidapi instead of the builtin one" OFF)
option(USE_SYSTEM_LIBPNG "Prefer system libpng instead of the builtin one" OFF)
@@ -86,50 +86,7 @@ if(CMAKE_BUILD_TYPE MATCHES "Debug" AND NOT MSVC)
endif()
if(MSVC)
option(USE_MSVC_STATIC_CRT "Use static MSVC C runtime" OFF)
# TODO(cjj19970505@live.cn)
# DiscordRPC binary in 3rdparty is compiled /MT
# So theoretically we should enable DiscordRPC in Release and static CRT build
# since we might encounter some rumtime issues when more than one CRT version are presented.
# https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-library-features?view=msvc-160#what-problems-exist-if-an-application-uses-more-than-one-crt-version
# Add other DiscordRPC binaries(compiled with /MTd, /MD, /MDd) or compile it from source may address this issue.
if(NOT IS_MULTI_CONFIG)
if(NOT(CMAKE_BUILD_TYPE MATCHES "Release" AND USE_MSVC_STATIC_CRT))
set(USE_DISCORD_RPC OFF CACHE BOOL "Discord RPC is only available in Release and static CRT build." FORCE)
endif()
endif()
if(USE_MSVC_STATIC_CRT)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
else()
# though doc ( https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html )
# says if that property is not set then CMake uses the default value MultiThreaded$<$<CONFIG:Debug>:Debug>DLL
# to select a MSVC runtime library.
# But yaml-cpp set /MT(d) if CMAKE_MSVC_RUNTIME_LIBRARY is undefined
# So we have to define it explicitly
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
endif()
# TODO(cjj19970505@live.cn)
# offical QT uses dynamic CRT.
# When building our lib with static CRT and debug build type
# and linking with Qt with dynamic CRT and debug build,
# error is encountered in runtime (which is expected).
# But building our lib with static CRT and release build type,
# and linking with Qt with dynamic CRT and release build seems to be working,
# which is the same config with VS solution.
# (though technically it might still have some hidden errors).
# So we allow static CRT in both relase and debug build, but prompt warning in debug build.
# For more info:
# https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-library-features?view=msvc-160#what-problems-exist-if-an-application-uses-more-than-one-crt-version
# https://wiki.qt.io/Technical_FAQ#Why_does_a_statically_built_Qt_use_the_dynamic_Visual_Studio_runtime_libraries_.3F_Do_I_need_to_deploy_those_with_my_application_.3F
if(USE_MSVC_STATIC_CRT)
if(IS_MULTI_CONFIG OR CMAKE_BUILD_TYPE MATCHES "Debug")
message(AUTHOR_WARNING "Debug build currently can not work with static CRT.")
endif()
endif()
add_compile_options(/MP)
add_compile_options("$<$<COMPILE_LANGUAGE:C,CXX>:/MP>")
endif()
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
@@ -142,7 +99,7 @@ if(APPLE AND CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
endif()
if(MSVC)
add_compile_options(/wd4530 /utf-8) # C++ exception handler used, but unwind semantics are not enabled
add_compile_options("$<$<COMPILE_LANGUAGE:C,CXX>:/wd4530;/utf-8>") # C++ exception handler used, but unwind semantics are not enabled
endif()
add_subdirectory(3rdparty)
@@ -161,10 +118,6 @@ if (NOT FOUND_LTO EQUAL -1)
message(FATAL_ERROR "RPCS3 doesn't support building with LTO, use -DDISABLE_LTO=TRUE to force-disable it")
endif()
if(NOT WIN32)
add_compile_options(-pthread)
endif()
## Look for Gamemode if its installed on Linux
if(LINUX)
## User chooses whether to Enable GameMode features or not
+22 -1
View File
@@ -362,6 +362,27 @@ std::vector<std::string> cfg::try_to_enum_list(decltype(&fmt_class_string<int>::
return result;
}
size_t cfg::try_to_enum_size(decltype(&fmt_class_string<int>::format) func)
{
size_t result = 0;
for (u64 i = 0;; i++)
{
std::string var;
func(var, i);
std::string hex;
fmt_class_string<u64>::format(hex, i);
if (var == hex)
{
break;
}
result++;
}
return result;
}
void cfg::encode(YAML::Emitter& out, const cfg::_base& rhs)
{
switch (rhs.get_type())
@@ -416,7 +437,7 @@ void cfg::encode(YAML::Emitter& out, const cfg::_base& rhs)
out << YAML::BeginMap;
for (const auto& np : static_cast<const log_entry&>(rhs).get_map())
{
if (np.second == logs::level::notice) continue;
if (np.second == logs::level::_default) continue;
out << YAML::Key << np.first;
out << YAML::Value << fmt::format("%s", np.second);
}
+11 -3
View File
@@ -30,6 +30,9 @@ namespace cfg
// Internal hack
std::vector<std::string> try_to_enum_list(decltype(&fmt_class_string<int>::format) func);
// Internal hack
size_t try_to_enum_size(decltype(&fmt_class_string<int>::format) func);
// Config tree entry type.
enum class type : unsigned
{
@@ -312,6 +315,11 @@ namespace cfg
{
return try_to_enum_list(&fmt_class_string<T>::format);
}
size_t size() const
{
return try_to_enum_size(&fmt_class_string<T>::format);
}
};
// Signed 32/64-bit integer entry with custom Min/Max range.
@@ -385,7 +393,7 @@ namespace cfg
void set(const s64& value)
{
ensure(value >= Min && value <= Max);
if (value < Min || value > Max) fmt::throw_exception("'%s': value %d out of bounds (min=%d, max=%d)", m_name, value, Min, Max);
m_value = static_cast<int_type>(value);
}
@@ -476,7 +484,7 @@ namespace cfg
void set(const f64& value)
{
ensure(value >= Min && value <= Max);
if (value < Min || value > Max) fmt::throw_exception("'%s': value %d out of bounds (min=%d, max=%d)", m_name, value, Min, Max);
m_value = static_cast<float_type>(value);
}
@@ -563,7 +571,7 @@ namespace cfg
void set(const u64& value)
{
ensure(value >= Min && value <= Max);
if (value < Min || value > Max) fmt::throw_exception("'%s': value %d out of bounds (min=%d, max=%d)", m_name, value, Min, Max);
m_value = static_cast<int_type>(value);
}
+65 -9
View File
@@ -117,6 +117,7 @@ static fs::error to_error(DWORD e)
case ERROR_NEGATIVE_SEEK: return fs::error::inval;
case ERROR_DIRECTORY: return fs::error::inval;
case ERROR_INVALID_NAME: return fs::error::inval;
case ERROR_INVALID_FUNCTION: return fs::error::inval;
case ERROR_SHARING_VIOLATION: return fs::error::acces;
case ERROR_DIR_NOT_EMPTY: return fs::error::notempty;
case ERROR_NOT_READY: return fs::error::noent;
@@ -398,12 +399,11 @@ namespace fs
class windows_file final : public file_base
{
HANDLE m_handle;
atomic_t<u64> m_pos;
atomic_t<u64> m_pos {0};
public:
windows_file(HANDLE handle)
: m_handle(handle)
, m_pos(0)
{
}
@@ -417,10 +417,10 @@ namespace fs
stat_t get_stat() override
{
FILE_BASIC_INFO basic_info;
FILE_BASIC_INFO basic_info {};
ensure(GetFileInformationByHandleEx(m_handle, FileBasicInfo, &basic_info, sizeof(FILE_BASIC_INFO))); // "file::stat"
stat_t info;
stat_t info {};
info.is_directory = (basic_info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
info.is_writable = (basic_info.FileAttributes & FILE_ATTRIBUTE_READONLY) == 0;
info.size = this->size();
@@ -441,7 +441,7 @@ namespace fs
bool trunc(u64 length) override
{
FILE_END_OF_FILE_INFO _eof;
FILE_END_OF_FILE_INFO _eof {};
_eof.EndOfFile.QuadPart = length;
if (!SetFileInformationByHandle(m_handle, FileEndOfFileInfo, &_eof, sizeof(_eof)))
@@ -563,6 +563,7 @@ namespace fs
u64 size() override
{
// NOTE: this can fail if we access a mounted empty drive (e.g. after unmounting an iso).
LARGE_INTEGER size;
ensure(GetFileSizeEx(m_handle, &size)); // "file::size"
@@ -579,12 +580,12 @@ namespace fs
file_id id{"windows_file"};
id.data.resize(sizeof(FILE_ID_INFO));
FILE_ID_INFO info;
FILE_ID_INFO info {};
if (!GetFileInformationByHandleEx(m_handle, FileIdInfo, &info, sizeof(info)))
{
// Try GetFileInformationByHandle as a fallback
BY_HANDLE_FILE_INFORMATION info2;
BY_HANDLE_FILE_INFORMATION info2{};
ensure(GetFileInformationByHandle(m_handle, &info2));
info = {};
@@ -625,7 +626,7 @@ namespace fs
struct ::stat file_info;
ensure(::fstat(m_fd, &file_info) == 0); // "file::stat"
stat_t info;
stat_t info {};
info.is_directory = S_ISDIR(file_info.st_mode);
info.is_writable = file_info.st_mode & 0200; // HACK: approximation
info.size = file_info.st_size;
@@ -901,6 +902,22 @@ std::string_view fs::get_parent_dir_view(std::string_view path, u32 parent_level
return result;
}
std::string fs::get_path_if_dir(const std::string& path)
{
if (path.empty() || !fs::is_dir(path))
{
return {};
}
// If delimiters are already present at the end of the string then nothing else to do
if (usz sz = path.find_last_of(delim); sz != umax && (sz + 1) == path.size())
{
return path;
}
return path + '/';
}
bool fs::get_stat(const std::string& path, stat_t& info)
{
// Ensure consistent information on failure
@@ -1640,6 +1657,45 @@ fs::file::file(const std::string& path, bs_t<open_mode> mode)
return;
}
// Check if the handle is actually valid.
// This can fail on empty mounted drives (e.g. with ERROR_NOT_READY or ERROR_INVALID_FUNCTION).
BY_HANDLE_FILE_INFORMATION info{};
if (!GetFileInformationByHandle(handle, &info))
{
const DWORD last_error = GetLastError();
CloseHandle(handle);
if (last_error == ERROR_INVALID_FUNCTION)
{
g_tls_error = fs::error::isdir;
return;
}
g_tls_error = to_error(last_error);
return;
}
if (info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
CloseHandle(handle);
g_tls_error = fs::error::isdir;
return;
}
if (info.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)
{
CloseHandle(handle);
g_tls_error = fs::error::acces;
return;
}
if ((mode & fs::write) && (info.dwFileAttributes & FILE_ATTRIBUTE_READONLY))
{
CloseHandle(handle);
g_tls_error = fs::error::readonly;
return;
}
m_file = std::make_unique<windows_file>(handle);
#else
int flags = O_CLOEXEC; // Ensures all files are closed on execl for auto updater
@@ -2579,7 +2635,7 @@ bool fs::pending_file::commit(bool overwrite)
while (file_handle != INVALID_HANDLE_VALUE)
{
// Get file ID (used to check for hardlinks)
BY_HANDLE_FILE_INFORMATION file_info;
BY_HANDLE_FILE_INFORMATION file_info{};
if (!GetFileInformationByHandle(file_handle, &file_info) || file_info.nNumberOfLinks == 1)
{
+13 -8
View File
@@ -66,13 +66,13 @@ namespace fs
// File attributes (TODO)
struct stat_t
{
bool is_directory;
bool is_symlink;
bool is_writable;
u64 size;
s64 atime;
s64 mtime;
s64 ctime;
bool is_directory = false;
bool is_symlink = false;
bool is_writable = false;
u64 size = 0;
s64 atime = 0;
s64 mtime = 0;
s64 ctime = 0;
using enable_bitcopy = std::true_type;
@@ -155,7 +155,7 @@ namespace fs
// Virtual device
struct device_base
{
const std::string fs_prefix;
std::string fs_prefix;
device_base();
virtual ~device_base();
@@ -195,6 +195,9 @@ namespace fs
return std::string{get_parent_dir_view(path, parent_level)};
}
// Return "path" plus an ending delimiter (if missing) if "path" is an existing directory. Otherwise, an empty string
std::string get_path_if_dir(const std::string& path);
// Get file information
bool get_stat(const std::string& path, stat_t& info);
@@ -254,6 +257,8 @@ namespace fs
// Open file with specified mode
explicit file(const std::string& path, bs_t<open_mode> mode = ::fs::read);
file(std::unique_ptr<file_base>&& ptr) : m_file(std::move(ptr)) {}
static file from_native_handle(native_handle handle);
// Open memory for read
+4
View File
@@ -14,6 +14,10 @@
#define CAN_OVERCOMMIT
#endif
#if defined(__APPLE__)
#include <mutex>
#endif
LOG_CHANNEL(jit_log, "JIT");
void jit_announce(uptr func, usz size, std::string_view name)
+25
View File
@@ -688,6 +688,30 @@ jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, co
mem = std::make_unique<MemoryManager1>(std::move(symbols_cement));
}
std::vector<std::string> attributes;
#if defined(ARCH_ARM64)
if (utils::has_sha3())
attributes.push_back("+sha3");
else
attributes.push_back("-sha3");
if (utils::has_dotprod())
attributes.push_back("+dotprod");
else
attributes.push_back("-dotprod");
if (utils::has_sve())
attributes.push_back("+sve");
else
attributes.push_back("-sve");
if (utils::has_sve2())
attributes.push_back("+sve2");
else
attributes.push_back("-sve2");
#endif
{
m_engine.reset(llvm::EngineBuilder(std::move(null_mod))
.setErrorStr(&result)
@@ -699,6 +723,7 @@ jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, co
//.setCodeModel(llvm::CodeModel::Large)
#endif
.setRelocationModel(llvm::Reloc::Model::PIC_)
.setMAttrs(attributes)
.setMCPU(m_cpu)
.create());
}
+85 -5
View File
@@ -16,12 +16,12 @@
#include <errno.h>
#endif
#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable : 4996)
#elif defined(__clang__)
#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#elif defined(_MSC_VER)
#pragma warning(push)
#pragma warning(disable : 4996)
#else
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
@@ -83,7 +83,8 @@ std::string fmt::win_error_to_string(unsigned long error, void* module_handle)
if (FormatMessageW((module_handle ? FORMAT_MESSAGE_FROM_HMODULE : FORMAT_MESSAGE_FROM_SYSTEM) | FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS,
module_handle, error, 0, reinterpret_cast<LPWSTR>(&message_buffer), 0, nullptr))
{
message = fmt::format("%s (0x%x)", fmt::trim(wchar_to_utf8(message_buffer), " \t\n\r\f\v"), error);
const std::string utf8 = wchar_to_utf8(message_buffer);
message = fmt::format("%s (0x%x)", fmt::trim_sv(utf8, " \t\n\r\f\v"), error);
}
else
{
@@ -823,6 +824,50 @@ std::vector<std::string> fmt::split(std::string_view source, std::initializer_li
return result;
}
std::vector<std::string_view> fmt::split_sv(std::string_view source, std::initializer_list<std::string_view> separators, bool is_skip_empty)
{
std::vector<std::string_view> result;
for (usz index = 0; index < source.size();)
{
usz pos = -1;
usz sep_size = 0;
for (auto& separator : separators)
{
if (usz pos0 = source.find(separator, index); pos0 < pos)
{
pos = pos0;
sep_size = separator.size();
}
}
if (!sep_size)
{
result.emplace_back(&source[index], source.size() - index);
return result;
}
std::string_view piece = {&source[index], pos - index};
index = pos + sep_size;
if (piece.empty() && is_skip_empty)
{
continue;
}
result.emplace_back(std::move(piece));
}
if (result.empty() && !is_skip_empty)
{
result.emplace_back();
}
return result;
}
std::string fmt::trim(const std::string& source, std::string_view values)
{
const usz begin = source.find_first_not_of(values);
@@ -838,6 +883,21 @@ std::string fmt::trim(const std::string& source, std::string_view values)
return source.substr(begin, end + 1 - begin);
}
std::string_view fmt::trim_sv(std::string_view source, std::string_view values)
{
const usz begin = source.find_first_not_of(values);
if (begin == source.npos)
return {};
const usz end = source.find_last_not_of(values);
if (end == source.npos)
return source.substr(begin);
return source.substr(begin, end + 1 - begin);
}
std::string fmt::trim_front(const std::string& source, std::string_view values)
{
const usz begin = source.find_first_not_of(values);
@@ -848,12 +908,32 @@ std::string fmt::trim_front(const std::string& source, std::string_view values)
return source.substr(begin);
}
std::string_view fmt::trim_front_sv(std::string_view source, std::string_view values)
{
const usz begin = source.find_first_not_of(values);
if (begin == source.npos)
return {};
return source.substr(begin);
}
void fmt::trim_back(std::string& source, std::string_view values)
{
const usz index = source.find_last_not_of(values);
source.resize(index + 1);
}
std::string_view fmt::trim_back_sv(std::string_view source, std::string_view values)
{
const usz index = source.find_last_not_of(values);
if (index == std::string_view::npos)
return {};
source.remove_suffix(source.size() - (index + 1));
return source;
}
std::string fmt::to_upper(std::string_view string)
{
std::string result;
+45 -12
View File
@@ -13,13 +13,13 @@ std::string wchar_to_utf8(std::wstring_view src);
std::string utf16_to_utf8(std::u16string_view src);
std::u16string utf8_to_utf16(std::string_view src);
// Copy null-terminated string from a std::string or a char array to a char array with truncation
template <typename D, typename T>
// Copy null-terminated string from a std::basic_string or a char array to a char array with truncation
template <typename D, typename T> requires requires (D& d, T& t) { std::declval<decltype(&t[0])&>() = &d[0]; }
inline void strcpy_trunc(D&& dst, const T& src)
{
const usz count = std::size(src) >= std::size(dst) ? std::max<usz>(std::size(dst), 1) - 1 : std::size(src);
std::memcpy(std::data(dst), std::data(src), count);
std::memset(std::data(dst) + count, 0, std::size(dst) - count);
std::copy_n(std::data(src), count, std::data(dst));
std::fill_n(std::data(dst) + count, std::size(dst) - count, std::remove_cvref_t<decltype(dst[0])>{});
}
// Convert string to signed integer
@@ -139,57 +139,90 @@ namespace fmt
// Splits the string into a vector of strings using the separators. The vector may contain empty strings unless is_skip_empty is true.
std::vector<std::string> split(std::string_view source, std::initializer_list<std::string_view> separators, bool is_skip_empty = true);
// Splits the string_view into a vector of string_views using the separators. The vector may contain empty string_views unless is_skip_empty is true.
std::vector<std::string_view> split_sv(std::string_view source, std::initializer_list<std::string_view> separators, bool is_skip_empty = true);
// Removes all preceding and trailing characters specified by 'values' from 'source'.
std::string trim(const std::string& source, std::string_view values = " \t");
// Removes all preceding and trailing characters specified by 'values' from 'source' and returns the result.
std::string_view trim_sv(std::string_view source, std::string_view values = " \t");
// Removes all preceding characters specified by 'values' from 'source'.
std::string trim_front(const std::string& source, std::string_view values = " \t");
// Removes all preceding characters specified by 'values' from 'source' and returns the result.
std::string_view trim_front_sv(std::string_view source, std::string_view values = " \t");
// Removes all trailing characters specified by 'values' from 'source'.
void trim_back(std::string& source, std::string_view values = " \t");
// Removes all trailing characters specified by 'values' from 'source' and returns the result.
std::string_view trim_back_sv(std::string_view source, std::string_view values = " \t");
template <typename T>
std::string merge(const T& source, const std::string& separator)
std::string merge(const T& source, std::string_view separator)
{
if (source.empty())
{
return {};
}
usz total = (source.size() - 1) * separator.size();
for (const auto& s : source)
{
total += s.size();
}
std::string result;
result.reserve(total);
auto it = source.begin();
auto end = source.end();
for (--end; it != end; ++it)
{
result += std::string{*it} + separator;
result.append(*it);
if (!separator.empty())
result.append(separator);
}
return result + std::string{source.back()};
return result.append(*end);
}
template <typename T>
std::string merge(std::initializer_list<T> sources, const std::string& separator)
std::string merge(std::initializer_list<T> sources, std::string_view separator)
{
if (!sources.size())
{
return {};
}
usz total = (sources.size() - 1) * separator.size();
for (const auto& s : sources)
{
if (s.empty()) continue;
total += s.size() + (s.size() - 1) * separator.size();
}
std::string result;
result.reserve(total);
bool first = true;
for (const auto& v : sources)
{
if (first)
{
result = fmt::merge(v, separator);
first = false;
first = false;
}
else
else if (!separator.empty())
{
result += separator + fmt::merge(v, separator);
result.append(separator);
}
result.append(fmt::merge(v, separator));
}
return result;
+104 -24
View File
@@ -8,13 +8,17 @@
#include "Emu/RSX/RSXThread.h"
#include "Thread.h"
#include "Utilities/JIT.h"
#include <thread>
#include <cfenv>
#ifdef ARCH_ARM64
#include "Emu/CPU/Backends/AArch64/AArch64Signal.h"
#endif
#ifdef __cpp_lib_stacktrace
#include "rpcs3_version.h"
#include <stacktrace>
#endif
#ifdef _WIN32
#include <Windows.h>
#include <Psapi.h>
@@ -103,7 +107,7 @@ thread_local u64 g_tls_fault_rsx = 0;
thread_local u64 g_tls_fault_spu = 0;
thread_local u64 g_tls_wait_time = 0;
thread_local u64 g_tls_wait_fail = 0;
thread_local bool g_tls_access_violation_recovered = false;
thread_local u64 g_tls_access_violation_recovered = umax;
extern thread_local std::string(*g_tls_log_prefix)();
namespace stx
@@ -1265,7 +1269,7 @@ namespace rsx
extern std::function<bool(u32 addr, bool is_writing)> g_access_violation_handler;
}
bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noexcept
bool handle_access_violation(u32 addr, bool is_writing, bool is_exec, ucontext_t* context) noexcept
{
g_tls_fault_all++;
@@ -1301,7 +1305,7 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
}
} spu_protection{cpu};
if (addr < RAW_SPU_BASE_ADDR && vm::check_addr(addr) && rsx::g_access_violation_handler)
if (!is_exec && addr < RAW_SPU_BASE_ADDR && vm::check_addr(addr) && rsx::g_access_violation_handler)
{
bool state_changed = false;
@@ -1367,7 +1371,7 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
{
auto thread = idm::get_unlocked<named_thread<spu_thread>>(spu_thread::find_raw_spu((addr - RAW_SPU_BASE_ADDR) / RAW_SPU_OFFSET));
if (!thread)
if (!thread || is_exec)
{
break;
}
@@ -1499,7 +1503,9 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
static_cast<void>(context);
#endif /* ARCH_ */
if (vm::check_addr(addr, is_writing ? vm::page_writable : vm::page_readable))
const auto required_page_perms = (is_writing ? vm::page_writable : vm::page_readable) + (is_exec ? vm::page_executable : 0);
if (vm::check_addr(addr, required_page_perms))
{
return true;
}
@@ -1507,9 +1513,7 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
// Hack: allocate memory in case the emulator is stopping
const auto hack_alloc = [&]()
{
g_tls_access_violation_recovered = true;
if (vm::check_addr(addr, is_writing ? vm::page_writable : vm::page_readable))
if (vm::check_addr(addr, required_page_perms))
{
return true;
}
@@ -1521,17 +1525,45 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
return false;
}
extern void ppu_register_range(u32 addr, u32 size);
bool reprotected = false;
if (vm::writer_lock mlock; area->flags & vm::preallocated || vm::check_addr(addr, 0))
{
// For allocated memory with protection lower than required (such as protection::no or read-only while writing to it)
utils::memory_protect(vm::base(addr & -0x1000), 0x1000, utils::protection::rw);
reprotected = true;
}
if (reprotected)
{
if (is_exec && !vm::check_addr(addr, vm::page_executable))
{
ppu_register_range(addr & -0x10000, 0x10000);
}
g_tls_access_violation_recovered = addr;
return true;
}
return area->falloc(addr & -0x10000, 0x10000) || vm::check_addr(addr, is_writing ? vm::page_writable : vm::page_readable);
const bool allocated = area->falloc(addr & -0x10000, 0x10000);
if (allocated)
{
if (is_exec && !vm::check_addr(addr, vm::page_executable))
{
ppu_register_range(addr & -0x10000, 0x10000);
}
g_tls_access_violation_recovered = addr;
return true;
}
return false;
};
if (cpu && (cpu->get_class() == thread_class::ppu || cpu->get_class() == thread_class::spu))
if (cpu && (cpu->get_class() == thread_class::ppu || cpu->get_class() == thread_class::spu) && !is_exec)
{
vm::temporary_unlock(*cpu);
u32 pf_port_id = 0;
@@ -1674,7 +1706,7 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
if (cpu->get_class() == thread_class::spu)
{
if (!g_tls_access_violation_recovered)
if (g_tls_access_violation_recovered != addr)
{
vm_log.notice("\n%s", dump_useful_thread_info());
vm_log.always()("[%s] Access violation %s location 0x%x (%s)", cpu->get_name(), is_writing ? "writing" : "reading", addr, (is_writing && vm::check_addr(addr)) ? "read-only memory" : "unmapped memory");
@@ -1710,10 +1742,10 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
// Note: a thread may access violate more than once after hack_alloc recovery
// Do not log any further access violations in this case.
if (!g_tls_access_violation_recovered)
if (g_tls_access_violation_recovered != addr)
{
vm_log.notice("\n%s", dump_useful_thread_info());
vm_log.fatal("Access violation %s location 0x%x (%s)", is_writing ? "writing" : (cpu && cpu->get_class() == thread_class::ppu && cpu->get_pc() == addr ? "executing" : "reading"), addr, (is_writing && vm::check_addr(addr)) ? "read-only memory" : "unmapped memory");
vm_log.fatal("Access violation %s location 0x%x (%s)", is_writing ? "writing" : (is_exec ? "executing" : "reading"), addr, (is_writing && vm::check_addr(addr)) ? "read-only memory" : "unmapped memory");
}
while (Emu.IsPausedOrReady())
@@ -1762,8 +1794,13 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
}
}
if (Emu.IsStopped() && !hack_alloc())
if (Emu.IsStopped())
{
while (!hack_alloc())
{
thread_ctrl::wait_for(1000);
}
return false;
}
@@ -1802,6 +1839,7 @@ static LONG exception_handler(PEXCEPTION_POINTERS pExp) noexcept
if (pExp->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION && !is_executing)
{
u32 addr = 0;
bool is_exec = false;
if (auto [addr0, ok] = vm::try_get_addr(ptr); ok)
{
@@ -1809,14 +1847,21 @@ static LONG exception_handler(PEXCEPTION_POINTERS pExp) noexcept
}
else if (const usz exec64 = (ptr - vm::g_exec_addr) / 2; exec64 <= u32{umax})
{
is_exec = true;
addr = static_cast<u32>(exec64);
}
else
else if (const usz exec64 = (ptr - vm::g_exec_addr - vm::g_exec_addr_seg_offset); exec64 <= u32{umax})
{
is_exec = true;
addr = static_cast<u32>(exec64);
}
else
{
std::this_thread::sleep_for(1ms);
return EXCEPTION_CONTINUE_SEARCH;
}
if (thread_ctrl::get_current() && handle_access_violation(addr, is_writing, pExp->ContextRecord))
if (thread_ctrl::get_current() && handle_access_violation(addr, is_writing, is_exec, pExp->ContextRecord))
{
return EXCEPTION_CONTINUE_EXECUTION;
}
@@ -2023,12 +2068,13 @@ static void signal_handler(int /*sig*/, siginfo_t* info, void* uct) noexcept
#endif
const u64 exec64 = (reinterpret_cast<u64>(info->si_addr) - reinterpret_cast<u64>(vm::g_exec_addr)) / 2;
const u64 exec64_2 = (reinterpret_cast<u64>(info->si_addr) - reinterpret_cast<u64>(vm::g_exec_addr)) - vm::g_exec_addr_seg_offset;
const auto cause = is_executing ? "executing" : is_writing ? "writing" : "reading";
if (auto [addr, ok] = vm::try_get_addr(info->si_addr); ok && !is_executing)
{
// Try to process access violation
if (thread_ctrl::get_current() && handle_access_violation(addr, is_writing, context))
if (thread_ctrl::get_current() && handle_access_violation(addr, is_writing, false, context))
{
return;
}
@@ -2036,7 +2082,14 @@ static void signal_handler(int /*sig*/, siginfo_t* info, void* uct) noexcept
if (exec64 < 0x100000000ull && !is_executing)
{
if (thread_ctrl::get_current() && handle_access_violation(static_cast<u32>(exec64), is_writing, context))
if (thread_ctrl::get_current() && handle_access_violation(static_cast<u32>(exec64), is_writing, true, context))
{
return;
}
}
else if (exec64_2 < 0x100000000ull && !is_executing)
{
if (thread_ctrl::get_current() && handle_access_violation(static_cast<u32>(exec64_2), is_writing, true, context))
{
return;
}
@@ -2165,10 +2218,17 @@ void thread_base::start()
ensure(m_thread);
ensure(::ResumeThread(reinterpret_cast<HANDLE>(+m_thread)) != static_cast<DWORD>(-1));
#elif defined(__APPLE__)
pthread_attr_t stack_size_attr;
pthread_attr_init(&stack_size_attr);
pthread_attr_setstacksize(&stack_size_attr, 0x800000);
ensure(pthread_create(reinterpret_cast<pthread_t*>(&m_thread.raw()), &stack_size_attr, entry_point, this) == 0);
pthread_attr_t attrs;
struct sched_param sp;
memset(&sp, 0, sizeof(struct sched_param));
sp.sched_priority=99;
pthread_attr_init(&attrs);
pthread_attr_setstacksize(&attrs, 0x800000);
pthread_attr_set_qos_class_np(&attrs, QOS_CLASS_USER_INTERACTIVE, 0);
pthread_attr_setschedpolicy(&attrs, SCHED_RR);
pthread_attr_setschedparam(&attrs, &sp);
ensure(pthread_create(reinterpret_cast<pthread_t*>(&m_thread.raw()), &attrs, entry_point, this) == 0);
#else
ensure(pthread_create(reinterpret_cast<pthread_t*>(&m_thread.raw()), nullptr, entry_point, this) == 0);
#endif
@@ -2348,7 +2408,7 @@ thread_base::native_entry thread_base::finalize(u64 _self) noexcept
g_tls_fault_spu = 0;
g_tls_wait_time = 0;
g_tls_wait_fail = 0;
g_tls_access_violation_recovered = false;
g_tls_access_violation_recovered = umax;
g_tls_log_prefix = []() -> std::string { return {}; };
@@ -2794,6 +2854,16 @@ void thread_base::exec()
[[noreturn]] void thread_ctrl::emergency_exit(std::string_view reason)
{
// Print stacktrace
#ifdef __cpp_lib_stacktrace
if (rpcs3::is_local_build())
{
std::ostringstream oss;
oss << std::stacktrace::current();
sys_log.notice("StackTrace\n\n%s\n", oss.str());
}
#endif
if (const std::string info = dump_useful_thread_info(); !info.empty())
{
sys_log.notice("\n%s", info);
@@ -2809,6 +2879,16 @@ void thread_base::exec()
}
}
if (auto [total, current] = utils::get_memory_usage(); total - current <= 256 * 1024 * 1024)
{
if (reason_buf.empty())
{
reason_buf = std::string{reason};
}
fmt::append(reason_buf, " (Possible RAM deficiency: free RAM: %dMB)", (total - current) / (1024 * 1024));
}
if (!reason_buf.empty())
{
reason = reason_buf;
+1
View File
@@ -4,6 +4,7 @@
#include "util/atomic.hpp"
#include "util/shared_ptr.hpp"
#include <thread>
#include <string>
// Hardware core layout
+1 -1
View File
@@ -329,7 +329,7 @@ bool patch_engine::load(patch_map& patches_map, const std::string& path, std::st
is_valid = false;
continue;
}
else if (serial.size() != 9 || !std::all_of(serial.begin(), serial.end(), [](char c) { return std::isalnum(c); }))
else if (serial.size() != 9 || !std::all_of(serial.begin(), serial.end(), [](char c) { return std::isalnum(static_cast<unsigned char>(c)); }))
{
append_log_message(log_messages, fmt::format("Error: Serial '%s' invalid (patch: %s, key: %s, location: %s, file: %s)", serial, description, main_key, get_yaml_node_location(serial_node), path), &patch_log.error);
is_valid = false;
+3 -1
View File
@@ -23,7 +23,6 @@ Intersection (&) and symmetric difference (^) is also available.
#include "util/types.hpp"
#include "util/atomic.hpp"
#include "Utilities/StrFmt.h"
template <typename T>
concept BitSetEnum = std::is_enum_v<T> && requires(T x)
@@ -384,6 +383,9 @@ public:
}
};
template <typename T>
struct fmt_unveil;
template <typename T>
struct fmt_unveil<bs_t<T>>
{
+3 -3
View File
@@ -27,14 +27,14 @@ void fmt_class_string<cheat_type>::format(std::string& out, u64 arg)
});
}
bool cheat_info::from_str(const std::string& cheat_line)
bool cheat_info::from_str(std::string_view cheat_line)
{
auto cheat_vec = fmt::split(cheat_line, {"@@@"}, false);
const auto cheat_vec = fmt::split(cheat_line, {"@@@"}, false);
s64 val64 = 0;
if (cheat_vec.size() != 5 || !try_to_int64(&val64, cheat_vec[2], 0, cheat_type_max - 1))
{
log_cheat.fatal("Failed to parse cheat line");
log_cheat.error("Failed to parse cheat line: '%s'", cheat_line);
return false;
}
+1 -1
View File
@@ -28,6 +28,6 @@ struct cheat_info
u32 offset{};
std::string red_script{};
bool from_str(const std::string& cheat_line);
bool from_str(std::string_view cheat_line);
std::string to_str() const;
};
+8
View File
@@ -821,6 +821,14 @@ struct color4_base
a *= rhs;
}
void operator += (const color4_base<T>& rhs)
{
r += rhs.r;
g += rhs.g;
b += rhs.b;
a += rhs.a;
}
constexpr color4_base<T> operator * (const color4_base<T>& rhs) const
{
return { r * rhs.r, g * rhs.g, b * rhs.b, a * rhs.a };
+87 -8
View File
@@ -17,6 +17,8 @@
#include <sys/time.h>
#include <unistd.h>
#include <fcntl.h>
#elif __APPLE__
#include <os/os_sync_wait_on_address.h>
#endif
#ifdef _WIN32
@@ -76,21 +78,71 @@ inline int futex(volatile void* uaddr, int futex_op, uint val, const timespec* t
{
#ifdef __linux__
return syscall(SYS_futex, uaddr, futex_op, static_cast<int>(val), timeout, nullptr, static_cast<int>(mask));
#elif __APPLE__
switch (futex_op)
{
case FUTEX_WAIT_PRIVATE:
case FUTEX_WAIT_BITSET_PRIVATE:
{
if (timeout)
{
const uint64_t nsec = timeout->tv_nsec + timeout->tv_sec * 1000000000ull;
return os_sync_wait_on_address_with_timeout(const_cast<void*>(uaddr), static_cast<uint64_t>(val), sizeof(uint), OS_SYNC_WAIT_ON_ADDRESS_NONE, OS_CLOCK_MACH_ABSOLUTE_TIME, nsec);
}
else
{
return os_sync_wait_on_address(const_cast<void*>(uaddr), static_cast<uint64_t>(val), sizeof(uint), OS_SYNC_WAIT_ON_ADDRESS_NONE);
}
}
case FUTEX_WAKE_PRIVATE:
case FUTEX_WAKE_BITSET_PRIVATE:
{
for (;;)
{
int ret = 0;
if (val == INT32_MAX)
{
ret = os_sync_wake_by_address_all(const_cast<void*>(uaddr), sizeof(uint), OS_SYNC_WAKE_BY_ADDRESS_NONE);
}
else if (val-- >= 0)
{
ret = os_sync_wake_by_address_any(const_cast<void*>(uaddr), sizeof(uint), OS_SYNC_WAKE_BY_ADDRESS_NONE);
}
if (val <= 0 || val == INT32_MAX || (ret < 0 && errno == ENOENT))
{
return ret;
}
}
}
}
errno = EINVAL;
return -1;
#else
static struct futex_manager
{
struct waiter
{
uint val;
uint mask;
std::condition_variable cv;
uint val;
uint mask;
std::condition_variable cv;
};
std::mutex mutex;
std::unordered_multimap<volatile void*, waiter*> map;
struct bucket_t
{
std::mutex mutex;
std::unordered_multimap<volatile void*, waiter*> map;
};
// Not a power of 2 on purpose (for alignment optimiations)
bucket_t bucks[63];
int operator()(volatile void* uaddr, int futex_op, uint val, const timespec* timeout, uint mask)
{
auto& bucket = bucks[(reinterpret_cast<u64>(uaddr) / 8) % std::size(bucks)];
auto& mutex = bucket.mutex;
auto& map = bucket.map;
std::unique_lock lock(mutex);
switch (futex_op)
@@ -111,7 +163,9 @@ inline int futex(volatile void* uaddr, int futex_op, uint val, const timespec* t
waiter rec;
rec.val = val;
rec.mask = mask;
const auto& ref = *map.emplace(uaddr, &rec);
// Announce the waiter
map.emplace(uaddr, &rec);
int res = 0;
@@ -127,6 +181,16 @@ inline int futex(volatile void* uaddr, int futex_op, uint val, const timespec* t
{
res = -1;
errno = ETIMEDOUT;
// Cleanup
for (auto range = map.equal_range(uaddr); range.first != range.second; range.first++)
{
if (range.first->second == &rec)
{
map.erase(range.first);
break;
}
}
}
}
else
@@ -134,7 +198,6 @@ inline int futex(volatile void* uaddr, int futex_op, uint val, const timespec* t
// TODO: absolute timeout
}
map.erase(std::find(map.find(uaddr), map.end(), ref));
return res;
}
@@ -153,13 +216,29 @@ inline int futex(volatile void* uaddr, int futex_op, uint val, const timespec* t
if (entry.mask & mask)
{
entry.cv.notify_one();
entry.mask = 0;
entry.cv.notify_one();
res++;
val--;
}
}
if (res)
{
// Cleanup
for (auto range = map.equal_range(uaddr); range.first != range.second;)
{
if (range.first->second->mask == 0)
{
map.erase(range.first);
range = map.equal_range(uaddr);
continue;
}
range.first++;
}
}
return res;
}
}
-4
View File
@@ -37,10 +37,6 @@ QSlider#sizeSlider::handle:horizontal {
QLabel#toolbar_icon_color {
color: rgba(64,64,64,255);
}
/* thumbnail icon color stylesheet */
QLabel#thumbnail_icon_color {
color: rgba(0,100,231,255);
}
/* gamelist icon color stylesheet */
QLabel#gamelist_icon_background_color {
color: rgba(209,209,209,255);
@@ -237,11 +237,6 @@ QLabel#gamelist_icon_background_color {
color: transparent;
}
/* Set Windows Taskbar Thumbnail colors */
QLabel#thumbnail_icon_color {
color: #262626;
}
/* Set Log colors */
QPlainTextEdit#log_frame {
background-color: #000; /* Black */
-5
View File
@@ -573,11 +573,6 @@ QLabel#gamelist_icon_background_color {
color: transparent;
}
/* Set Windows Taskbar Thumbnail colors */
QLabel#thumbnail_icon_color {
color: #23262d;
}
/* Log colors */
QPlainTextEdit#log_frame {
background-color: #23262d;
-5
View File
@@ -265,11 +265,6 @@ QLabel#gamelist_icon_background_color {
color: transparent;
}
/* Set Taskbar Thumbnail colors */
QLabel#thumbnail_icon_color {
color: #444444;
}
/* Memory Viewer */
QLabel#memory_viewer_address_panel {
color: #00cbff; /* Font Color: Blue */
@@ -244,11 +244,6 @@ QLabel#gamelist_icon_background_color {
color: transparent;
}
/* Set Windows Taskbar Thumbnail colors */
QLabel#thumbnail_icon_color {
color: #262626;
}
/* Set Log colors */
QPlainTextEdit#log_frame {
background-color: #181d24; /* Black */
@@ -397,12 +397,6 @@ QLabel#gamelist_icon_background_color {
}
/* Set Windows Taskbar Thumbnail colors */
QLabel#thumbnail_icon_color {
color: #ffd785;
}
QLabel#log_level_always {
color: #00ffff; /* Cyan */
}
-5
View File
@@ -656,11 +656,6 @@ QLabel#color_button {
background: transparent;
}
/* Set Windows Taskbar Thumbnail colors */
QLabel#thumbnail_icon_color {
color: #370048;
}
/* Debugger colors */
QLabel#debugger_frame_breakpoint {
color: #000; /* Font Color: Black */
-5
View File
@@ -664,11 +664,6 @@ QLabel#color_button {
background: transparent;
}
/* Set Windows Taskbar Thumbnail colors */
QLabel#thumbnail_icon_color {
color: #8500ae;
}
/* Debugger colors */
QLabel#debugger_frame_breakpoint {
color: #000; /* Font Color: Black */
-5
View File
@@ -379,11 +379,6 @@ QLabel#gamelist_icon_background_color {
color: transparent;
}
/* Set Windows Taskbar Thumbnail colors */
QLabel#thumbnail_icon_color {
color: #4d4940;
}
QLabel#log_level_always {
color: #00ffff; /* Cyan */
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 497 B

Some files were not shown because too many files have changed in this diff Show More