It does mean I won't be able to use HDR in GZDoom anymore, since X11 doesn't handle the necessary information. Not a great loss all things considered I suppose, but it is something. Though also not knowing the inner workings of SDL2 or XWayland, it's difficult to tell if it's not actually an issue with X11, or if it just happens to avoid what seems to be some kind of timing or race condition.
With that, it freezes notably sooner, now after Texman.Init: Init texture manager.. The loading bar printed in the terminal also doesn't fill up (previously it would fill almost all the way up with, essentially, [=======.] before freezing, while now it stops right away with [........]).phinet wrote: ↑Thu Aug 28, 2025 6:40 pm I'm wondering if this has something to do with your framerate? That specific render call never happens on my machine, due to the throttling that is implemented. If I disable the throttling, things still work as expected. I'm curious what would happen on your system if the throttling is disabled.
To do that you can change the if statement at `startscreen.cpp:668` fromtoCode: Select all
if (nowtime - screen->FrameTime > minwaittime || force)
Code: Select all
if (1)
Code: Select all
... everything above is basically the same as before ...
#12 0x0000555555d56d22 in VulkanSwapChain::QueuePresent (this=0x555557dcc480, imageIndex=<optimized out>, semaphore=<optimized out>) at /home/chris/projects/gzdoom/libraries/ZVulkan/src/vulkanswapchain.cpp:262
#13 0x000055555585e0dd in VkFramebufferManager::QueuePresent (this=<optimized out>) at /home/chris/projects/gzdoom/src/common/rendering/vulkan/textures/vk_framebuffer.cpp:78
#14 0x0000555555843c6a in VkCommandBufferManager::WaitForCommands (this=0x555557229540, finish=finish@entry=true, uploadOnly=uploadOnly@entry=false) at /usr/include/c++/14/bits/unique_ptr.h:193
#15 0x00005555558406f4 in VkCommandBufferManager::WaitForCommands (this=<optimized out>, finish=true) at /home/chris/projects/gzdoom/src/common/rendering/vulkan/system/vk_commandbuffer.h:22
#16 VulkanRenderDevice::Update (this=0x555558ca48b0) at /home/chris/projects/gzdoom/src/common/rendering/vulkan/system/vk_renderdevice.cpp:230
#17 0x0000555555ac04fe in FStartScreen::Render (this=this@entry=0x55555723d090, force=force@entry=false) at /home/chris/projects/gzdoom/src/common/startscreen/startscreen.cpp:705
#18 0x0000555555ac0645 in FStartScreen::Progress (this=0x55555723d090, advance=<optimized out>) at /home/chris/projects/gzdoom/src/common/startscreen/startscreen.cpp:652
#19 0x0000555555b04cef in FTextureManager::AddGroup (this=this@entry=0x555556cdac20 <TexMan>, wadnum=wadnum@entry=0, ns=ns@entry=1, usetype=usetype@entry=ETextureType::Sprite) at /home/chris/projects/gzdoom/src/common/textures/texturemanager.cpp:594
#20 0x0000555555b07a7b in FTextureManager::AddTexturesForWad (this=0x555556cdac20 <TexMan>, wadnum=0, build=...) at /home/chris/projects/gzdoom/src/common/textures/texturemanager.cpp:945
#21 0x0000555555b0865d in FTextureManager::AddTextures (this=this@entry=0x555556cdac20 <TexMan>, progressFunc_=progressFunc_@entry=0x55555587dde0 <_FUN()>, checkForHacks=checkForHacks@entry=0x55555587cc10 <CheckForHacks(BuildInfo&)>, customtexturehandler=0x555555a27710 <InitBuildTiles()>) at /home/chris/projects/gzdoom/src/common/textures/texturemanager.cpp:1227
#22 0x0000555555883e65 in D_InitGame (iwad_info=<optimized out>, iwad_info@entry=0x555557207ec0, allwads=std::vector of length 0, capacity 0, pwads=std::vector of length 0, capacity 0) at /home/chris/projects/gzdoom/src/d_main.cpp:3399
#23 0x0000555555886414 in D_DoomMain_Internal () at /home/chris/projects/gzdoom/src/d_main.cpp:3846
#24 GameMain () at /home/chris/projects/gzdoom/src/d_main.cpp:3927
#25 0x00005555556a6bd2 in main (argc=1, argv=0x7fffffffdb38) at /home/chris/projects/gzdoom/src/common/platform/posix/sdl/i_main.cpp:207
To make sure, I also ran it without VK_HDR_layer, and the freeze still happens exactly the same (verified in the backtrace that vkroots::wrap_QueuePresentKHR and HdrLayer::VkDeviceOverrides::QueuePresentKHR are no longer part of it, VulkanSwapChain::QueuePresent calls right to wsi_common_queue_present).