# ========================================================================= # GPU # ========================================================================= GPU_USERLAND_LIBRARIES_WAYLAND ?= "gcnano-userland-multi-binary-stm32mp" GPU_USERLAND_LIBRARIES_EGLFS ?= "gcnano-userland-multi-binary-stm32mp" GPU_USERLAND_LIBRARIES_X11 ?= "mesa" # Helper function for overloading the default EGL/GLES implementation. # The Vivante libraries are compatible with the Mesa headers # but we can have several backend available following the distro configuration: # - wayland # - x11 # - wayland + x11 # - framebuffer # - drm def get_gpu_vivante_handler(d): """ Overloading the default EGL/GLES/mesa implementation.""" machine_features = d.getVar('MACHINE_FEATURES').split() distro_features = d.getVar('DISTRO_FEATURES').split() gpu_lib_wayland = d.getVar('GPU_USERLAND_LIBRARIES_WAYLAND').split() gpu_lib_eglfs = d.getVar('GPU_USERLAND_LIBRARIES_EGLFS').split() gpu_lib_x11 = d.getVar('GPU_USERLAND_LIBRARIES_X11').split() if 'gpu' in machine_features: if 'wayland' in distro_features: provider = gpu_lib_wayland[0] else: if 'x11' in distro_features: provider = gpu_lib_x11[0] else: '''no wayland, no X11 -> choose DRM/FB for eglfs''' provider = gpu_lib_eglfs[0] else: provider = "mesa" return provider; GPU_USERLAND_LIBRARIES_INSTALL = "${@get_gpu_vivante_handler(d)}" PREFERRED_PROVIDER_virtual/egl = "${@get_gpu_vivante_handler(d)}" PREFERRED_PROVIDER_virtual/libgles1 = "${@get_gpu_vivante_handler(d)}" PREFERRED_PROVIDER_virtual/libgles2 = "${@get_gpu_vivante_handler(d)}" PREFERRED_PROVIDER_virtual/libgles3 = "${@get_gpu_vivante_handler(d)}" PREFERRED_PROVIDER_virtual/libgbm = "${@get_gpu_vivante_handler(d)}" PREFERRED_PROVIDER_virtual/mesa = "${@bb.utils.contains('PREFERRED_PROVIDER_virtual/egl','mesa','mesa','mesa-gl',d)}" PREFERRED_PROVIDER_virtual/libgl = "${@bb.utils.contains('PREFERRED_PROVIDER_virtual/egl','mesa','mesa','mesa-gl',d)}"