PowerVR Rogue GE8430 x11 dependency

I’m working with the TI TDA4VM (J721E) SoC (TI SK-TDA4VM + BeagleBone AI64), and am wondering if someone can describe the GE8430 Vulkan implementations hard dependency on X11?

I’m primarily interested in Wayland and Direct to Display on systems that do not allow/offer X11.

Hello,

Welcome to the PVR Developer forum. I’d be happy to assist you. However, I’m not sure if I fully understand your question. Are you suggesting that Vulkan is tightly coupled with X11 on this platform, or do you believe it might be the case here? Is this limitation documented anywhere for this platform?

Are you encountering any issues related to Vulkan’s dependency on X11 on this platform, or are you looking for guidance on how to work with different windowing systems?

The choice of the windowing system often depends on the OS and it’s various distributions available (unix/linux/android/windows etc.) and your specific requirements. It might be helpful to experiment with different surface creation options while enabling relevant extensions in Vulkan, such as VK_KHR_wayland_surface, VK_KHR_xcb_surface, and VK_KHR_xlib_surface.

Best Regards,
Nagnath

Hi Nagnath,

The TI implementation of the Vulkan user mode driver has a build time dependency on libx11-xcb.

User mode:

122 FILES:libvk-rogue = “${libdir}/libVK_IMG.so* ${datadir}/vulkan”
123 RDEPENDS:libvk-rogue += “vulkan-loader libx11-xcb wayland libdrm”

TI developer comments:

I am asking why is there a build time dependency on libx11-xcb. Is this TI or Imagination, and how do we factor out this dependency?

I think the proper approach is to use function pointers, and not require back end libraries at link time. This removes the build time dependency, and prevents having to create shims. So if at runtime you only use direct to display, there is no need to link with xcb or wayland. If you only use wayland, no need for xcb. If using direct to display, no need for either xcb, or wayland. To add this functionality is quite a simple solution and makes the driver much more usable.

Hello jwinarske,

After checking with our DDK linux team on this, I was told that “For Vulkan, the various supported window systems are specified when the DDK is built, using the SUPPORT_VK_PLATFORMS environment variable” which is set according to the platforms supported in Yocto e.g. which may not be the case with TI. They think the problem here could be that the IMG DDK Vulkan library is closed source, and so TI build it with all window systems enabled, to cover all potential use cases, and distribute it in binary form to customers" To confirm which we would need to discuss with TI if that is the case here.

Best Regards,
Nagnath

Hi Nagnath,

Please clarify from your DDK linux team why they are static linking instead of dynamic loading. Which means you need everything (wayland/xcb) present on an OS image for it to run. This may make sense in a desktop scenario, not an embedded Linux scenario. X11 adds a large amount of useless things in the case of embedded Linux only using Wayland. This should be raised as a bug.

Thanks,
Joel