Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • gst-plugins-bad gst-plugins-bad
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 973
    • Issues 973
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 103
    • Merge requests 103
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GStreamerGStreamer
  • gst-plugins-badgst-plugins-bad
  • Issues
  • #1566
Closed
Open
Issue created Mar 31, 2021 by Wim Taymans@wtaymans

vulkan multilib problems

In gst-libs/gst/vulkan/gstvkhandle.h there is this define:

VK_DEFINE_NON_DISPATCHABLE_HANDLE(GstVulkanHandleTypedef)

Which in vulkan/vulkan_core.h resolves to this:

#if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
#else
        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
#endif
#endif

Which generates different .gir files for i686 and x86_64:

19a20,24
>     <alias name="VulkanHandleTypedef" c:type="GstVulkanHandleTypedef">
>       <source-position filename="../gst-libs/gst/vulkan/gstvkhandle.h"
>                        line="50"/>
>       <type name="guint64" c:type="uint64_t"/>
>     </alias>
5070,5076d5074
<     <record name="VulkanHandleTypedef"
<             c:type="GstVulkanHandleTypedef"
<             disguised="1"
<             version="1.18">
<       <source-position filename="../gst-libs/gst/vulkan/gstvkhandle.h"
<                        line="50"/>
<     </record>

Which then causes installation problems when installing the -devel packages:

gstreamer1-plugins-bad-free-devel-1.18.2-2.el9.i686.rpm gstreamer1-plugins-bad-free-devel-1.18.2-2.el9.x86_64.rpm
warning: /root/tmp.TDRrtuKWTa/rpms/gstreamer1-plugins-bad-free-devel-1.18.2-2.el9.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
	file /usr/share/gir-1.0/GstVulkan-1.0.gir conflicts between attempted installs of gstreamer1-plugins-bad-free-devel-1.18.2-2.el9.i686 and gstreamer1-plugins-bad-free-devel-1.18.2-2.el9.x86_64

I'm not quite sure what to do but according to the docs https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_DEFINE_NON_DISPATCHABLE_HANDLE.html it should be possible to do:

diff --git a/gst-libs/gst/vulkan/gstvkapi.h b/gst-libs/gst/vulkan/gstvkapi.h
index 9d223201f..76886c703 100644
--- a/gst-libs/gst/vulkan/gstvkapi.h
+++ b/gst-libs/gst/vulkan/gstvkapi.h
@@ -31,6 +31,8 @@
 #include <gst/vulkan/vulkan_fwd.h>
 #include <gst/vulkan/vulkan-enumtypes.h>
 
+#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
+
 #include <vulkan/vulkan_core.h>
 
 #endif /* __GST_VULKAN_API_H__ */

What do you think? shall I make a merge request?

Assignee
Assign to
Time tracking