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) self.set("IMAGE_LINK_NAME", image_link_name)
logger.debug('Using IMAGE_LINK_NAME = "%s"' % 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') 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(""" raise RunQemuError("""
qemu has been built without opengl support and accelerated graphics support is not available. qemu has been built without opengl support and accelerated graphics support is not available.
To enable it, add: To enable it, add:
@ -479,6 +481,7 @@ DISTRO_FEATURES_NATIVESDK:append = " opengl"
to your build configuration. to your build configuration.
""") """)
self.qemu_environ['LIBGL_DRIVERS_PATH'] = drivers_path self.qemu_environ['LIBGL_DRIVERS_PATH'] = drivers_path
self.qemu_environ['GBM_BACKENDS_PATH'] = gbm_path
def check_args(self): def check_args(self):
for debug in ("-d", "--debug"): for debug in ("-d", "--debug"):
@ -1461,7 +1464,7 @@ to your build configuration.
self.qemu_opt += ' -display ' self.qemu_opt += ' -display '
if self.egl_headless == True: if self.egl_headless == True:
self.check_render_nodes() self.check_render_nodes()
self.set_dri_path() self.set_mesa_paths()
self.qemu_opt += 'egl-headless,' self.qemu_opt += 'egl-headless,'
else: else:
if self.sdl == True: if self.sdl == True:
@ -1471,10 +1474,10 @@ to your build configuration.
self.qemu_opt += 'gtk,' self.qemu_opt += 'gtk,'
if self.gl == True: if self.gl == True:
self.set_dri_path() self.set_mesa_paths()
self.qemu_opt += 'gl=on,' self.qemu_opt += 'gl=on,'
elif self.gl_es == True: elif self.gl_es == True:
self.set_dri_path() self.set_mesa_paths()
self.qemu_opt += 'gl=es,' self.qemu_opt += 'gl=es,'
self.qemu_opt += 'show-cursor=on' self.qemu_opt += 'show-cursor=on'