Currently we have ld_libdir_abs which defaults to false. In that case,
both the mangohud shell wrapper, as well as the json files, reference
the DSOs directly without any path component.
This means that at run-time the dynamic linker, vulkan loader as well as
pressure-vessel will need to jump through hoops and figure out the
bitness of the DSO, whether one wants the 32 or 64bit one and even then
there will be confusing messages like:
fatal: /usr/lib/libMangoHud.so: wrong ELF class: ELFCLASS32
When set to true, as seen in the in-tree build.sh we'll append empty
path to LD_LIBRARY_PATH (bad), the full path with the $LIB token will be
used with LD_PRELOAD (good) and json files (bad).
Since we are generating separate json files, we can use the actual path
(while $LIB currently works, it's not really strict json nor documented
as supported). We can also drop the dubious LD_LIBRARY_PATH manipulation
This basically reinstates the prepend_libdir_vk=true option that was
dropped earlier.
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
There's nothing C++ in there, so rename the file appropriately.
While in there, use C99 initializers, annotate static functions as
such and pull the implicit stdbool.h.
Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
This resolves missing GPU names due to deviceID only being computed for
AMD gpus. It also filters out display adapters so there is less noise in
the logs when scanning cards.
vkCreateSwapchainKHR and vkQueuePresentKHR may share the same ImGui context accidentally and
vkCreateSwapchainKHR might (re)create font image and destroy old font atlas while vkQueuePresentKHR is still rendering :(
This one seems janky - other frontends (glx/egl LD_PRELOAD, Vulkan)
init their own global window_size.
Although in reality we use the initial data solely to set the imgui
"window" position and we immediatelly overwrite it, with the follow-up
call render_imgui().
Odds are this won't fix the glitchy (re)sizes but it's a step in the
right direction.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Currently we're destroying the window, from under the glfw's framework
feet.
Basically we do a use-after-free, as glfwWindowShouldClose() is called
and due to some miracle we don't crash out.
Since we suspend all rendering, there's no need to actually destroy the
window - just iconify/restore it. A simple show/hide was attempted but
empirically did not work.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Currently, if the user sets attribute we send dummy data to mangohud.
Avoid that by pulling the attrib handling into main and avoiding the
duplicate attribute name checking.
Kill off the no-longer relevant TODO while we're here.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>