Update SDL and ImGui to newer versions
Things changing in this: .NET 8 -> .NET 9 Serilog 2 -> Serlog 4 ImGui.NET -> Hexa.NET.ImGui Veldrid -> Hexa.NET.SDL3
.NET update reason: Pulling in newest XIVLauncher.Common for future additions.
Serilog update reason: .NET 9 doesn't allow for Serilog 2.
ImGui update reason: Need better bindings for SDL3.
SDL update reason: Veldrid is abandoned.
Build pipeline will fail due to the .NET build only having SDK 8.0.x and not SDK 9.0.x
I have not checked all draws for assert errors, but on a first pass it looks fine.
Some of the coloring seems to have changed slightly when it comes to the background draw, but not sure if it might be related to the new styling options that is in the new ImGui version.
Build will fail to complete until https://github.com/goatcorp/XIVLauncher.Core/blob/main/.github/workflows/build.yml#L28-L31 allows for .NET 9 builds which both .NET 8 and 9 comes pre-installed with the Linux runner
Requesting goat's review for this one since to my knowledge prior work with HexaImGui was done in Dalamud (and I'm not all-to-knowledgable on the specifics). From a first glance though all this looks fine to me
Builds but does not run on bazzite/fedora43. When launched from terminal:
ERROR: vkQueuePresentKHR VK_ERROR_SURFACE_LOST_KHR
wp_linux_drm_syncobj_surface_v1#90: error 1: Surface got destroyed already
ERROR: Wayland display connection closed by server (fatal)
ERROR: This surface does not support presenting!
Tried with SDL_VIDEODRIVER=x11, and I get:
ERROR: Present mode not supported!
X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 146 ()
Minor opcode of failed request: 5
Resource id in failed request: 0x2c0002e
Serial number of failed request: 1024
Current serial number in output stream: 1026
As of d4cdb5d (fix id assert error), it launches and all the settings tabs work. Still some graphical issues, but the window pops up, and then it successfully launches the game.
As of d4cdb5d (fix id assert error), it launches and all the settings tabs work. Still some graphical issues, but the window pops up, and then it successfully launches the game.
new hash 03d2a5a3ea28a59afeb2fa02e70d7711ee0dbe47 due to rebase
X11 seems to not report scaling correctly (could just be xwayland) so may need to add a scaling override setting if this becomes a problem. Default launches with video driver "wayland" unless explicitly set otherwise.
Everything else works as the old XLCore did, just with newer ImGui version and better bindings
Can confirm, aside from slightly wonky X11 scaling when in KDE wayland with "Apps scale themselves", it's working. There may be some edge cases we havent hit yet, but I was able to use all the settings tabs, change settings, save settings. One time password works as well.
We need to have a steam deck user do some testing to see how it functions in that environment, though. Need to make sure they can still interact with it, enter info, etc.
I’ll do device testing for steam deck and another set of tests for regular desktop setups as soon as I’m available to do so
seems like it works for me (X11). however, the cursor (in at least the username/password boxes) is very thin and also red, so it's really hard to see.
also, this manages to induce really bad coil whine somewhere in my computer, which nothing else has done with this computer ever?? the pitch modulates with window size and changes on different settings tabs, and doesn't reproduce with a screenshot. no idea at all
also, this manages to induce really bad coil whine somewhere in my computer, which nothing else has done with this computer ever?? the pitch modulates with window size and changes on different settings tabs, and doesn't reproduce with a screenshot. no idea at all
Sounds like the frame rate isn’t being capped properly for the launcher UI and thus overworking the GPU?
I just checked with mangohud (mangohud --dlsym ./XIVLauncher.Core) and it was running at >6500 fps. So definitely need to cap frame rate. We can probably just set Vsync on.
The current version of the launcher should already be limiting its framerate so we should be able to copy that
Changing SDLGPUPresentMode.Mailbox to SDLGPUPresentMode.Vsync does, in fact, reduce the framerate to my monitor refresh rate.
I launched the game, and the game runs according to in-game settings. It doesn't accidentally force vsync on the game. So if I disable frame-rate limit, I get greater than my refresh rate at the character select screen.
cursor colour and framerate are indeed fixed! (also, I didn't notice before, but it seems to respect my scaling settings now, which is really nice)
and, yeah, the colours in general seem slightly different, but it's fine; the biggest change I can see is the tabs, which used to look like this:
but now look like this:
Went from ImGui version 1.87 to ImGui 1.92 so they introduced a lot more styling params so just find which one should match what value. I just tried to match what they were extending on in a enum.
The background colour / image are mildly discoloured, but otherwise I'm not seeing any other regressions on my system. Changing the backend also seems to have fixed some controller functionality that was previously broken.
The background colour / image are mildly discoloured
Just mess around with the values added here to see if it changes anything since the new ImGui version crashed without them https://github.com/goatcorp/XIVLauncher.Core/pull/281/files#diff-41c55822af90f7032d342bcdaf38a1dff2ce000042eece824fd95016dbdffbe6R117-R125