Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [RFC v1 0/6] Vulkan support
@ 2020-12-23 22:45 Peter Seiderer
  2020-12-23 22:45 ` [Buildroot] [RFC v1 1/6] package/vulkan-headers: new package Peter Seiderer
                   ` (6 more replies)
  0 siblings, 7 replies; 15+ messages in thread
From: Peter Seiderer @ 2020-12-23 22:45 UTC (permalink / raw)
  To: buildroot

A starting point to add some/more Vulkan support to Buildroot.

Targeting towards the RPi Vulkan support (as announced e.g. [1]),
but send as RFC as not (yet) functional:

- did only try to run standalone and/or with Qt EGLFS, but
  did not work out as the broadcom vulkan driver is  only
  functional with X11/XCB

- the Qt Vulkan support seems only be functional with
  EGLFS/Vivante and/or X11/XCB

Tested with the following defconfig (and dtoverlay=vc4-kms-v3d-pi4):

  BR2_aarch64=y
  BR2_cortex_a72=y
  BR2_ARM_FPU_VFPV4=y
  BR2_ENABLE_DEBUG=y
  BR2_OPTIMIZE_3=y
  BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
  BR2_PACKAGE_GLIBC_UTILS=y
  BR2_BINUTILS_VERSION_2_35_X=y
  BR2_GCC_VERSION_10_X=y
  BR2_TOOLCHAIN_BUILDROOT_CXX=y
  BR2_INIT_SYSV=y
  BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
  BR2_SYSTEM_DHCP="eth0"
  BR2_GENERATE_LOCALE="en_US"
  BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi4-64/post-build.sh"
  BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi4-64/post-image.sh"
  BR2_ROOTFS_POST_SCRIPT_ARGS="--add-miniuart-bt-overlay --aarch64"
  BR2_LINUX_KERNEL=y
  BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
  BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,967d45b29ca2902f031b867809d72e3b3d623e7a)/linux-967d45b29ca2902f031b867809d72e3b3d623e7a.tar.gz"
  BR2_LINUX_KERNEL_DEFCONFIG="bcm2711"
  BR2_LINUX_KERNEL_DTS_SUPPORT=y
  BR2_LINUX_KERNEL_INTREE_DTS_NAME="broadcom/bcm2711-rpi-4-b"
  BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
  BR2_PACKAGE_DEJAVU=y
  BR2_PACKAGE_MESA3D=y
  BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_KMSRO=y
  BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_V3D=y
  BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VC4=y
  BR2_PACKAGE_MESA3D_VULKAN_DRIVER_BROADCOM=y
  BR2_PACKAGE_MESA3D_VULKAN_DRIVER_SWRAST=y
  BR2_PACKAGE_MESA3D_OPENGL_ES=y
  BR2_PACKAGE_VULKAN_TOOLS=y
  BR2_PACKAGE_QT5=y
  BR2_PACKAGE_QT5BASE_EXAMPLES=y
  BR2_PACKAGE_QT5BASE_GUI=y
  BR2_PACKAGE_QT5BASE_OPENGL_LIB=y
  BR2_PACKAGE_QT5BASE_VULKAN=y
  BR2_PACKAGE_QT5BASE_EGLFS=y
  BR2_PACKAGE_QT5BASE_FONTCONFIG=y
  BR2_PACKAGE_QT5BASE_HARFBUZZ=y
  BR2_PACKAGE_QT5BASE_GIF=y
  BR2_PACKAGE_QT5BASE_JPEG=y
  BR2_PACKAGE_QT5BASE_PNG=y
  BR2_PACKAGE_RPI_FIRMWARE=y
  BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4=y
  BR2_TARGET_ROOTFS_EXT2=y
  BR2_TARGET_ROOTFS_EXT2_4=y
  BR2_TARGET_ROOTFS_EXT2_SIZE="384M"
  # BR2_TARGET_ROOTFS_TAR is not set
  BR2_PACKAGE_HOST_DOSFSTOOLS=y
  BR2_PACKAGE_HOST_GENIMAGE=y
  BR2_PACKAGE_HOST_MTOOLS=y

There are three vulkan ICDs installed
  - /usr/lib/libvulkan_lvp.so: mesa3d/swrast
  - /usr/lib/libvulkan_broadcom.so: mesa3d/broadcom
  - /usr/lib/libVkICD_mock_icd.so: vulkan-tools/moc-ICD

Runtime test done:

  - vulkan-tools/moc-ICD (works):
	$ VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/VkICD_mock_icd.json vulkaninfo
==========
VULKANINFO
==========

Vulkan Instance Version: 1.2.165


Instance Extensions: count = 19
===============================
	VK_EXT_debug_report                    : extension revision 9
	VK_EXT_debug_utils                     : extension revision 2
	VK_EXT_direct_mode_display             : extension revision 1
	VK_EXT_display_surface_counter         : extension revision 1
	VK_EXT_headless_surface                : extension revision 1
	VK_EXT_swapchain_colorspace            : extension revision 4
	VK_EXT_validation_features             : extension revision 4
	VK_EXT_validation_flags                : extension revision 2
	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_NV_external_memory_capabilities     : extension revision 1

Layers: count = 0
=================
Groups:
=======
	No Device Groups Found

Device Properties and Extensions:
=================================
GPU0:
VkPhysicalDeviceProperties:
---------------------------
	apiVersion     = 4198400 (1.1.0)
	driverVersion  = 1 (0x0001)
	vendorID       = 0xba5eba11
	deviceID       = 0xf005ba11
	deviceType     = PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU
	deviceName     = Vulkan Mock Device
[...]

  - mesa3d/swrast:
	$ VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.cortex-a72.json vulkaninfo
	WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
	Segmentation fault

  - mesa3d/broadcom:
	$ VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/broadcom_icd.cortex-a72.json vulkaninfo
	ERROR at /home/seiderer/Work/Buildroot/build_rpi4_mesa_vc4_001/build/vulkan-tools-1.2.162/vulkaninfo/vulkaninfo.h:248:vkEnumerateInstanceExtensionProperties failed with ERROR_INITIALIZATION_FAILED

Next steps:
  - enable Vulkan/X11/XCB support
  - fix mesa3d/swrast stand-alone link failure

Regards,
Peter

[1] https://www.raspberrypi.org/blog/vulkan-update-were-conformant/

Peter Seiderer (6):
  package/vulkan-headers: new package
  package/vulkan-loader: new package
  package/vulkan-tools: new package
  package/mesa3d: add vulkan broadcom driver support
  package/mesa3d: add vulkan swrast driver support
  package/qt5base: add vulkan option

 package/Config.in                             |  3 ++
 package/mesa3d/Config.in                      | 21 ++++++++++++
 package/mesa3d/mesa3d.mk                      |  6 +++-
 package/qt5/qt5base/Config.in                 | 11 +++++++
 package/qt5/qt5base/qt5base.mk                |  7 ++++
 package/vulkan-headers/Config.in              |  7 ++++
 package/vulkan-headers/vulkan-headers.hash    |  3 ++
 package/vulkan-headers/vulkan-headers.mk      | 13 ++++++++
 .../0001-loader-fix-asm_offset-call.patch     | 32 +++++++++++++++++++
 package/vulkan-loader/Config.in               | 14 ++++++++
 package/vulkan-loader/vulkan-loader.hash      |  3 ++
 package/vulkan-loader/vulkan-loader.mk        | 22 +++++++++++++
 package/vulkan-tools/Config.in                | 17 ++++++++++
 package/vulkan-tools/vulkan-tools.hash        |  3 ++
 package/vulkan-tools/vulkan-tools.mk          | 25 +++++++++++++++
 15 files changed, 186 insertions(+), 1 deletion(-)
 create mode 100644 package/vulkan-headers/Config.in
 create mode 100644 package/vulkan-headers/vulkan-headers.hash
 create mode 100644 package/vulkan-headers/vulkan-headers.mk
 create mode 100644 package/vulkan-loader/0001-loader-fix-asm_offset-call.patch
 create mode 100644 package/vulkan-loader/Config.in
 create mode 100644 package/vulkan-loader/vulkan-loader.hash
 create mode 100644 package/vulkan-loader/vulkan-loader.mk
 create mode 100644 package/vulkan-tools/Config.in
 create mode 100644 package/vulkan-tools/vulkan-tools.hash
 create mode 100644 package/vulkan-tools/vulkan-tools.mk

-- 
2.29.2

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2020-12-30 14:32 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-12-23 22:45 [Buildroot] [RFC v1 0/6] Vulkan support Peter Seiderer
2020-12-23 22:45 ` [Buildroot] [RFC v1 1/6] package/vulkan-headers: new package Peter Seiderer
2020-12-30  8:42   ` Yann E. MORIN
2020-12-30 14:23     ` Peter Seiderer
2020-12-23 22:45 ` [Buildroot] [RFC v1 2/6] package/vulkan-loader: " Peter Seiderer
2020-12-30  8:54   ` Yann E. MORIN
2020-12-23 22:45 ` [Buildroot] [RFC v1 3/6] package/vulkan-tools: " Peter Seiderer
2020-12-30  9:00   ` Yann E. MORIN
2020-12-30 14:32     ` Peter Seiderer
2020-12-23 22:45 ` [Buildroot] [RFC v1 4/6] package/mesa3d: add vulkan broadcom driver support Peter Seiderer
2020-12-30  9:07   ` Yann E. MORIN
2020-12-23 22:45 ` [Buildroot] [RFC v1 5/6] package/mesa3d: add vulkan swrast " Peter Seiderer
2020-12-30  9:15   ` Yann E. MORIN
2020-12-23 22:45 ` [Buildroot] [RFC v1 6/6] package/qt5base: add vulkan option Peter Seiderer
2020-12-30  8:39 ` [Buildroot] [RFC v1 0/6] Vulkan support Yann E. MORIN

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox