OE4T/tegra-demo-distro

Non-X11 images

jwinarske opened this issue · 7 comments

I'm building Weston image without X11. Nano and NX.

CI jobs:
https://github.com/meta-flutter/meta-flutter/blob/jw/nvidia_nx/.github/workflows/dunfell-nvidia-jetson-nano-devkit.yml
https://github.com/meta-flutter/meta-flutter/blob/jw/nvidia_nx/.github/workflows/dunfell-nvidia-jetson-xavier-nx-devkit.yml

X11 appears to be tightly coupled with demo-image-weston, and the build is ignoring this:
echo 'DISTRO_FEATURES_remove = "x11"' >> ./conf/local.conf

If DISTRO_FEATURES doesn't have x11, it shouldn't build anything with X11 dependency.

Same with vulkan recipes, they're all dependent on x11; where the actual repo supports backend of direct2display, xcb, x11, and Wayland.

Basically adding DISTRO_FEATURES_remove = "x11" should no longer include any x11 dependent recipes in the image.

What's the by-design approach for non-X11 images?

To get vulkaninfo and Sascha Willems samples running on Wayland I needed this change:
https://github.com/jwinarske/meta-vulkan/blob/dunfell-no-mesa/recipes-bsp/tegra-binaries/tegra-libraries_32.5.2.bbappend

root@jetson-xavier-nx-devkit:/usr/share# vulkaninfo --summary
nvdc: start nvdcEventThread
==========
VULKANINFO
==========

Vulkan Instance Version: 1.2.198


Instance Extensions: count = 14
-------------------------------
VK_EXT_debug_report                    : extension revision 9
VK_EXT_debug_utils                     : extension revision 1
VK_EXT_display_surface_counter         : extension revision 1
VK_KHR_device_group_creation           : extension revision 1
VK_KHR_display                         : extension revision 23
VK_KHR_external_fence_capabilities     : extension revision 1
VK_KHR_external_memory_capabilities    : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2         : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2       : extension revision 1
VK_KHR_surface                         : extension revision 25
VK_KHR_surface_protected_capabilities  : extension revision 1
VK_KHR_wayland_surface                 : extension revision 6

Instance Layers:
----------------

Devices:
========
GPU0:
	apiVersion         = 4202627 (1.2.131)
	driverVersion      = 134299776 (0x8014080)
	vendorID           = 0x10de
	deviceID           = 0xa5ba03d7
	deviceType         = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
	deviceName         = NVIDIA Tegra Xavier (nvgpu)
	driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
	driverName         = NVIDIA
	driverInfo         = 32.5.2
	conformanceVersion = 1.2.1.0
nvdc: exit nvdcEventThread
root@jetson-nano-devkit:/etc/vulkan/icd.d# vulkaninfo --summary
nvdc: start nvdcEventThread
==========
VULKANINFO
==========

Vulkan Instance Version: 1.2.198


Instance Extensions: count = 14
-------------------------------
VK_EXT_debug_report                    : extension revision 9
VK_EXT_debug_utils                     : extension revision 1
VK_EXT_display_surface_counter         : extension revision 1
VK_KHR_device_group_creation           : extension revision 1
VK_KHR_display                         : extension revision 23
VK_KHR_external_fence_capabilities     : extension revision 1
VK_KHR_external_memory_capabilities    : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2         : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2       : extension revision 1
VK_KHR_surface                         : extension revision 25
VK_KHR_surface_protected_capabilities  : extension revision 1
VK_KHR_wayland_surface                 : extension revision 6

Instance Layers:
----------------

Devices:
========
GPU0:
	apiVersion         = 4202627 (1.2.131)
	driverVersion      = 134299776 (0x8014080)
	vendorID           = 0x10de
	deviceID           = 0x92ba03d7
	deviceType         = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
	deviceName         = NVIDIA Tegra X1 (nvgpu)
	driverID           = DRIVER_ID_NVIDIA_PROPRIETARY
	driverName         = NVIDIA
	driverInfo         = 32.5.2
	conformanceVersion = 1.2.1.0
nvdc: exit nvdcEventThread

References

https://github.com/jwinarske/meta-vulkan/tree/dunfell-no-mesa/recipes-graphics/vulkan
https://github.com/jwinarske/meta-vulkan/blob/dunfell-no-mesa/recipes-graphics/sascha-samples/sascha-samples_git.bb

Interesting, thanks. The nvidia_icd.json file is copied out of the L4T package, so the GLX library is the one that NVIDIA specifies there as the provider. If directly specifying the other library works, great.

There are several dependencies on x11 in L4T, and they're not all easy to tease out. Since NV's targeting Ubuntu with their prebuilt binaries, x11 is always present.

@madisongh I understand. It would be good to have an active list of items that depend on X11. I would expect NVidia to eventually move away from X11; perhaps they have no plans. Ubuntu 20 Gnome window manager defaults to Wayland, and X11 is emulated (XWayland). Between the two you get higher framerates with Wayland.

Arech commented

Gentlemen, excuse me for an offtopic, I'm looking for solution to another problem, but relevant resources are extremely scarse, so trying every opportunity. Do you know how to get rid of nvdc spamming these nvdc: start nvdcEventThread and nvdc: exit nvdcEventThread on Vulkan instance creation/destruction?

Also could that mean that Vulkan drivers are actually in a debug mode (and not production quality performance optimized)?

Hey @jwinarske

Any updates regarding this issue ? Otherwise, I will close it

@ichergui No update, other than I haven't tried a recent release.

I think we should close this issue and open new one if needed when trying with new L4T release