XIVLauncher.Core icon indicating copy to clipboard operation
XIVLauncher.Core copied to clipboard

Update SDL and ImGui to newer versions

Open wolfcomp opened this issue 2 months ago • 15 comments

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

wolfcomp avatar Oct 23 '25 23:10 wolfcomp

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

wolfcomp avatar Nov 02 '25 16:11 wolfcomp

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

Blooym avatar Nov 02 '25 18:11 Blooym

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

rankynbass avatar Nov 02 '25 22:11 rankynbass

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.

rankynbass avatar Nov 06 '25 05:11 rankynbass

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

wolfcomp avatar Nov 06 '25 06:11 wolfcomp

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

wolfcomp avatar Nov 06 '25 06:11 wolfcomp

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.

rankynbass avatar Nov 06 '25 06:11 rankynbass

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

Blooym avatar Nov 06 '25 08:11 Blooym

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

keysmashes avatar Nov 06 '25 22:11 keysmashes

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?

Blooym avatar Nov 06 '25 22:11 Blooym

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.

rankynbass avatar Nov 06 '25 22:11 rankynbass

The current version of the launcher should already be limiting its framerate so we should be able to copy that

Blooym avatar Nov 06 '25 22:11 Blooym

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.

rankynbass avatar Nov 06 '25 22:11 rankynbass

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:

image

but now look like this:

image

keysmashes avatar Nov 07 '25 17:11 keysmashes

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.

wolfcomp avatar Nov 07 '25 18:11 wolfcomp

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.

image

Blooym avatar Nov 21 '25 12:11 Blooym

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

wolfcomp avatar Nov 21 '25 16:11 wolfcomp