compilation failed on ubuntu 20.04 with vulkan enabled
- PipeWire version (
pipewire --version
): 0.3.81 or master - Distribution and distribution version (
PRETTY_NAME
from/etc/os-release
): 20.04.6 - Desktop Environment: gnome
- Kernel version (
uname -r
): 5.18.15-051815-generic - libvulkan-dev version : 1.2.131.2-1
Description of Problem:
Compilation failed : when vulkan enabled
../spa/plugins/vulkan/vulkan-compute-utils.c: In function ‘runCommandBuffer’:
../spa/plugins/vulkan/vulkan-compute-utils.c:32:2: error: unknown type name ‘PFN_vkQueueSubmit2KHR’; did you mean ‘PFN_vkQueueSubmit’?
32 | PFN_##name name = (PFN_##name)vkGetInstanceProcAddr(s->base.instance, #name)
| ^~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:284:2: note: in expansion of macro ‘VULKAN_INSTANCE_FUNCTION’
284 | VULKAN_INSTANCE_FUNCTION(vkQueueSubmit2KHR);
| ^~~~~~~~~~~~~~~~~~~~~~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:32:21: error: ‘PFN_vkQueueSubmit2KHR’ undeclared (first use in this function); did you mean ‘vkQueueSubmit2KHR’?
32 | PFN_##name name = (PFN_##name)vkGetInstanceProcAddr(s->base.instance, #name)
| ^~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:284:2: note: in expansion of macro ‘VULKAN_INSTANCE_FUNCTION’
284 | VULKAN_INSTANCE_FUNCTION(vkQueueSubmit2KHR);
| ^~~~~~~~~~~~~~~~~~~~~~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:32:21: note: each undeclared identifier is reported only once for each function it appears in
32 | PFN_##name name = (PFN_##name)vkGetInstanceProcAddr(s->base.instance, #name)
| ^~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:284:2: note: in expansion of macro ‘VULKAN_INSTANCE_FUNCTION’
284 | VULKAN_INSTANCE_FUNCTION(vkQueueSubmit2KHR);
| ^~~~~~~~~~~~~~~~~~~~~~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:32:32: error: expected ‘,’ or ‘;’ before ‘vkGetInstanceProcAddr’
32 | PFN_##name name = (PFN_##name)vkGetInstanceProcAddr(s->base.instance, #name)
| ^~~~~~~~~~~~~~~~~~~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:284:2: note: in expansion of macro ‘VULKAN_INSTANCE_FUNCTION’
284 | VULKAN_INSTANCE_FUNCTION(vkQueueSubmit2KHR);
| ^~~~~~~~~~~~~~~~~~~~~~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:306:2: error: unknown type name ‘VkSemaphoreSubmitInfo’; did you mean ‘VkSemaphoreWaitInfo’?
306 | VkSemaphoreSubmitInfo semaphore_wait_info[s->n_streams];
| ^~~~~~~~~~~~~~~~~~~~~
| VkSemaphoreWaitInfo
../spa/plugins/vulkan/vulkan-compute-utils.c:308:2: error: unknown type name ‘VkSemaphoreSubmitInfo’; did you mean ‘VkSemaphoreWaitInfo’?
308 | VkSemaphoreSubmitInfo semaphore_signal_info[1];
| ^~~~~~~~~~~~~~~~~~~~~
| VkSemaphoreWaitInfo
../spa/plugins/vulkan/vulkan-compute-utils.c:359:55: error: ‘VkSemaphoreSubmitInfo’ undeclared (first use in this function); did you mean ‘VkSemaphoreWaitInfo’?
359 | semaphore_wait_info[semaphore_wait_info_len++] = (VkSemaphoreSubmitInfo) {
| ^~~~~~~~~~~~~~~~~~~~~
| VkSemaphoreWaitInfo
../spa/plugins/vulkan/vulkan-compute-utils.c:359:77: error: expected ‘;’ before ‘{’ token
359 | semaphore_wait_info[semaphore_wait_info_len++] = (VkSemaphoreSubmitInfo) {
| ^~
| ;
../spa/plugins/vulkan/vulkan-compute-utils.c:396:78: error: expected ‘;’ before ‘{’ token
396 | semaphore_signal_info[semaphore_signal_info_len++] = (VkSemaphoreSubmitInfo) {
| ^~
| ;
../spa/plugins/vulkan/vulkan-compute-utils.c:401:2: error: unknown type name ‘VkCommandBufferSubmitInfoKHR’; did you mean ‘VkCommandBufferBeginInfo’?
401 | VkCommandBufferSubmitInfoKHR commandBufferInfo = {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| VkCommandBufferBeginInfo
../spa/plugins/vulkan/vulkan-compute-utils.c:402:3: error: field name not in record or union initializer
402 | .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO,
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:402:3: note: (near initialization for ‘commandBufferInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:402:12: error: ‘VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO’ undeclared (first use in this function); did you mean ‘VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO’?
402 | .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
../spa/plugins/vulkan/vulkan-compute-utils.c:403:3: error: field name not in record or union initializer
403 | .commandBuffer = s->commandBuffer,
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:403:3: note: (near initialization for ‘commandBufferInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:403:20: warning: excess elements in scalar initializer
403 | .commandBuffer = s->commandBuffer,
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:403:20: note: (near initialization for ‘commandBufferInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:406:8: error: unknown type name ‘VkSubmitInfo2KHR’
406 | const VkSubmitInfo2KHR submitInfo = {
| ^~~~~~~~~~~~~~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:407:3: error: field name not in record or union initializer
407 | .sType = VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR,
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:407:3: note: (near initialization for ‘submitInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:407:12: error: ‘VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR’ undeclared (first use in this function); did you mean ‘VK_STRUCTURE_TYPE_SUBMIT_INFO’?
407 | .sType = VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| VK_STRUCTURE_TYPE_SUBMIT_INFO
../spa/plugins/vulkan/vulkan-compute-utils.c:408:3: error: field name not in record or union initializer
408 | .commandBufferInfoCount = 1,
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:408:3: note: (near initialization for ‘submitInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:408:29: warning: excess elements in scalar initializer
408 | .commandBufferInfoCount = 1,
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:408:29: note: (near initialization for ‘submitInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:409:3: error: field name not in record or union initializer
409 | .pCommandBufferInfos = &commandBufferInfo,
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:409:3: note: (near initialization for ‘submitInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:409:26: warning: excess elements in scalar initializer
409 | .pCommandBufferInfos = &commandBufferInfo,
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:409:26: note: (near initialization for ‘submitInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:410:3: error: field name not in record or union initializer
410 | .waitSemaphoreInfoCount = semaphore_wait_info_len,
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:410:3: note: (near initialization for ‘submitInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:410:29: warning: excess elements in scalar initializer
410 | .waitSemaphoreInfoCount = semaphore_wait_info_len,
| ^~~~~~~~~~~~~~~~~~~~~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:410:29: note: (near initialization for ‘submitInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:411:3: error: field name not in record or union initializer
411 | .pWaitSemaphoreInfos = semaphore_wait_info,
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:411:3: note: (near initialization for ‘submitInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:411:26: warning: excess elements in scalar initializer
411 | .pWaitSemaphoreInfos = semaphore_wait_info,
| ^~~~~~~~~~~~~~~~~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:411:26: note: (near initialization for ‘submitInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:412:3: error: field name not in record or union initializer
412 | .signalSemaphoreInfoCount = semaphore_signal_info_len,
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:412:3: note: (near initialization for ‘submitInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:412:31: warning: excess elements in scalar initializer
412 | .signalSemaphoreInfoCount = semaphore_signal_info_len,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:412:31: note: (near initialization for ‘submitInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:413:3: error: field name not in record or union initializer
413 | .pSignalSemaphoreInfos = semaphore_signal_info,
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:413:3: note: (near initialization for ‘submitInfo’)
../spa/plugins/vulkan/vulkan-compute-utils.c:413:28: warning: excess elements in scalar initializer
413 | .pSignalSemaphoreInfos = semaphore_signal_info,
| ^~~~~~~~~~~~~~~~~~~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:413:28: note: (near initialization for ‘submitInfo’)
In file included from ../spa/plugins/vulkan/vulkan-compute-utils.h:11,
from ../spa/plugins/vulkan/vulkan-compute-utils.c:28:
../spa/plugins/vulkan/vulkan-compute-utils.c:415:25: error: called object ‘vkQueueSubmit2KHR’ is not a function or function pointer
415 | VK_CHECK_RESULT(vkQueueSubmit2KHR(s->base.queue, 1, &submitInfo, s->fence));
| ^~~~~~~~~~~~~~~~~
../spa/plugins/vulkan/vulkan-utils.h:16:22: note: in definition of macro ‘VK_CHECK_RESULT’
16 | VkResult _result = (f); \
| ^
../spa/plugins/vulkan/vulkan-compute-utils.c:284:27: note: declared here
284 | VULKAN_INSTANCE_FUNCTION(vkQueueSubmit2KHR);
| ^~~~~~~~~~~~~~~~~
../spa/plugins/vulkan/vulkan-compute-utils.c:32:13: note: in definition of macro ‘VULKAN_INSTANCE_FUNCTION’
32 | PFN_##name name = (PFN_##name)vkGetInstanceProcAddr(s->base.instance, #name)
| ^~~~
How Reproducible:
Always 100%
Steps to Reproduce:
- download source code
- enable vulkan
-D vulkan=enabled
- give a build
- compilation failure
Actual Results:
Should compile successfully
Additional Info (as attachments):
macros are available only above libvulkan-dev (>1.2.131.2).
!1542 (merged) introduced the problem.