[CI] : Add Mini builds for x64 and x64 SSE2#3699
[CI] : Add Mini builds for x64 and x64 SSE2#3699rtissera wants to merge 4 commits intostenzek:masterfrom
Conversation
Add native x64 mini (SDL3/ImGui) AppImage to the Linux AppImage workflow. Introduces make-appimage-mini.sh packaging script and a mini-specific desktop file, and adds the artifact to both release channels.
Only include shared libraries that exist in the native x64 prebuilt deps. The previous list included libs from the cross prebuilt that are either statically linked or system-provided on native x64 (e.g. libbacktrace).
Translations are produced by the Qt frontend build. When building with only the mini frontend, the translations directory does not exist.
Add SSE2 fallback variant of the mini AppImage, mirroring the existing x64 SSE2 Qt build.
|
I'm a little confused about the use case here - mini is only intended for systems that aren't running a window manager, and is missing a ton of functionality (most important being the ability to update itself). Like super low spec arm boards for example, and afaik there aren't any x86 machines like this. Not 100% against the idea, but it would need to have a use case that's not already covered. |
|
I understand your valid point. |
|
Don't those still have a window manager/compositor? I don't own any of these, but I was under the impression that SteamOS etc ran gamescope even in game mode. |
|
Yes, SteamOS is based on gamescope compositor, it can run the full Qt build for sure, just Mini is lighter. |
|
Performance-wise it's exactly the same code running. Startup time is actually slightly worse in the mini variant since it needs to create the GPU device for BPM. The Widgets UI doesn't need to. Basically, running the Qt appimage with There's also some other issues, like fullscreen mode switching not working because SDL doesn't let you disconnect a GL context from a window, that work fine in the full build. |
|
Ok, understood, wrong assumptions from my side then. I did more CI work if you are interested that I can throw in another PR, especially CI build infrastructure + mini build for riscv64 (maybe the full one is more approriate, but cross building Qt to RV64 is going to be another story...). If you feel like the mini bulid for x64 is inappropriate feel free to close this PR. |
|
RV64 would be relatively straightforward to add - just need to include it in the matrix here and in the docker images (https://github.com/duckstation/containers). I was using the Qt interface on my board, but didn't bother with CI since I don't think it'd get much/any use. Edit: Actually, there might not be an appimage stub/runtime for rv64. Probably not much work to add that.. but again, is it even worth it? |
|
New RV64 boards (RVA23 compliant) are coming and squeezing a lot more performance. |
|
RVV is really only useful for the software renderer, MDEC, and some book-keeping in the hardware renderer (vector wrapper classes). This is an issue because this is all compile-time, not runtime generated code (same reason I have to have a separate SSE2 build). The software renderer can potentially have multiple versions compiled in the same binary - I PoC'ed it with 256-bit AVX, but never ended up enabling it because the benefit was so small. Dynarec doesn't benefit from vectorization outside of icache checks, and this is very minimal. While I do have unit tests for the vector classes, it's not something I'd want to ship until I had hardware myself that I could validate more extensively. |
This PR adds support for building DuckStation-Mini to x86_64 and x86_64 SSE2 targets.