Commit graph

204 commits

Author SHA1 Message Date
Sergey Stepanov
1dc0cabc2b Add special Dockerfile for tiny coordinator (<10Mib) and worker (<150Mib) containers 2023-05-12 14:31:21 +03:00
Sergey Stepanov
b227260060 Embed config.yaml into both apps 2023-05-12 14:31:21 +03:00
Sergey Stepanov
9231120a55 Add base path for games in workers 2023-05-12 14:31:21 +03:00
Sergey Stepanov
63e3a7f6bd
Read YAML keys in lowercase internally 2023-05-10 22:22:31 +03:00
Sergey Stepanov
3815e18027
Remove the hack involving the /static route 2023-05-03 11:11:08 +03:00
Sergey Stepanov
62fc68e88b
Add optional static linking with vpx, x264, opus 2023-04-24 00:16:00 +03:00
Sergey Stepanov
ece1efad16
Add optional static linking with vpx, x264, opus 2023-04-23 23:51:38 +03:00
Sergey Stepanov
8893e1e5bf Update config manager 2023-04-22 17:05:28 +03:00
Sergey Stepanov
c13099c56a Remove hackish way of adding ICE servers
Use config files instead (k8s ConfigMap or something).
2023-04-22 17:05:28 +03:00
Sergey Stepanov
eda90d74e6
Rename C.stop (it crashes PCSX on Ubuntu) wtf omegalol 2023-04-21 00:26:41 +03:00
Sergey Stepanov
ee58af488d
Advance 1 frame only with Mupen 2023-04-20 22:54:35 +03:00
Sergey Stepanov
c8eb672ecd
Fix missing return 2023-04-20 22:54:12 +03:00
Sergey Stepanov
f00c27a226
Clean nanoarch 2023-04-20 14:18:57 +03:00
Sergey Stepanov
853c7a6f81 Fix save/load for Mupen64
By passing function arguments into the synchronized un-libco loop, we can now save and restore Mupen game states without segfaults.
2023-04-16 13:24:28 +03:00
Sergey Stepanov
b48a6c92f6 Refactor nanoarch names 2023-04-16 13:24:28 +03:00
Sergey Stepanov
5034f86667 Save/Load without malloc 2023-04-16 13:24:28 +03:00
Sergey Stepanov
d830821ceb Move last frame time init fn to the end 2023-04-16 13:24:28 +03:00
Sergey Stepanov
137397dbc1 Update Libretro env handlers 2023-04-16 13:24:28 +03:00
Sergey Stepanov
66dbdba863 Use explicit Libretro log levels instead of magic numbers 2023-04-16 13:24:28 +03:00
Sergey Stepanov
33099d098f Use new page-segmentation friendly unsafe.Slice for mem restore 2023-04-16 13:24:28 +03:00
Sergey Stepanov
43cb05e088 Remove unused OS signal handlers in C
The idea is that we make just one OS signals handler on the C (CGO) side instead of Go and handle everything there from both, which is needed for proper termination process of multithreaded Libretro cores. But it leads to strange segfaults.
2023-04-16 13:24:28 +03:00
Sergey Stepanov
a1b24b0a85 Handle faster most called Libretro env getters 2023-04-16 13:24:28 +03:00
Sergey Stepanov
7c2b88716b Update libretro.h 2023-04-16 13:24:28 +03:00
Sergey Stepanov
9325fddc1f Make RETRO_ENVIRONMENT_GET_SAVESTATE_CONTEXT return RETRO_SAVESTATE_CONTEXT_NORMAL explicitly for NeoGEO 2023-04-16 13:24:28 +03:00
Sergey Stepanov
5920af5a36
Add RETRO_ENVIRONMENT_GET_SAVESTATE_CONTEXT for NeoGEO 2023-04-08 01:18:41 +03:00
Sergey Stepanov
f6e86a465f
Increase ws write timeout for slow IO 2023-04-07 22:24:35 +03:00
Sergey Stepanov
7b0d212fc0
Simplify core options passing 2023-04-06 20:40:58 +03:00
Sergey Stepanov
e3ecd8fef0
Remove not needed rand seeding 2023-04-06 20:39:41 +03:00
Sergey Stepanov
686f5e7e87
Allow override config from /home 2023-04-06 12:01:49 +03:00
sergystepanov
cfd5b1ae8d
Libretro cores config in yaml (#392)
Removes separate config files for Libretro cores stored in the cores folder and replaces them with options in the main config.yaml file.
2023-04-06 11:25:49 +03:00
Sergey Stepanov
b5cb33812b
Add dummy CLEAR_ALL_THREAD_WAITS_CB for Mupen64 core in order to support the threaded renderer 2023-04-04 17:59:24 +03:00
Sergey Stepanov
9178dab7dd
Fix N64 overlapping frame draw 2023-04-03 20:39:49 +03:00
Sergey Stepanov
0f66f35673
Add the initial RETRO_ENVIRONMENT_SET_MESSAGE support 2023-03-31 18:50:42 +03:00
Sergey Stepanov
83b40e10e5
Increase default socket timeouts 2023-03-29 13:37:01 +03:00
Sergey Stepanov
b24e82c145
Fix disabled cloud save downloads 2023-03-26 00:14:19 +03:00
Sergey Stepanov
b6366e7b88
Update room tests 2023-03-18 23:50:05 +03:00
sergystepanov
3bb54fdad4
Clean API (#391)
Remove hard coupling between api (all the API data structures) and com (app clients communication protocol and logic).
2023-03-18 20:24:06 +03:00
Sergey Stepanov
cd056ee976
Bump to v3 2023-03-16 23:46:53 +03:00
Sergey Stepanov
faf347a44a
Make rand.Seed not deprecated 2023-02-17 18:12:38 +03:00
Sergey Stepanov
04d9817b94
Set worker UID properly 2023-02-14 23:16:15 +03:00
Sergey Stepanov
207d514e8a
Move balancer into hub 2023-02-11 02:16:48 +03:00
Sergey Stepanov
d27d819821
Add variable frame rate (VFR) option for cores.
It is enabled only for N64.
Disabling it for everything else may lead to a much smoother video playback (less stuttering).
2023-02-10 18:03:50 +03:00
Sergey Stepanov
beaf862dec
Don't cache nil frames 2023-02-10 17:47:58 +03:00
Sergey Stepanov
3076be593e
Fix possibility of lost IDs for WS requests/responses 2023-02-09 14:37:41 +03:00
Sergey Stepanov
21a2680027
Fix websocket tests 2023-02-09 14:35:56 +03:00
sergystepanov
c7b5d1afc3
Fix possible infinite loop on Mupen close (#389)
For some reason the Libretro Mupen core breaks the pseudo-random order of channel selection leading to constant skip of the done channel on ticker aka an infinite loop.
2023-02-04 22:47:53 +03:00
Sergey Stepanov
652ffe37cc
Do not track DTLS errors (client disconnect) on WebRTC close 2023-02-04 20:32:16 +03:00
Sergey Stepanov
0d7467048a
Log abnormal WebRTC sample writes 2023-02-04 20:30:37 +03:00
sergystepanov
2b81c3fb87
Some optimizations (#387)
- Fixed broken image cache for the first stage RGBA frames. It was not a thread-safe one, which led to image tearing (parts of old images in multiple consecutive frames).
- 180 flip function for the OpenGL coordinate system has been moved into the rotation part.
- Optimized YUV converter.
- Optimized color converters:
  - Use __restrict pointers.
  - Draw image pixels with the faster bitwise operators and pointer arithmetic as 32/16bit LE numbers (may break on ARM devices like RPi). 
  - Pass uints for less num conversions.
  - Much faster XRGB -> RGBA conversion with Go's stdlib 32bit flip.
- Wrapped RGBA images into a custom struct in order to bypass opacity tests for the standard Go png functions, which needed for the PNG file export. Before that we set RGBx opacity byte explicitly during the pixel format conversions (much slower).
- Made Libretro core shutdown more deterministic. When we run a C core separately from the main Go process we have to make sure that the C core is not doing anything in its syscall while we stopping the emulator. Basically, a blocking call may be suspended on the Go's side while the other goroutines have no knowledge of that.
- Less info level logs.
- Added recording user label.
- Enabled RTCP sender reports by default, which may help with A/V sync.
- Check onMessage webrtc handler if it's set. May crash the program if not.
- Fixed some make dirs permissions.
- Enabled console colors (since MS has finally fixed their bloody Terminal).
- Disable log in some tests.
- Updated deps.
2023-01-31 22:22:03 +03:00
Sergey Stepanov
c641065564
Enable RTCP sender reports by default 2023-01-15 01:07:53 +03:00