libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.31k stars 1.84k forks source link

[Feature Request] Retroarch on Ubuntu Touch? #13087

Open nitanmarcel opened 3 years ago

nitanmarcel commented 3 years ago

Description

Ubuntu Touch is a mobile version of the Ubuntu operating system for mobile devices. Currently, the only way to successfully run retroarch in ubuntu touch is by using their libertine container but while it can start it's not usable on touch devices as it doesn't correctly detects touches.

Installing it in Ubuntu Touch without libertine is also doable but It doesn't work with Lomiri (unity8).

Is there a Ubuntu Touch version planned for the future? I've also found an attempt of compiling it for Ubuntu Touch here. Ubports app development/packaging documentation.

Thanks.

Expected behavior

Nothing. The game is not usable on the OS.

Actual behavior

[INFO] RetroArch 1.9.2 (Git bc23d070de)
[INFO] === Build =======================================
[INFO] Capabilities:  ASIMD
[INFO] Built: May  2 2021
[INFO] Version: 1.9.2
[INFO] Git: bc23d070de
[INFO] =================================================
[INFO] [Input]: Found input driver: "sdl2".
[INFO] [Environ]: SET_PIXEL_FORMAT: RGB565.
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Audio]: Set audio input rate to: 48000.00 Hz.
[INFO] [Video]: Video @ fullscreen
[ERROR] [Wayland]: Failed to create compositor.
[INFO] [DRM]: Found 2 connectors.
[INFO] [DRM]: Connector 0 connected: yes
[INFO] [DRM]: Connector 0 has 1 modes.
[INFO] [DRM]: Connector 0 assigned to monitor index: #1.
[INFO] [DRM]: Connector 1 connected: yes
[INFO] [DRM]: Connector 1 has 29 modes.
[INFO] [DRM]: Connector 1 assigned to monitor index: #2.
[INFO] [DRM]: Mode 0: (1080x2400x60x164823) 1080 x 2400, 59.999870 Hz
gbm: failed to open any driver (search paths /usr/lib/aarch64-linux-gnu/dri:${ORIGIN}/dri:/usr/lib/dri)
gbm: Last dlopen error: /usr/lib/dri/msm_drm_dri.so: cannot open shared object file: No such file or directory
failed to load driver: msm_drm
[INFO] [GL]: Found GL context: kms
[INFO] [GL]: Detecting screen resolution 1080x2400.
[INFO] [EGL] Falling back to eglGetDisplay
[INFO] [EGL]: EGL version: 1.5
[ERROR] [EGL]: No EGL config found which satifies requirements.
[ERROR] [EGL]: #0x3005, EGL_BAD_CONFIG
[ERROR] [Video]: Cannot open video driver ... Exiting ...
[ERROR] Fatal error received in: "init_video()"
[INFO] [Core]: Content ran for a total of: 00 hours, 00 minutes, 00 seconds.
[INFO] [Core]: Unloading core..
[INFO] [Core]: Unloading core symbols..
[INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.

This is sdl2 which looks like it tries to connect to Lomiri but fails:

[INFO] RetroArch 1.9.2 (Git bc23d070de)
[INFO] === Build =======================================
[INFO] Capabilities:  ASIMD
[INFO] Built: May  2 2021
[INFO] Version: 1.9.2
[INFO] Git: bc23d070de
[INFO] =================================================
[INFO] [Input]: Found input driver: "sdl2".
[INFO] [Environ]: SET_PIXEL_FORMAT: RGB565.
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Audio]: Set audio input rate to: 48000.00 Hz.
[INFO] [Video]: Video @ fullscreen
[2021-10-08 14:02:52.342134] < - ERROR - > MirConnectionAPI: Caught exception at client library boundary (in mir_connection_release): /build/mir-1.8.1ubports1+0~20210811120104.39~1.gbp2c4340/src/client/rpc/stream_socket_transport.cpp(168): Throw in function virtual void mir::client::rpc::StreamSocketTransport::send_message(const std::vector<unsigned char>&, const std::vector<mir::Fd>&)
Dynamic exception type: boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<mir::socket_disconnected_error> >
std::exception::what: Failed to send message to server: Broken pipe
32, "Broken pipe"
[ERROR] [Video]: Cannot open video driver ... Exiting ...
[ERROR] Fatal error received in: "init_video()"
[INFO] [Core]: Content ran for a total of: 00 hours, 00 minutes, 00 seconds.
[INFO] [Core]: Unloading core..
[INFO] [Core]: Unloading core symbols..
[INFO] [Video]: Does not have enough samples for monitor refresh rate estimation. Requires to run for at least 4096 frames.
hizzlekizzle commented 3 years ago

Does the snap package fare any differently? from those errors, it looks like it might require display and input drivers written specifically for it, if ubuntu touch doesn't support the usual options.

nitanmarcel commented 3 years ago

Does the snap package fare any differently? from those errors, it looks like it might require display and input drivers written specifically for it, if ubuntu touch doesn't support the usual options.

Unfortunately I can't get snap to work on Ubuntu Touch. It's not actually a 'traditional' Linux distro as we're used to on PC.

And with libertine same, I didn't had any luck using snap

On libertine keeps failing because it can't find if AppArmor is configured.

On the actual system it can't find a way to connect to snap's server

nitanmarcel commented 3 years ago

Nah, @hizzlekizzle sorry I can't test the snaps version. Manage to do successfully connect it to the snap severs but I always end up with this error:

Mount snap "snapd" (13171) ([start snap-snapd-13171.mount] failed with exit status 1: Failed to start snap-snapd-13171.mount: Unknown unit: snap-snapd-13171.mount

gouchi commented 3 years ago

For now the RetroArch click package will work only with Libertine container so it won't be accelerated.

We will have to wait the switch to Wayland for all device (including halium) not only the one which are "native".

Or the time they switch to Wayland, we will have to develop an "intermediate interface" using QML (Gearboy, GearSystem, LaiNES...) but it won't be RA UI.

Or try to use RetroArchTouch.

Source : Port type.

iamhumanipromise commented 2 years ago

For now the RetroArch click package will work only with Libertine container so it won't be accelerated.

We will have to wait the switch to Wayland for all device (including halium) not only the one which are "native".

Or the time they switch to Wayland, we will have to develop an "intermediate interface" using QML (Gearboy, GearSystem, LaiNES...) but it won't be RA UI.

Or try to use RetroArchTouch.

Source : Port type.

Oof that switch to Wayland seems to be the limiting factor here.

On a random note, Godot seems to have 3D acceleration on my test Nexus 6P and Nexus 4 devices with UBTouch - is there no way to access whatever permits 3D acceleration?

(Or is this the part where you run into having to use QML for the app? Though from looking on their site it states: You do not have to stick with the traditional C++<->QML Qt model, you can use also Python, Go, Rust or even Javascript for your backend. Does this have any impact?)

Would QML also permit a native application for Manjaro Mobile with Plasma? (Shipping for example on Pinephone)

QML RetroArch could be used for open ecosystem mobile OSes such as Ubuntu Touch, Manjaro Mobile and even for SailfishOS!?