runqemu: also set GBM_BACKENDS_PATH

Newer Mesa dynamically loads GBM backends from the libdir. This is going
to cause issues with running native QEMU as the libdir
(mesa-native/recipes-sysroot-native) will not exist when it's executed.
Follow the LIBGL_DRIVERS_PATH approach and specify a path to GBM
backends via GBM_BACKENDS_PATH environment variable.

(From OE-Core rev: 91797b077f5fe9f13319d1633f491bad2c6f7560)

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Dmitry Baryshkov 2025-04-10 05:54:40 +03:00 committed by Richard Purdie
parent 3febeb3587
commit 3434e65b4e

View File

@ -468,9 +468,11 @@ class BaseConfig(object):
self.set("IMAGE_LINK_NAME", image_link_name)
logger.debug('Using IMAGE_LINK_NAME = "%s"' % image_link_name)
def set_dri_path(self):
def set_mesa_paths(self):
drivers_path = os.path.join(self.bindir_native, '../lib/dri')
if not os.path.exists(drivers_path) or not os.listdir(drivers_path):
gbm_path = os.path.join(self.bindir_native, '../lib/gbm')
if not os.path.exists(drivers_path) or not os.listdir(drivers_path) \
or not os.path.exists(gbm_path) or not os.listdir(gbm_path):
raise RunQemuError("""
qemu has been built without opengl support and accelerated graphics support is not available.
To enable it, add:
@ -479,6 +481,7 @@ DISTRO_FEATURES_NATIVESDK:append = " opengl"
to your build configuration.
""")
self.qemu_environ['LIBGL_DRIVERS_PATH'] = drivers_path
self.qemu_environ['GBM_BACKENDS_PATH'] = gbm_path
def check_args(self):
for debug in ("-d", "--debug"):
@ -1461,7 +1464,7 @@ to your build configuration.
self.qemu_opt += ' -display '
if self.egl_headless == True:
self.check_render_nodes()
self.set_dri_path()
self.set_mesa_paths()
self.qemu_opt += 'egl-headless,'
else:
if self.sdl == True:
@ -1471,10 +1474,10 @@ to your build configuration.
self.qemu_opt += 'gtk,'
if self.gl == True:
self.set_dri_path()
self.set_mesa_paths()
self.qemu_opt += 'gl=on,'
elif self.gl_es == True:
self.set_dri_path()
self.set_mesa_paths()
self.qemu_opt += 'gl=es,'
self.qemu_opt += 'show-cursor=on'