Commit Graph
53 Commits
Author SHA1 Message Date
libretroadmin f1208a7a5a Make threading lock-free
The core and the headless tools no longer use mutexes, condition variables,
spinlocks, std::atomic, std::thread or volatile flags. Threads hand off through
libretro-common's retro_atomic and rthreads plus a few small pieces on top of
them in Common/Thread: Thread, MpscQueue, EventCounter, ParkingLot waits and
ReaderGate. Every wait blocks until it's woken; nothing polls on a timer.

State that only one thread touches just loses its lock. The PSP filesystem,
sceIo and the savedata dialog now belong to the emulation thread: async reads
and writes run when they're queued and complete later in emulated time, and
the IO and savedata threads are gone. The friend finder only talks to the
adhoc server and hands what it gets to the emulation thread. GPU init always
runs on the thread that starts the game.

The Vulkan render and compile queues, pipeline and render pass caches, delete
list and SPIR-V cache, the GL render queue, the software renderer's jit caches,
the file loader caches, the web debugger, UPnP, input, savestates, logging and
the GE debugger all hand off through queues and atomics. The IR jit's spinning
profiler thread goes.

A CPU thread with nothing to run now sleeps until work is queued instead of
spinning. Headless with --debugger waits for a client while stopped, and ends
the run once every client that connected has left. Web server shutdown keeps
servicing the CPU queue until the server has finished.
2026-10-09 04:56:16 +02:00
libretroadmin f0b97a2e90 Remove the standalone frontends
The libretro core is the frontend, and the headless tools are the test and
debugging hosts. The Windows, UWP, Android, iOS, macOS and SDL apps, the UI
framework and imgui go, along with what only they used: the Win32 debugger
hooks (g_frameMutex, the shutdown lock), JNI thread attachment, the Android
text drawer, RAIntegration, Discord, recent files, game installs, tilt input,
the audio resamplers, the control mapper, memstick moving and the remote ISO
and upload server modes. The web server keeps the debugger. The MSVC, Gradle
and ndk-build projects go too.
2026-10-09 04:56:10 +02:00
Henrik RydgårdandClaude Opus 5.5 9e54cebcc2 Camera: Remember the JPEG quality that fit the last frame
Start from the quality that fit the previous frame instead of the top, so
most frames encode once. Step down while a frame is too big, and step back
up when one comes out under half the limit. Windows and the recompression
fallback share the logic.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 12:29:04 -06:00
Henrik RydgårdandClaude Opus 5.5 07556d064e Camera: Recompress oversized frames on every platform
Android, iOS, macOS and Linux encode camera frames at a fixed quality, so a
detailed frame can exceed the game's framesize just as on Windows before.
pushCameraImage now decodes such a frame and re-encodes it at lower quality
until it fits.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 12:24:40 -06:00
Henrik RydgårdandClaude Opus 5.5 9d33e828ab Camera: Compress webcam frames to fit the game's framesize
The PSP camera keeps JPEG frames within the framesize from the video setup.
Go!Edit stores frames in 15KB slots and only takes frames that fit, so our
uncompressed-quality webcam frames were dropped and one frame got repeated
for the whole clip. Lower the JPEG quality until a frame fits.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 11:44:10 -06:00
Henrik RydgårdandClaude Opus 5.5 280ae09856 sceUsbCam: Make sceUsbCamReadVideoFrameBlocking wait for the next frame
It returned at once. Go!Edit reads frames in a loop on a high-priority
thread (bhCameraGetJpeg) that only yields to its own priority level, so
after the "Loading complete" dialog it spun and starved the rest of the
game. Return at the camera's next frame tick, at the rate from the setup
params.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 11:19:18 -06:00
Henrik RydgårdandClaude Opus 5.5 52299a5e17 Savestate: Save sceDmac and sceUsbCam, which were never called, and NpDrm
__DmacDoState and __UsbCamDoState existed but weren't in the module list,
so the memcpy deadline and camera state carried over from before a load.
The NpDrm licensee key wasn't saved or reset at all, so EDATA opened after
a load in a fresh session couldn't be decrypted.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 11:32:07 -06:00
Henrik RydgårdandClaude Opus 5.5 937c100af8 Savestate: Defer operations while the GE debugger holds a list
The list belongs to the sceGe call still in progress, whose end would have
run on the loaded CPU state. Also stop the camera and GPS when a state has
them off, don't restart capture when saving, and fix a double free of the
pmp frame queue (it only holds the media engine's own frame).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 09:34:06 -06:00
Henrik Rydgård 8cd7e1b2c0 Delete all support for Qt
Our Qt backend has long been left behind and doesn't even support Vulkan
currently. There would be a lot of work to make it viable, and I don't
think anyone is really interested.

ImGui on SDL will soon fulfill the need for a more classic user interface
with a menu bar on Linux, and on Mac we already have a native UI.
2026-08-08 18:18:28 +02:00
Henrik Rydgård 5c1d113279 Warning fix in sceUsbCam 2026-07-27 14:58:59 +02:00
Henrik Rydgård afe4d5beaf Buildfixes, dependency shuffling to make things more logical 2026-07-24 14:43:34 +02:00
Henrik Rydgård 78c9952731 Move Qt camera code out of Core 2026-07-24 12:06:15 +02:00
Henrik Rydgård 240a974e95 Remove direct dependency from Core to MacCameraHelper.mm 2026-07-24 12:06:15 +02:00
Henrik Rydgård d2c2ee337e Remove the mfplat.dll hard dependency (now dynamic). 2026-05-11 16:09:22 +02:00
Tolstoy Justin fbc8a04db4 Remove still image capture stubs 2025-11-09 18:24:26 +00:00
Tolstoy Justin 673c1e76a9 Add macOS camera bridge and polish PSP camera emulation 2025-11-09 00:01:07 +00:00
Henrik Rydgård 4e25f44eef Rename some module-related functions to include HLE where appropriate 2025-03-31 11:17:50 +02:00
Henrik Rydgård 28b2c7f540 HLE log rename part 1: Remove duplicate log functions. Return type should be determined by metadata. 2025-01-29 09:45:39 +01:00
Henrik Rydgård e01ca5b057 Logging API change (refactor) (#19324)
* Rename LogType to Log

* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.

* Mac/ARM64 buildfix

* Do the same with the hle result log macros

* Rename the log names to mixed case while at it.

* iOS buildfix

* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +02:00
Henrik Rydgård 87d0c21f14 Make proper requests for the external hardware commands (gps, microphone, camera) 2023-03-22 23:52:25 +01:00
Henrik Rydgård d3955b42bb Rename some system functions, merge the Launch* ones.
android launchurl buildfix
2023-03-21 12:22:59 +01:00
Unknown W. Brackets 3a372aa615 HLE: Remove misc usage of WriteStruct().
Prefer PSPPointer and notifying.
2022-09-03 10:44:11 -07:00
Unknown W. Brackets 9d22297a90 Windows: Use CommonWindows more consistently.
Also, make sure WinSock2.h is included beforehand where it's needed.
2021-02-14 10:30:10 -08:00
shenweip 9a85ab2c43 Writes target buffer address in multiple times.
Would be better to calculate read data length.
2020-11-24 17:15:26 +08:00
shenweip 235919f905 Try to implement some related funcs.
Marked as UNTEST.
2020-11-23 17:13:55 +08:00
shenweip 730d9f8fd9 Clean up. 2020-11-23 15:49:14 +08:00
shenweip f2bd0b9f6f Implements sceUsbCamGetMicDataLength. 2020-11-23 14:07:11 +08:00
shenweip c70c8cad6e Makes a distinction between blocking and non blocking modes. 2020-11-22 02:06:15 +08:00
Florin9doi 6531c7f4f8 [Android] Retrieve isMicStarted from AndroidAudio state 2020-10-24 20:16:22 +03:00
Florin9doi 9379fe1399 [Android] Audio record using OpenSL 2020-10-24 19:51:30 +03:00
Henrik Rydgård f01ba6dc84 Move NativeApp.h to Common/System, split into NativeApp.h and System.h
Buildfix
2020-10-04 11:42:16 +02:00
Henrik Rydgård ff8148dd92 Move native/util, native/data and native/i18 to Common/Data.
Also move colorutil.cpp/h

linking build fix experiment

Delete a bunch of unused CMakeLists.txt files

CMakeLists.txt linking fix

Don't include NativeApp.h from any headers.

Android.mk buildfix

Half of the UWP fix

Buildfix

Minor project file cleanup

Buildfixes

Guess what? More buildfixes!
2020-10-04 07:28:29 +02:00
Henrik Rydgård 14532847c7 Fix some minor issues found by address-sanitizer on Linux 2020-08-11 22:28:36 +02:00
Unknown W. Brackets b8342fb8ec SaveState: Rename ChunkFile files to Serialize.
Makes more sense and less weird than ChunkFileDoMap, etc.
2020-08-10 08:04:05 +00:00
Unknown W. Brackets 4b4e3432cd SaveState: Split Do() into a separate header. 2020-08-10 08:03:41 +00:00
shenweip 107d58a74b Also partly implement in sceUsbCam. 2020-07-31 18:26:21 +08:00
twinaphex 649f12f8ab (Libretro) Buildfixes 2020-07-10 06:48:20 +02:00
Florin9doi 58b04ef77b QT Api for Camera (Linux/macOS)
Allow the use of different resolutions (win/android/iOS)
2020-02-10 08:47:55 +02:00
Henrik Rydgård 9394f0f7e0 Merge pull request #12592 from Florin9doi/iosCam
Camera updates (iOS/Android)
2020-01-26 10:58:48 +01:00
Florin9doi 63196897e4 Do not stop camera if unnecessary 2020-01-26 10:04:12 +02:00
Florin9doi 5fbf2d7713 Add camera/location support for iOS
Add front camera support for Android
Allow to change the active camera in-game
2020-01-25 16:54:45 +02:00
shenweip 3f585782f1 Don't shut down camera when exiting games,also re-enumerating devices if
received WM_DEVICECHANGE.
2020-01-24 16:05:28 +08:00
Florin9doi 09e32223c2 Add camera support for linux (V4L2) 2020-01-16 23:25:34 +02:00
shenweip f39aa47e9b Oops 2020-01-14 17:30:15 +08:00
shenweip d1e354ce04 Improve compatibility.
Don't implemente on vista and UWP,they don't have a full support for this.
2020-01-14 17:15:11 +08:00
shenweip 034a257baf Add camera support for windows. 2020-01-13 15:06:02 +08:00
Henrik Rydgård 25dfc9ea9c sceUsbCam: Fix some bugs my last commits introduced. 2019-08-26 23:25:33 +02:00
Henrik Rydgård 402b6b2457 Improve some logging (%08x for addresses) 2019-08-26 18:26:52 +02:00
Henrik Rydgård 5a68fc29c9 sceUsbCam: Heap-allocate the buffer. 2019-08-26 18:26:52 +02:00
Florin9doi b114984c88 [Android] Fix code style 2019-08-25 13:04:33 +03:00