felixdoerre / primus_vk

Vulkan GPU-offloading layer
BSD 2-Clause "Simplified" License
230 stars 17 forks source link

Compiling on Buster fails #55

Closed ghost closed 4 years ago

ghost commented 4 years ago

I'm tying to compile from master and it seems that libnv_vulkan_wrapper.so compiles with no problems but libprimus_vk.so outputs this:

primus_vk.cpp:65:3: error: ‘PFN_vkLayerCreateDevice’ does not name a type; did you mean ‘PFN_vkCreateDevice’?
   PFN_vkLayerCreateDevice layerCreateDevice;
   ^~~~~~~~~~~~~~~~~~~~~~~
   PFN_vkCreateDevice
primus_vk.cpp:66:3: error: ‘PFN_vkLayerDestroyDevice’ does not name a type; did you mean ‘PFN_vkDestroyDevice’?
   PFN_vkLayerDestroyDevice layerDestroyDevice;
   ^~~~~~~~~~~~~~~~~~~~~~~~
   PFN_vkDestroyDevice
primus_vk.cpp:77:9: error: ‘PFN_vkLayerCreateDevice’ has not been declared
         PFN_vkLayerCreateDevice layerCreateDevice,
         ^~~~~~~~~~~~~~~~~~~~~~~
primus_vk.cpp:78:9: error: ‘PFN_vkLayerDestroyDevice’ has not been declared
         PFN_vkLayerDestroyDevice layerDestroyDevice) : instance(instance), layerCreateDevice(layerCreateDevice), layerDestroyDevice(layerDestroyDevice) {
         ^~~~~~~~~~~~~~~~~~~~~~~~
primus_vk.cpp: In constructor ‘InstanceInfo::InstanceInfo(VkInstance, int, int)’:
primus_vk.cpp:78:76: error: class ‘InstanceInfo’ does not have any field named ‘layerCreateDevice’
         PFN_vkLayerDestroyDevice layerDestroyDevice) : instance(instance), layerCreateDevice(layerCreateDevice), layerDestroyDevice(layerDestroyDevice) {
                                                                            ^~~~~~~~~~~~~~~~~
primus_vk.cpp:78:114: error: class ‘InstanceInfo’ does not have any field named ‘layerDestroyDevice’
         PFN_vkLayerDestroyDevice layerDestroyDevice) : instance(instance), layerCreateDevice(layerCreateDevice), layerDestroyDevice(layerDestroyDevice) {
                                                                                                                  ^~~~~~~~~~~~~~~~~~
primus_vk.cpp: In function ‘VkResult PrimusVK_CreateInstance(const VkInstanceCreateInfo*, const VkAllocationCallbacks*, VkInstance_T**)’:
primus_vk.cpp:209:3: error: ‘PFN_vkLayerCreateDevice’ was not declared in this scope
   PFN_vkLayerCreateDevice layerCreateDevice = nullptr;
   ^~~~~~~~~~~~~~~~~~~~~~~
primus_vk.cpp:209:3: note: suggested alternative: ‘PFN_vkCreateDevice’
   PFN_vkLayerCreateDevice layerCreateDevice = nullptr;
   ^~~~~~~~~~~~~~~~~~~~~~~
   PFN_vkCreateDevice
primus_vk.cpp:210:3: error: ‘PFN_vkLayerDestroyDevice’ was not declared in this scope
   PFN_vkLayerDestroyDevice layerDestroyDevice = nullptr;
   ^~~~~~~~~~~~~~~~~~~~~~~~
primus_vk.cpp:210:3: note: suggested alternative: ‘PFN_vkDestroyDevice’
   PFN_vkLayerDestroyDevice layerDestroyDevice = nullptr;
   ^~~~~~~~~~~~~~~~~~~~~~~~
   PFN_vkDestroyDevice
primus_vk.cpp:217:115: error: ‘VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK’ was not declared in this scope
     if ( layerCreateInfo->sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO &&  layerCreateInfo->function == VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK) {
                                                                                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
primus_vk.cpp:217:115: note: suggested alternative: ‘VK_LOADER_DATA_CALLBACK’
     if ( layerCreateInfo->sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO &&  layerCreateInfo->function == VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK) {
                                                                                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                                                                   VK_LOADER_DATA_CALLBACK
primus_vk.cpp:218:7: error: ‘layerCreateDevice’ was not declared in this scope
       layerCreateDevice = layerCreateInfo->u.layerDevice.pfnLayerCreateDevice;
       ^~~~~~~~~~~~~~~~~
primus_vk.cpp:218:7: note: suggested alternative: ‘vkCreateDevice’
       layerCreateDevice = layerCreateInfo->u.layerDevice.pfnLayerCreateDevice;
       ^~~~~~~~~~~~~~~~~
       vkCreateDevice
primus_vk.cpp:218:46: error: ‘union VkLayerInstanceCreateInfo::<unnamed>’ has no member named ‘layerDevice’
       layerCreateDevice = layerCreateInfo->u.layerDevice.pfnLayerCreateDevice;
                                              ^~~~~~~~~~~
primus_vk.cpp:219:7: error: ‘layerDestroyDevice’ was not declared in this scope
       layerDestroyDevice = layerCreateInfo->u.layerDevice.pfnLayerDestroyDevice;
       ^~~~~~~~~~~~~~~~~~
primus_vk.cpp:219:7: note: suggested alternative: ‘vkDestroyDevice’
       layerDestroyDevice = layerCreateInfo->u.layerDevice.pfnLayerDestroyDevice;
       ^~~~~~~~~~~~~~~~~~
       vkDestroyDevice
primus_vk.cpp:219:47: error: ‘union VkLayerInstanceCreateInfo::<unnamed>’ has no member named ‘layerDevice’
       layerDestroyDevice = layerCreateInfo->u.layerDevice.pfnLayerDestroyDevice;
                                               ^~~~~~~~~~~
primus_vk.cpp:227:6: error: ‘layerCreateDevice’ was not declared in this scope
   if(layerCreateDevice == nullptr || layerDestroyDevice == nullptr) {
      ^~~~~~~~~~~~~~~~~
primus_vk.cpp:227:6: note: suggested alternative: ‘vkCreateDevice’
   if(layerCreateDevice == nullptr || layerDestroyDevice == nullptr) {
      ^~~~~~~~~~~~~~~~~
      vkCreateDevice
primus_vk.cpp:227:38: error: ‘layerDestroyDevice’ was not declared in this scope
   if(layerCreateDevice == nullptr || layerDestroyDevice == nullptr) {
                                      ^~~~~~~~~~~~~~~~~~
primus_vk.cpp:227:38: note: suggested alternative: ‘vkDestroyDevice’
   if(layerCreateDevice == nullptr || layerDestroyDevice == nullptr) {
                                      ^~~~~~~~~~~~~~~~~~
                                      vkDestroyDevice
primus_vk.cpp:248:52: error: ‘layerCreateDevice’ was not declared in this scope
   auto my_instance_info = InstanceInfo{*pInstance, layerCreateDevice, layerDestroyDevice};
                                                    ^~~~~~~~~~~~~~~~~
primus_vk.cpp:248:52: note: suggested alternative: ‘vkCreateDevice’
   auto my_instance_info = InstanceInfo{*pInstance, layerCreateDevice, layerDestroyDevice};
                                                    ^~~~~~~~~~~~~~~~~
                                                    vkCreateDevice
primus_vk.cpp:248:71: error: ‘layerDestroyDevice’ was not declared in this scope
   auto my_instance_info = InstanceInfo{*pInstance, layerCreateDevice, layerDestroyDevice};
                                                                       ^~~~~~~~~~~~~~~~~~
primus_vk.cpp:248:71: note: suggested alternative: ‘vkDestroyDevice’
   auto my_instance_info = InstanceInfo{*pInstance, layerCreateDevice, layerDestroyDevice};
                                                                       ^~~~~~~~~~~~~~~~~~
                                                                       vkDestroyDevice
primus_vk.cpp:248:89: error: no matching function for call to ‘InstanceInfo::InstanceInfo(<brace-enclosed initializer list>)’
   auto my_instance_info = InstanceInfo{*pInstance, layerCreateDevice, layerDestroyDevice};
                                                                                         ^
primus_vk.cpp:76:3: note: candidate: ‘InstanceInfo::InstanceInfo(VkInstance, int, int)’
   InstanceInfo(VkInstance instance,
   ^~~~~~~~~~~~
primus_vk.cpp:76:3: note:   conversion of argument 2 would be ill-formed:
primus_vk.cpp:75:3: note: candidate: ‘InstanceInfo::InstanceInfo(InstanceInfo&&)’
   InstanceInfo(InstanceInfo &&) = default;
   ^~~~~~~~~~~~
primus_vk.cpp:75:3: note:   candidate expects 1 argument, 3 provided
primus_vk.cpp:73:3: note: candidate: ‘InstanceInfo::InstanceInfo()’
   InstanceInfo() = default;
   ^~~~~~~~~~~~
primus_vk.cpp:73:3: note:   candidate expects 0 arguments, 3 provided
primus_vk.cpp: In function ‘VkResult PrimusVK_CreateDevice(VkPhysicalDevice, const VkDeviceCreateInfo*, const VkAllocationCallbacks*, VkDevice_T**)’:
primus_vk.cpp:699:40: error: ‘struct InstanceInfo’ has no member named ‘layerCreateDevice’
   auto createDevice = my_instance_info.layerCreateDevice;
                                        ^~~~~~~~~~~~~~~~~
primus_vk.cpp: In lambda function:
primus_vk.cpp:702:16: error: ‘createDevice’ is not captured
     auto ret = createDevice(my_instance_info.instance, my_instance_info.display, &createInfo, nullptr, &dev, PrimusVK_GetInstanceProcAddr, &gdpa);
                ^~~~~~~~~~~~
primus_vk.cpp:700:46: note: the lambda has no capture-default
   cod->finish([createDevice,&my_instance_info](VkDeviceCreateInfo &createInfo, VkDevice &dev){
                                              ^
primus_vk.cpp:699:8: note: ‘<typeprefixerror>createDevice’ declared here
   auto createDevice = my_instance_info.layerCreateDevice;
        ^~~~~~~~~~~~
primus_vk.cpp:708:12: error: unable to deduce lambda return type from ‘ret’
     return ret;
            ^~~
primus_vk.cpp: In function ‘VkResult PrimusVK_CreateDevice(VkPhysicalDevice, const VkDeviceCreateInfo*, const VkAllocationCallbacks*, VkDevice_T**)’:
primus_vk.cpp:709:4: error: no matching function for call to ‘CreateOtherDevice::finish(PrimusVK_CreateDevice(VkPhysicalDevice, const VkDeviceCreateInfo*, const VkAllocationCallbacks*, VkDevice_T**)::<lambda(VkDeviceCreateInfo&, VkDevice_T*&)>)’
   });
    ^
primus_vk.cpp:510:8: note: candidate: ‘void CreateOtherDevice::finish(std::function<VkResult(VkDeviceCreateInfo&, VkDevice_T*&)>)’
   void finish(std::function<VkResult(VkDeviceCreateInfo &createInfo, VkDevice &dev)> creator){
        ^~~~~~
primus_vk.cpp:510:8: note:   no known conversion for argument 1 from ‘PrimusVK_CreateDevice(VkPhysicalDevice, const VkDeviceCreateInfo*, const VkAllocationCallbacks*, VkDevice_T**)::<lambda(VkDeviceCreateInfo&, VkDevice_T*&)>’ to ‘std::function<VkResult(VkDeviceCreateInfo&, VkDevice_T*&)>’
primus_vk.cpp: In function ‘void PrimusVK_DestroyDevice(VkDevice, const VkAllocationCallbacks*)’:
primus_vk.cpp:791:15: error: ‘struct InstanceInfo’ has no member named ‘layerDestroyDevice’
   my_instance.layerDestroyDevice(display_device, nullptr, device_dispatch[GetKey(display_device)].DestroyDevice);
               ^~~~~~~~~~~~~~~~~~
make: *** [Makefile:19: libprimus_vk.so] Error 1
tomislav@w230st:~/.opt/primus_vk$ nano primus_vk.cpp 
tomislav@w230st:~/.opt/primus_vk$ nano primus_vk.cpp 
tomislav@w230st:~/.opt/primus_vk$ sudo make          
g++  --std=gnu++11 -g3 -I/usr/include/vulkan -shared -fPIC primus_vk.cpp -o libprimus_vk.so -Wl,-soname,libprimus_vk.so.1 -ldl -lpthread 
primus_vk.cpp:65:3: error: ‘PFN_vkLayerCreateDevice’ does not name a type; did you mean ‘PFN_vkCreateDevice’?
   PFN_vkLayerCreateDevice layerCreateDevice;
   ^~~~~~~~~~~~~~~~~~~~~~~
   PFN_vkCreateDevice
primus_vk.cpp:66:3: error: ‘PFN_vkLayerDestroyDevice’ does not name a type; did you mean ‘PFN_vkDestroyDevice’?
   PFN_vkLayerDestroyDevice layerDestroyDevice;
   ^~~~~~~~~~~~~~~~~~~~~~~~
   PFN_vkDestroyDevice
primus_vk.cpp:77:9: error: ‘PFN_vkLayerCreateDevice’ has not been declared
         PFN_vkLayerCreateDevice layerCreateDevice,
         ^~~~~~~~~~~~~~~~~~~~~~~
primus_vk.cpp:78:9: error: ‘PFN_vkLayerDestroyDevice’ has not been declared
         PFN_vkLayerDestroyDevice layerDestroyDevice) : instance(instance), layerCreateDevice(layerCreateDevice), layerDestroyDevice(layerDestroyDevice) {
         ^~~~~~~~~~~~~~~~~~~~~~~~
primus_vk.cpp: In constructor ‘InstanceInfo::InstanceInfo(VkInstance, int, int)’:
primus_vk.cpp:78:76: error: class ‘InstanceInfo’ does not have any field named ‘layerCreateDevice’
         PFN_vkLayerDestroyDevice layerDestroyDevice) : instance(instance), layerCreateDevice(layerCreateDevice), layerDestroyDevice(layerDestroyDevice) {
                                                                            ^~~~~~~~~~~~~~~~~
primus_vk.cpp:78:114: error: class ‘InstanceInfo’ does not have any field named ‘layerDestroyDevice’
         PFN_vkLayerDestroyDevice layerDestroyDevice) : instance(instance), layerCreateDevice(layerCreateDevice), layerDestroyDevice(layerDestroyDevice) {
                                                                                                                  ^~~~~~~~~~~~~~~~~~
primus_vk.cpp: In function ‘VkResult PrimusVK_CreateInstance(const VkInstanceCreateInfo*, const VkAllocationCallbacks*, VkInstance_T**)’:
primus_vk.cpp:209:3: error: ‘PFN_vkLayerCreateDevice’ was not declared in this scope
   PFN_vkLayerCreateDevice layerCreateDevice = nullptr;
   ^~~~~~~~~~~~~~~~~~~~~~~
primus_vk.cpp:209:3: note: suggested alternative: ‘PFN_vkCreateDevice’
   PFN_vkLayerCreateDevice layerCreateDevice = nullptr;
   ^~~~~~~~~~~~~~~~~~~~~~~
   PFN_vkCreateDevice
primus_vk.cpp:210:3: error: ‘PFN_vkLayerDestroyDevice’ was not declared in this scope
   PFN_vkLayerDestroyDevice layerDestroyDevice = nullptr;
   ^~~~~~~~~~~~~~~~~~~~~~~~
primus_vk.cpp:210:3: note: suggested alternative: ‘PFN_vkDestroyDevice’
   PFN_vkLayerDestroyDevice layerDestroyDevice = nullptr;
   ^~~~~~~~~~~~~~~~~~~~~~~~
   PFN_vkDestroyDevice
primus_vk.cpp:217:115: error: ‘VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK’ was not declared in this scope
     if ( layerCreateInfo->sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO &&  layerCreateInfo->function == VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK) {
                                                                                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
primus_vk.cpp:217:115: note: suggested alternative: ‘VK_LOADER_DATA_CALLBACK’
     if ( layerCreateInfo->sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO &&  layerCreateInfo->function == VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK) {
                                                                                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                                                                   VK_LOADER_DATA_CALLBACK
primus_vk.cpp:218:7: error: ‘layerCreateDevice’ was not declared in this scope
       layerCreateDevice = layerCreateInfo->u.layerDevice.pfnLayerCreateDevice;
       ^~~~~~~~~~~~~~~~~
primus_vk.cpp:218:7: note: suggested alternative: ‘vkCreateDevice’
       layerCreateDevice = layerCreateInfo->u.layerDevice.pfnLayerCreateDevice;
       ^~~~~~~~~~~~~~~~~
       vkCreateDevice
primus_vk.cpp:218:46: error: ‘union VkLayerInstanceCreateInfo::<unnamed>’ has no member named ‘layerDevice’
       layerCreateDevice = layerCreateInfo->u.layerDevice.pfnLayerCreateDevice;
                                              ^~~~~~~~~~~
primus_vk.cpp:219:7: error: ‘layerDestroyDevice’ was not declared in this scope
       layerDestroyDevice = layerCreateInfo->u.layerDevice.pfnLayerDestroyDevice;
       ^~~~~~~~~~~~~~~~~~
primus_vk.cpp:219:7: note: suggested alternative: ‘vkDestroyDevice’
       layerDestroyDevice = layerCreateInfo->u.layerDevice.pfnLayerDestroyDevice;
       ^~~~~~~~~~~~~~~~~~
       vkDestroyDevice
primus_vk.cpp:219:47: error: ‘union VkLayerInstanceCreateInfo::<unnamed>’ has no member named ‘layerDevice’
       layerDestroyDevice = layerCreateInfo->u.layerDevice.pfnLayerDestroyDevice;
                                               ^~~~~~~~~~~
primus_vk.cpp:227:6: error: ‘layerCreateDevice’ was not declared in this scope
   if(layerCreateDevice == nullptr || layerDestroyDevice == nullptr) {
      ^~~~~~~~~~~~~~~~~
primus_vk.cpp:227:6: note: suggested alternative: ‘vkCreateDevice’
   if(layerCreateDevice == nullptr || layerDestroyDevice == nullptr) {
      ^~~~~~~~~~~~~~~~~
      vkCreateDevice
primus_vk.cpp:227:38: error: ‘layerDestroyDevice’ was not declared in this scope
   if(layerCreateDevice == nullptr || layerDestroyDevice == nullptr) {
                                      ^~~~~~~~~~~~~~~~~~
primus_vk.cpp:227:38: note: suggested alternative: ‘vkDestroyDevice’
   if(layerCreateDevice == nullptr || layerDestroyDevice == nullptr) {
                                      ^~~~~~~~~~~~~~~~~~
                                      vkDestroyDevice
primus_vk.cpp:248:52: error: ‘layerCreateDevice’ was not declared in this scope
   auto my_instance_info = InstanceInfo{*pInstance, layerCreateDevice, layerDestroyDevice};
                                                    ^~~~~~~~~~~~~~~~~
primus_vk.cpp:248:52: note: suggested alternative: ‘vkCreateDevice’
   auto my_instance_info = InstanceInfo{*pInstance, layerCreateDevice, layerDestroyDevice};
                                                    ^~~~~~~~~~~~~~~~~
                                                    vkCreateDevice
primus_vk.cpp:248:71: error: ‘layerDestroyDevice’ was not declared in this scope
   auto my_instance_info = InstanceInfo{*pInstance, layerCreateDevice, layerDestroyDevice};
                                                                       ^~~~~~~~~~~~~~~~~~
primus_vk.cpp:248:71: note: suggested alternative: ‘vkDestroyDevice’
   auto my_instance_info = InstanceInfo{*pInstance, layerCreateDevice, layerDestroyDevice};
                                                                       ^~~~~~~~~~~~~~~~~~
                                                                       vkDestroyDevice
primus_vk.cpp:248:89: error: no matching function for call to ‘InstanceInfo::InstanceInfo(<brace-enclosed initializer list>)’
   auto my_instance_info = InstanceInfo{*pInstance, layerCreateDevice, layerDestroyDevice};
                                                                                         ^
primus_vk.cpp:76:3: note: candidate: ‘InstanceInfo::InstanceInfo(VkInstance, int, int)’
   InstanceInfo(VkInstance instance,
   ^~~~~~~~~~~~
primus_vk.cpp:76:3: note:   conversion of argument 2 would be ill-formed:
primus_vk.cpp:75:3: note: candidate: ‘InstanceInfo::InstanceInfo(InstanceInfo&&)’
   InstanceInfo(InstanceInfo &&) = default;
   ^~~~~~~~~~~~
primus_vk.cpp:75:3: note:   candidate expects 1 argument, 3 provided
primus_vk.cpp:73:3: note: candidate: ‘InstanceInfo::InstanceInfo()’
   InstanceInfo() = default;
   ^~~~~~~~~~~~
primus_vk.cpp:73:3: note:   candidate expects 0 arguments, 3 provided
primus_vk.cpp: In function ‘VkResult PrimusVK_CreateDevice(VkPhysicalDevice, const VkDeviceCreateInfo*, const VkAllocationCallbacks*, VkDevice_T**)’:
primus_vk.cpp:699:40: error: ‘struct InstanceInfo’ has no member named ‘layerCreateDevice’
   auto createDevice = my_instance_info.layerCreateDevice;
                                        ^~~~~~~~~~~~~~~~~
primus_vk.cpp: In lambda function:
primus_vk.cpp:702:16: error: ‘createDevice’ is not captured
     auto ret = createDevice(my_instance_info.instance, my_instance_info.display, &createInfo, nullptr, &dev, PrimusVK_GetInstanceProcAddr, &gdpa);
                ^~~~~~~~~~~~
primus_vk.cpp:700:46: note: the lambda has no capture-default
   cod->finish([createDevice,&my_instance_info](VkDeviceCreateInfo &createInfo, VkDevice &dev){
                                              ^
primus_vk.cpp:699:8: note: ‘<typeprefixerror>createDevice’ declared here
   auto createDevice = my_instance_info.layerCreateDevice;
        ^~~~~~~~~~~~
primus_vk.cpp:708:12: error: unable to deduce lambda return type from ‘ret’
     return ret;
            ^~~
primus_vk.cpp: In function ‘VkResult PrimusVK_CreateDevice(VkPhysicalDevice, const VkDeviceCreateInfo*, const VkAllocationCallbacks*, VkDevice_T**)’:
primus_vk.cpp:709:4: error: no matching function for call to ‘CreateOtherDevice::finish(PrimusVK_CreateDevice(VkPhysicalDevice, const VkDeviceCreateInfo*, const VkAllocationCallbacks*, VkDevice_T**)::<lambda(VkDeviceCreateInfo&, VkDevice_T*&)>)’
   });
    ^
primus_vk.cpp:510:8: note: candidate: ‘void CreateOtherDevice::finish(std::function<VkResult(VkDeviceCreateInfo&, VkDevice_T*&)>)’
   void finish(std::function<VkResult(VkDeviceCreateInfo &createInfo, VkDevice &dev)> creator){
        ^~~~~~
primus_vk.cpp:510:8: note:   no known conversion for argument 1 from ‘PrimusVK_CreateDevice(VkPhysicalDevice, const VkDeviceCreateInfo*, const VkAllocationCallbacks*, VkDevice_T**)::<lambda(VkDeviceCreateInfo&, VkDevice_T*&)>’ to ‘std::function<VkResult(VkDeviceCreateInfo&, VkDevice_T*&)>’
primus_vk.cpp: In function ‘void PrimusVK_DestroyDevice(VkDevice, const VkAllocationCallbacks*)’:
primus_vk.cpp:791:15: error: ‘struct InstanceInfo’ has no member named ‘layerDestroyDevice’
   my_instance.layerDestroyDevice(display_device, nullptr, device_dispatch[GetKey(display_device)].DestroyDevice);
               ^~~~~~~~~~~~~~~~~~
make: *** [Makefile:19: libprimus_vk.so] Error 1

Running on the lastest Debian 10 Buster with GTX 765m and 418.74 drivers

felixdoerre commented 4 years ago

from the readme:

Due to a bug/missing feature in the Vulkan Loader you will need Vulkan/libvulkan >= 1.1.108. If you have an older system you can try primus_vk version 1.1 which contains an ugly workaround for that issue and is therefore compatible with older Vulkan versions.

Debian buster seems to have 1.1.97 which is too old. So you either need to update your vulkan loader manually, or are stuck with primus_vk 1.1.

felixdoerre commented 4 years ago

@Tkopic001 Did you retry with a newer vulkan version? Or have you at least verified, that the explanation I provided is correct? Can we close this issue?

ghost commented 4 years ago

Sorry, i forgot about this issue, you can close it

This seems to the the issue, vulkan version on buster repos is too old. I was unable to upgrade to the newer version using the unstable repos and I didn't want to break my system so i just compiled from the nv_wrapper_experimental branch.

Thank you, Kind regards,