Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

How to configure for Vulkan?



  • Hello,

    I want to use 5.10 with Vulkan support. I couldn't find any information is it available in prebuilt version for the Linux, but since the provided example doesn't work out of the box I assume I need to build qt myself. When I call configure I get:

    Qt Gui:
      Vulkan ................................. no
    

    Though I have VULKAN_SDK defined and PATH contains the path to the SDK as well.

    Here it tells about Windows and Android but no any word about Linux.

    I tried to enable the feature while configuring with ../configure -feature-vulkan (though very confusing - ../configure -list-features doesn't lists vulkan feature at all) and got the output:

    ERROR: Feature 'vulkan' was enabled, but the pre-condition 'libs.vulkan' failed. Check config.log for details.
    

    The file config.log unfortunately is not very informative:

    Command line: -feature-vulkan
    

  • Lifetime Qt Champion

    Hi,

    You should add the -v option to configure. It should give you more information about what is going on regarding Vulkan.



  • @SGaist
    You're right, it helped a little. Now I have the output:

    Checking for Vulkan... 
    Trying source 0 (type pkgConfig) of library vulkan ...
    + /usr/bin/pkg-config --exists --silence-errors vulkan
    pkg-config did not find package.
      => source produced no result.
    Trying source 1 (type makeSpec) of library vulkan ...
    + cd /home/nc/Qt/5.10.1/Src/qt5.10.1/config.tests/qpa/vulkan && /home/nc/Qt/5.10.1/Src/qt5.10.1/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared use_gold_linker warn_off console single_arch" /home/nc/Qt/5.10.1/Src/qtbase/config.tests/qpa/vulkan
    + cd /home/nc/Qt/5.10.1/Src/qt5.10.1/config.tests/qpa/vulkan && MAKEFLAGS= /usr/bin/make
    > g++ -c -pipe -O2 -std=gnu++11 -w -fPIC  -I/home/nc/Qt/5.10.1/Src/qtbase/config.tests/qpa/vulkan -I. -I/home/nc/Qt/5.10.1/Src/qtbase/mkspecs/linux-g++ -o vulkan.o /home/nc/Qt/5.10.1/Src/qtbase/config.tests/qpa/vulkan/vulkan.cpp
    > /home/nc/Qt/5.10.1/Src/qtbase/config.tests/qpa/vulkan/vulkan.cpp:42:27: fatal error: vulkan/vulkan.h: No such file or directory
    > compilation terminated.
    > Makefile:170: recipe for target 'vulkan.o' failed
    > make: *** [vulkan.o] Error 1
     => source failed verification.
    test config.gui.libraries.vulkan FAILED
    

    First thing to notice - the configurator tries to search for the package, but I didn't install Vulkan via package, I just downloaded SDK and ran it manually. Next I see that path to Vulkan headers is undefined. I added it to the PATH but without luck. How else can I provide -I gcc flag to generate correct makefile?


  • Lifetime Qt Champion

    PATH is for application discovery, it has nothing to do with header files.

    You can use the -I option of configure to add additional search paths. Beware that contrary to the compiler option, you need to leave a space between the option and the path you want to give. You'll likely also need to use the -L option in order to find the Vulkan libraries.



  • @SGaist thank you, you're right and I need to read help more carefully.

    So I successfully configured and output gives me:

    Qt Gui:
      Vulkan ................................. yes
    

    I build the library with make, next installed it with make install but still can't make it work. This time it tells me

    /usr/local/Qt-5.10.1/include/QtGui/QVulkanFunctions:1: error: qvulkanfunctions.h: No such file or directory
    

    Indeed this file is not there. But why? For example, qvulkanwindow.h was installed, and QVulkanFunctions too. But what's wrong with qvulkanfunctions.h?

    Upd: I manually copied this header to installation folder and finally was able to compile the example. Looks like somebody forgot to add this header to installation file list.


  • Lifetime Qt Champion

    Did you re-run configure from a clean state ?

    What I recommend is to use out of source builds so if you need to start over you just nuke the folder you use and start from fresh. That way you keep the sources clean.



  • Yes, did it twice. Looks like an error in generated make file. Anyway, everything working now, thank you.



  • Hi, I have same problem, I don't know how to enable vulkan in QT GUI.

    When run configurate said:

    Qt Gui:
       Vulkan ................................. no
    

    Also, when I run the test (/usr/local/Qt/5.10.1/Src/config.tests/qpa/vulkan) compiling good, but throw core exception the ./vulkan generate.

    I have install Vulkan sdk in /usr/local/VulkanSDK/1.0.68.0/x86_64 and enviroment:

    VULKAN_SDK=/usr/local/VulkanSDK/1.0.68.0/x86_64
    VK_LAYER_PATH=/usr/local/VulkanSDK/1.0.68.0/x86_64/etc/explicit_layer.d
    PATH=/usr/local/VulkanSDK/1.0.68.0/x86_64/bin:/home/jose/bin:/home/jose/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/VulkanSDK/1.0.68.0/x86_64:/snap/bin
    
    

    And when I open the Samples in QT (/usr/local/Qt/Examples/Qt-5.10.1/vulkan/hellovulkanwindow) build error in:

    /usr/local/Qt/Examples/Qt-5.10.1/vulkan/hellovulkanwindow/hellovulkanwindow.cpp:51: In file included from ../../vulkan/hellovulkanwindow/hellovulkanwindow.cpp:51:0:
    
    Line  51 is: #include "hellovulkanwindow.h" 
    

    Thank.



  • You need to tell configure where the sdk is. Please read the comment from SGaist.



  • @nikitablack How? I don't use QT before.



  • You need to run configure and pass arguments, for example:

    configure -I $VULKAN_SDK/include -L $VULKAN_SDK/lib -v -feature-vulkan
    


  • The bash said:

    ERROR: Feature 'vulkan' was enabled, but the pre-condition 'libs.vulkan' failed.

    And $VULKAN_SDK is correct folder.



  • @SGaist Since I tried to run the example project Hello Vulkan Cubes but it just signaled this error:

    Failed to load vulkan: Cannot load library vulkan: (vulkan: cannot open shared object file: No such file or directory)
    initInstance: No Vulkan library available
    Failed to create platform Vulkan instance
    Failed to create Vulkan instance: 0
    

    Regarding the latest status of Vulkan feature supporting in the prebuilt version for Linux, do we have it already enabled for Qt 5.15?

    Thank you.


  • Lifetime Qt Champion

    From your error message do you have the Vulcan dependencies installed on your system ?



  • Yeap, this is my vulkaninfo command output and I also have VULKAN_SDK set in QtCreator environment variables, thus I could build the example fine, but it just failed at runtime:
    https://drive.google.com/file/d/1pd9AGdC88KiN03e7bZzonkifd2jsRlZx/view?usp=sharing
    This is my graphics card info:

    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 455.26.02    Driver Version: 455.26.02    CUDA Version: 11.1     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  GeForce RTX 208...  Off  | 00000000:01:00.0  On |                  N/A |
    | 35%   32C    P8    24W / 260W |   1209MiB / 11016MiB |      6%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
                                                                                   
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |    0   N/A  N/A      2256      G   /usr/lib/xorg/Xorg                568MiB |
    |    0   N/A  N/A      2579      G   /usr/bin/gnome-shell              155MiB |
    |    0   N/A  N/A      3404      G   ...AAAAAAAAA= --shared-files       88MiB |
    |    0   N/A  N/A      3553      G   ...AAAAAAAAA= --shared-files      390MiB |
    |    0   N/A  N/A      5623      G   ...s/QtCreator/bin/qtcreator        3MiB |
    +-----------------------------------------------------------------------------+
    

  • Lifetime Qt Champion

    What did you install on your system for the Vulkan part ?



  • I just have the Vulkan SDK in a local folder and install this NVIDIA driver Linux 455.26.02, which supports VK_KHR_ray_tracing extension from this link:
    https://developer.nvidia.com/vulkan-driver


  • Lifetime Qt Champion

    It would be nice to have more details about the SDK like the version you have, the way you got it and installed it, etc.



  • Yeah, so my Vulkan SDK version is 1.2.154.0 from their official page:
    https://vulkan.lunarg.com/sdk/home#linux

    I just extracted to a folder then set VULKAN_SDK to its path.
    I actually tried with two of my latest current Linux NVIDIA driver as the proprietary 455 and the Beta one 455.26.2.

    So I doubt that in order to run Vulkan examples by Qt, should I install the Vulkan using sudo apt install vulkan-sdk, which I might dread will conflict with the NVIDIA driver. I remember having some bad experience with it.



  • @Tadinu said in How to configure for Vulkan?:

    Failed to load vulkan: Cannot load library vulkan: (vulkan: cannot open shared object file: No such file or directory)

    Have you try setting updating LD_LIBRARY_PATH variable to reflect the proper location of the Vulkan library(ies)?



  • Yeah, I would normally avoid updating LD_LIBRARY_PATH. So I added this to ~/QT/Examples/Qt-5.15.1/vulkan/hellovulkancubes/hellovulkancubes.pro file:

    LIBS += -lvulkan -L<PATH_TO_VULKAN_SDK>/1.2.154.0/x86_64/lib
    

    And it works!

    Thanks for your advice!


Log in to reply