summaryrefslogtreecommitdiffstats
path: root/scripts/runqemu
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2022-04-13 15:45:03 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-04-14 09:47:00 +0100
commit0be2abfe7c9e249da4c237c12925c507d569e2e4 (patch)
tree0f64c932766734defb507ad87b84b2afa2319068 /scripts/runqemu
parent4f7717ae09cd7fc7877fd8c733d1bda9c888e129 (diff)
downloadpoky-0be2abfe7c9e249da4c237c12925c507d569e2e4.tar.gz
runqemu: Allow auto detection of the correct graphics options
Running "runqemu qemux86 kvm" when qemu is configured for sdl and/or gtk display output currently leads to a poor user experience with no cursor and corrupted fonts in the gtk case. This is due to no options being passed to qemu which leads to the loss of the font envirornment variable and the show-cursor option. If the user hasn't specified a display type, grep the output of "qemu-system-xxx --help" for the display types and pick the "best" which ensures our config is passed in. That resolves the gtk font issue and the cursor issue with both sdl and gtk. (From OE-Core rev: 7f78bb7a7baf67b9226fb460ca9e12fde6ef40c8) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/runqemu')
-rwxr-xr-xscripts/runqemu33
1 files changed, 26 insertions, 7 deletions
diff --git a/scripts/runqemu b/scripts/runqemu
index 2f77a7bd0f..36af764b1b 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -1363,13 +1363,27 @@ class BaseConfig(object):
1363 if (self.gl_es == True or self.gl == True) and (self.sdl == False and self.gtk == False): 1363 if (self.gl_es == True or self.gl == True) and (self.sdl == False and self.gtk == False):
1364 raise RunQemuError('Option gl/gl-es needs gtk or sdl option.') 1364 raise RunQemuError('Option gl/gl-es needs gtk or sdl option.')
1365 1365
1366 if self.sdl == True or self.gtk == True or self.egl_headless == True: 1366 # If we have no display option, we autodetect based upon what qemu supports. We
1367 if self.gl or self.gl_es or self.egl_headless: 1367 # need our font setup and show-cusor below so we need to see what qemu --help says
1368 self.qemu_opt += ' -device virtio-vga-gl ' 1368 # is supported so we can pass our correct config in.
1369 if not self.nographic and not self.sdl and not self.gtk and not self.egl_headless == True:
1370 output = subprocess.check_output([self.qemu_bin, "--help"], universal_newlines=True)
1371 if "-display gtk" in output:
1372 self.gtk = True
1373 elif "-display sdl" in output:
1374 self.sdl = True
1369 else: 1375 else:
1370 self.qemu_opt += ' -device virtio-vga ' 1376 self.qemu_opt += '-display none'
1371 1377
1372 self.qemu_opt += '-display ' 1378 if self.sdl == True or self.gtk == True or self.egl_headless == True:
1379
1380 if self.qemu_system.endswith(('i386', 'x86_64')):
1381 if self.gl or self.gl_es or self.egl_headless:
1382 self.qemu_opt += ' -device virtio-vga-gl '
1383 else:
1384 self.qemu_opt += ' -device virtio-vga '
1385
1386 self.qemu_opt += ' -display '
1373 if self.egl_headless == True: 1387 if self.egl_headless == True:
1374 self.set_dri_path() 1388 self.set_dri_path()
1375 self.qemu_opt += 'egl-headless,' 1389 self.qemu_opt += 'egl-headless,'
@@ -1415,7 +1429,7 @@ class BaseConfig(object):
1415 if serial_num < 2: 1429 if serial_num < 2:
1416 self.qemu_opt += " -serial null" 1430 self.qemu_opt += " -serial null"
1417 1431
1418 def setup_final(self): 1432 def find_qemu(self):
1419 qemu_bin = os.path.join(self.bindir_native, self.qemu_system) 1433 qemu_bin = os.path.join(self.bindir_native, self.qemu_system)
1420 1434
1421 # It is possible to have qemu-native in ASSUME_PROVIDED, and it won't 1435 # It is possible to have qemu-native in ASSUME_PROVIDED, and it won't
@@ -1434,8 +1448,13 @@ class BaseConfig(object):
1434 1448
1435 if not os.access(qemu_bin, os.X_OK): 1449 if not os.access(qemu_bin, os.X_OK):
1436 raise OEPathError("No QEMU binary '%s' could be found" % qemu_bin) 1450 raise OEPathError("No QEMU binary '%s' could be found" % qemu_bin)
1451 self.qemu_bin = qemu_bin
1452
1453 def setup_final(self):
1454
1455 self.find_qemu()
1437 1456
1438 self.qemu_opt = "%s %s %s %s %s" % (qemu_bin, self.get('NETWORK_CMD'), self.get('QB_RNG'), self.get('ROOTFS_OPTIONS'), self.get('QB_OPT_APPEND').replace('@DEPLOY_DIR_IMAGE@', self.get('DEPLOY_DIR_IMAGE'))) 1457 self.qemu_opt = "%s %s %s %s %s" % (self.qemu_bin, self.get('NETWORK_CMD'), self.get('QB_RNG'), self.get('ROOTFS_OPTIONS'), self.get('QB_OPT_APPEND').replace('@DEPLOY_DIR_IMAGE@', self.get('DEPLOY_DIR_IMAGE')))
1439 1458
1440 for ovmf in self.ovmf_bios: 1459 for ovmf in self.ovmf_bios:
1441 format = ovmf.rsplit('.', 1)[-1] 1460 format = ovmf.rsplit('.', 1)[-1]