Closed GloriousEggroll closed 3 years ago
Logs please. Of course the library gets loaded, but it doesn't really say anything since what matters is if the functions get hooked. And there is no dlsym hooking, so that might be the reason.
dlsym hook still doesnt work. let me know what/how you'd like me to capture logs and I can provide them.
Standard terminal output.
It works for me with glmark2 now, I don't really have any native opengl games unfortunately. You need to use 32/64bit library accordingly.
Standard terminal output.
It works for me with glmark2 now, I don't really have any native opengl games unfortunately. You need to use 32/64bit library accordingly.
I am using the 64 bit library with the 64 bit games mentioned in my first comment:
LD_PRELOAD=/usr/lib64/libobs_glcapture.so %command%
Here is the log from Last Epoch:
Last Epoch]$ LD_PRELOAD=/usr/lib64/libobs_glcapture.so "$PWD/Last Epoch.x86_64" | tee lastepoch.log
Found path: /mnt/Games/SteamGames/Steam/steamapps/common/Last Epoch/Last Epoch.x86_64
[obs-vkcapture] Init 0.5
[obs-vkcapture] Failed to load GL
64 bit check:
$ file Last\ Epoch.x86_64
Last Epoch.x86_64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=2a1da7a4ffbc16bad3cab634551563522905febf, stripped
Even supertuxkart fails -- which is free and available on most distros.
LD_PRELOAD=/usr/lib64/libobs_glcapture.so supertuxkart | tee tuxkart.log
[obs-vkcapture] Init 0.5
[obs-vkcapture] Failed to load GL
[info ] IrrDriver: OpenGL version: 4.6
[info ] IrrDriver: OpenGL vendor: AMD
[info ] IrrDriver: OpenGL renderer: AMD Radeon RX 6900 XT (SIENNA_CICHLID, DRM 3.40.0, 5.11.18-200.fc33.x86_64, LLVM 11.0.0)
64 bit check:
$ file $(which supertuxkart)
/usr/bin/supertuxkart: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=c395cff8e9332e390ec114151eba198f164c8d16, for GNU/Linux 3.2.0, stripped
Alright, I can reproduce it with supertuxkart.
Btw does it work for you with glmark2?
Sorry I don't have the 32 bit library built locally (requires running the rpm build in a chroot) so I can't check glmark2 at this moment. Last Epoch captures with the latest change, however the picture is very dark:
Also the mouse cursor is not captured.
The darkness issue seems to be specific to Last Epoch. supertuxcart, 0ad, and Mad Max are all fine. Filters can be used to adjust it in OBS. The mouse cursor does not capture on any of them however.
There is no cursor support at all. It would require hooking the windowing system to get the geometry of the window (if not fullscreen) to calculate the cursor position. And also it would probably only work on X11.
For the Last Epoch issue, I would need the game to see what's going on. Or perhaps if it is related to engine, does it happen with other Unity games too?
Since version 0.7 don't work for me. Tried vkcube. OBS stdout:
info: [linux-vkcapture] Creating texture from dmabuf 1276x1391 modifier:144115188085734146
info: [linux-vkcapture] [0] fd:39 stride:5120 offset:0
info: [linux-vkcapture] [1] fd:40 stride:1536 offset:7208960
error: Cannot create EGLImage: Arguments are inconsistent (for example, a valid context requires buffers not supplied by a valid surface).
error: [linux-vkcapture] Could not create texture from dmabuf source
Do you have multiple GPUs? Also, please open new issue.
Yes I do. What tittle do I start the issue?
Doesn't matter :D
@GloriousEggroll Any chance you can try the Last Epoch again? It should be fixed now.
Heya,
So the opengl capture works for glxgears, but glmark2 fails. I thought this might be due to only having the 64 bit library, as glmark2 is 32 bit, so I tested it with a few linux native steam games that are 64 bit and use ogl.
I validated that the LD_PRELOAD is working by checking the libraries loaded via KDE's task manager (you can right click the process->detailed memory info to view a list of all loaded libraries)
Here's what it looks like from the task manager listing:
Library loaded: 144 KB /usr/lib64/libobs_glcapture.so
Here's the launch option being used:
LD_PRELOAD=/usr/lib64/libobs_glcapture.so %command%
64 bit check from Last Epoch:
$ file Last\ Epoch.x86_64 Last Epoch.x86_64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=2a1da7a4ffbc16bad3cab634551563522905febf, stripped
64 bit check from Mad Max:
$ file MadMax MadMax: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=960c435f879a39e4e1046aee91f9047a6d16a0a5, stripped
64 bit check from Dying Light:
$ file DyingLightGame DyingLightGame: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=c72b738701309c627b4499ed024cfd2224a03fcf, stripped
As mentioned, glxgears works:
$ file $(which glxgears) /usr/bin/glxgears: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=9206f610e9d744622d7c83c8cafaaf3fa47b401b, for GNU/Linux 3.2.0, stripped
Note:
A resource that may help with improvement on opengl capture which I've tried in the past is the source from this:
https://github.com/MaartenBaert/ssr/tree/master/glinject
Relevant reddit discussion: https://www.reddit.com/r/linux_gaming/comments/9j62uv/experimental_obs_plugin_for_gl_game_capturing/
Thanks again for your work, having a vulkan capture on linux is awesome.