Skip to content

Conversation

@wolfcomp
Copy link
Contributor

@wolfcomp wolfcomp commented Oct 23, 2025

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 wolfcomp marked this pull request as ready for review November 2, 2025 16:41
@wolfcomp wolfcomp requested a review from a team as a code owner November 2, 2025 16:41
@wolfcomp
Copy link
Contributor Author

wolfcomp commented Nov 2, 2025

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

@Blooym Blooym requested a review from goaaats November 2, 2025 18:44
@Blooym
Copy link
Member

Blooym commented Nov 2, 2025

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

@rankynbass
Copy link
Contributor

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
Copy link
Contributor

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.

@wolfcomp
Copy link
Contributor Author

wolfcomp commented Nov 6, 2025

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 03d2a5a due to rebase

@wolfcomp
Copy link
Contributor Author

wolfcomp commented Nov 6, 2025

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

@rankynbass
Copy link
Contributor

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.

@Blooym
Copy link
Member

Blooym commented Nov 6, 2025

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

@keysmashes
Copy link
Contributor

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

@Blooym
Copy link
Member

Blooym commented Nov 6, 2025

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?

@rankynbass
Copy link
Contributor

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.

@Blooym
Copy link
Member

Blooym commented Nov 6, 2025

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


guiBindings = new ImGuiBindings(graphicsDevice, graphicsDevice.MainSwapchain.Framebuffer.OutputDescription, window.Width, window.Height, storage.GetFile("launcherUI.ini"), Config.FontPxSize ?? 21.0f);
Log.Debug("ImGui OK!");
SDL.SetGPUSwapchainParameters(gpuDevice, window, SDLGPUSwapchainComposition.Sdr, SDLGPUPresentMode.Mailbox);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be changed to SDLGPUPresentMode.Vsync.

@rankynbass
Copy link
Contributor

rankynbass commented Nov 6, 2025

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.

@keysmashes
Copy link
Contributor

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

@wolfcomp
Copy link
Contributor Author

wolfcomp commented Nov 7, 2025

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.

@Blooym
Copy link
Member

Blooym commented Nov 21, 2025

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

@wolfcomp
Copy link
Contributor Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants