vkdt devel diary

okay, since you have a 1.2 capable libvulkan, but the glsl compiler seems to be unable, try this:

in src/Makefile search for vulkan1.2 and replace by vulkan1.1. then go back to bin/, make clean and make again. i just tried this locally and here it works… not sure that’s because my toolchain is new enough and works around it or whether you can indeed talk to the lib in 1.2 and to the shaders in 1.1.

Sorry for the wait, I recloned the repo to be sure.
compilation_log_vk1_1.txt (112.4 KB)

~/Software/source/vkdt/bin$ ./vkdt -d all ~/Pictures/vkdt
[gui] monitor [0] HDMI-A-0 at 0 0
[gui] monitor [1] DisplayPort-1 at 2560 0
[gui] vk extension required by GLFW:
[gui]   VK_KHR_surface
[gui]   VK_KHR_xcb_surface
[qvk] dev 0: vendorid 0x1002
[qvk] dev 0: AMD RADV VEGA10 (ACO)
[qvk] max number of allocations -1
[qvk] max image allocation size 16384 x 16384
[qvk] max uniform buffer range 4294967295
[qvk] dev 1: vendorid 0x1002
[qvk] dev 1: Radeon RX Vega
[qvk] max number of allocations -1
[qvk] max image allocation size 16384 x 16384
[qvk] max uniform buffer range 4294967295
[qvk] picked device 0
[qvk] num queue families: 2
[qvk] num surface formats: 2
[qvk] available surface formats:
[qvk] B8G8R8A8_SRGB
[qvk] B8G8R8A8_UNORM
[qvk] colour space: 0
[gui] no display profile file display.HDMI-A-0, using sRGB!
[gui] no display profile file display.DisplayPort-1, using sRGB!
[qvk] num surface formats: 2
[qvk] available surface formats:
[qvk] B8G8R8A8_SRGB
[qvk] B8G8R8A8_UNORM
[qvk] colour space: 0
[db] allocating 1024.0 MB for thumbnails
[mem] images : peak rss 0.00390625 MB vmsize 0.00390625 MB
[mem] staging: peak rss 0.000244141 MB vmsize 0.000244141 MB
[perf] record cmd buf:	   0.270 ms
[perf] i-bc1_main:	   0.008 ms
[perf] total burst:	   0.000 ms
[perf] total time:	   0.008 ms
[perf] [thm] ran graph in   0ms
[mem] images : peak rss 0.00390625 MB vmsize 0.00390625 MB
[mem] staging: peak rss 0.000244141 MB vmsize 0.000244141 MB
[perf] record cmd buf:	   0.081 ms
[perf] i-bc1_main:	   0.007 ms
[perf] total burst:	   0.000 ms
[perf] total time:	   0.007 ms
[perf] [thm] ran graph in   0ms
[perf] time to load images 0.000s
[qvk] num surface formats: 2
[qvk] available surface formats:
[qvk] B8G8R8A8_SRGB
[qvk] B8G8R8A8_UNORM
[qvk] colour space: 0
[mem] images : peak rss 0.078125 MB vmsize 0.078125 MB
[mem] staging: peak rss 0.100708 MB vmsize 0.100708 MB
[perf] record cmd buf:	   0.903 ms
[perf] i-bc1_main:	   0.012 ms
[perf] total burst:	   0.000 ms
[perf] total time:	   0.012 ms
[perf] [thm] ran graph in   1ms

It works! I will try to find a way get the new glslang later and try testing with vk 1.2. I tried --allow-unauthenticated with apt and apt-get but it seems they removed that feature.

This is so cool man! Thank you so much!! :smile: :smile:

(few moments later): JESUS CHRIST!! It’s real time!!! I wanna cry :smile: :smile: :smile:

edit: man, THIS IS SO CRAZY! I can’t believe this! :DDD

1 Like

whoaaaa super cool! awesome that it’s working now :smiley:

1 Like

Yeah, amazing performance. Like, I knew it should be very performant in theory but trying it is just a whole different thing. :smiley:

Drawn mask is great but it stops working after a stroke or two. I’m guessing that’s a known issue.

Alright, I got the latest Vulkan SDK installed, vkdt now works great on my desktop.

I tried it also on my laptop with Intel iGPU and it works! (barely :crazy_face: ):

OS: Ubuntu 20.04.1 LTS x86_64
Host: Inspiron 13-7359
CPU: Intel i7-6500U (4) @ 3.100GHz
GPU: Intel Skylake GT2 [HD Graphics 520]
RAM: 8GB
Kernel: 5.8.0-36-generic
DE: GNOME
WM: Mutter
DS: Wayland

It works but performance is absolutely horrible without a dedicated GPU.
I guess having a laptop that supports external GPU would also be really cool. :slight_smile:
Now is this something that will change or should vkdt be used only on the systems with dedicated GPU?

oh wow you were running this on wayland natively? via glfw-wayland? also something i knew should work in theory but can’t test with nvidia hardware.

re:perf on integrated intel: there’s a LOD switch in the ‘esoteric’ tab that might help speed up things a bit. i need to make that work with all modules robustly and wire it better, also to the config.rc so you won’t have to change it again upon restart.

other than that i was meaning to implement some graph cut for incrememtal processing. that should also help some if your active module is late in the pipeline. so far this low end target wasn’t a priority for me though… i wasn’t sure if by the time the rest of the feature set is complete and polished enough for real use such systems would still be in use… if anyone would really think this is important let me know and i might prioritise.

I don’t know, I guess so. I was in Wayland session, compiled and it worked. But maybe is trough xWayland or whatever it’s called because I don’t have glfw-wayland installed.

$ sudo apt search glfw
Sorting... Done
Full Text Search... Done
gem-plugin-glfw3/focal 1:0.94-1build2 amd64
  Graphics Environment for Multimedia - GLFW3 support

libglfw3/focal,now 3.3.2-1 amd64 [installed]
  portable library for OpenGL, window and input (x11 libraries)

libglfw3-dev/focal,now 3.3.2-1 amd64 [installed]
  portable library for OpenGL, window and input (development files)

libglfw3-doc/focal,focal 3.3.2-1 all
  portable library for OpenGL, window and input (documentation)

libglfw3-wayland/focal 3.3.2-1 amd64
  portable library for OpenGL, window and input (wayland libraries)

I’ll recompile it again, once without libglfw3-wayland installed and once with libglfw3-wayland installed on my system and post you the logs. libglfw3-wayland will get picked up automatically during compilation if I have it on my system right? I don’t have to change any configs?

What cpu do you have? Can’t you just take out the GPU? Or I think there is a way to specify which gpu do you want to run the app with in the hybrid gpu systems. I remember seeing even some gui context menu in gnome that lets you choose a gpu to launch the app with in the activities overview.

hah, fair point with the CPU. that would be a ryzen (no GPU) or some intel on the laptop. i guess i could always use the lavapipe vulkan driver for a test though. the laptop has a 1650 GTX though, so installing wayland on either system would mean breaking the setup for some time until i restore the xorg configuration.

right, libglfw3 without the -wayland would indicate it went through xwayland. if it doesn’t destroy your setup for other reasons i’d be curious to hear what happens if you install libglfw3-wayland instead and try to go the direct route (at least undoing that change sounds like a quick thing to do in case it doesn’t work). i’d at the very least expect some trouble with going fullscreen via F11 or so.

Sure, do I have to remove libglfw3 and libglfw3-dev from my system first or do I just install libglfw3-wayland?

i think when i last tried on debian, the packages conflicted each other and the other one was removed for me.

I’ll just install it without removing the first 2 first and see how it goes from there :slight_smile:
edit: Yeah, It’s like you said.

still it didn’t remove libglfw3-dev, just libglfw3

-dev is just the headers, they don’t depend on the backend/implementation (and i call the functions by these names knowing not what will be behind it, so the dev package better not change…)

1 Like

Alright, it compiled fine as per this log compilation_log.txt (116.0 KB) however, it failed to launch as per this log vkdt_output.txt (66.3 KB)
Where is the dump file located? I can’t find it.

maybe get yourself a Elgato Camlink 4k and a mini hdmi to hdmi cable. that might give you higher data rates. … my fuji can get up to 400mbit like that.

hm great. thanks for trying. not really informative… it’s not a crash, it just notices that this combination of drivers/etc can’t create a vulkan context to show stuff on your screen (that’s the swapchain bit). i guess i’ll have to try the wayland thing on some old computer or on a secondary partition or something and debug at length.

to answer the other question: vkdt doesn’t write backtraces.

1 Like

wait isn’t 400mbit/s = 400/8 MB/s = 50MB/s < than my 60MB/s ?

but you’re saying the elgato card works well on linux? i was considering something like that for the webcam processing. but then again i don’t really have a use case nor a highres web cam… i don’t think i want to spend money on it.

Yeah, it’s probably drivers. I did some weird stuff on this machine to get opencl working on this CPU. Afaik it shouldn’t be even supported. But it works for Darktable. Tho it may be the cause of the issue for vkdt. Unfortunately I do not dare to touch that because I don’t remember how I got OpenCL working and what I did with the drivers.

the elgato camlink is basically like HDMI recorder that feeds the video signal into your system via USB. and yes the kind of video devices works well without any additional driver. I use it to use my fuji camera as a webcam.

sadly your 5d mk2 is not supported. https://www.elgato.com/en/gaming/cam-link/camera-check

Why not? I think the only reason it’s not listed as supported is because it doesn’t have a clean HDMI output with Canon’s firmware.
But it has with Magic Lantern that @hanatos is using so it should be fine.

But if I was buying an hdmi capture device I’d buy BlackMagic ATEM Mini:
https://www.blackmagicdesign.com/products/atemmini

It’s twice the price but you get so much more and a fun project :joy:
It has some open APIs to develop apps and even harware around it etc

i am fine with doing my mixing in obs. no need for the atem yet.