diff options
author | Peter Maydell | 2017-02-20 17:31:38 +0100 |
---|---|---|
committer | Peter Maydell | 2017-02-20 17:31:38 +0100 |
commit | c8f21dbfc3dea943ca5edac2f00058477ecb5b6b (patch) | |
tree | bc1e072313852a03d487a20da639a93ba354211d /ui/egl-helpers.c | |
parent | Merge remote-tracking branch 'remotes/kraxel/tags/pull-input-20170220-1' into... (diff) | |
parent | egl-helpers: Support newer MESA versions (diff) | |
download | qemu-c8f21dbfc3dea943ca5edac2f00058477ecb5b6b.tar.gz qemu-c8f21dbfc3dea943ca5edac2f00058477ecb5b6b.tar.xz qemu-c8f21dbfc3dea943ca5edac2f00058477ecb5b6b.zip |
Merge remote-tracking branch 'remotes/kraxel/tags/pull-ui-20170220-1' into staging
ui: opengl fixes, for spice and egl-helpers.
# gpg: Signature made Mon 20 Feb 2017 13:12:46 GMT
# gpg: using RSA key 0x4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>"
# gpg: aka "Gerd Hoffmann <gerd@kraxel.org>"
# gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>"
# Primary key fingerprint: A032 8CFF B93A 17A7 9901 FE7D 4CB6 D8EE D3E8 7138
* remotes/kraxel/tags/pull-ui-20170220-1:
egl-helpers: Support newer MESA versions
spice: allow to specify drm rendernode
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'ui/egl-helpers.c')
-rw-r--r-- | ui/egl-helpers.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/ui/egl-helpers.c b/ui/egl-helpers.c index cd24568a5e..584dd1b04d 100644 --- a/ui/egl-helpers.c +++ b/ui/egl-helpers.c @@ -44,13 +44,17 @@ int qemu_egl_rn_fd; struct gbm_device *qemu_egl_rn_gbm_dev; EGLContext qemu_egl_rn_ctx; -int qemu_egl_rendernode_open(void) +static int qemu_egl_rendernode_open(const char *rendernode) { DIR *dir; struct dirent *e; int r, fd; char *p; + if (rendernode) { + return open(rendernode, O_RDWR | O_CLOEXEC | O_NOCTTY | O_NONBLOCK); + } + dir = opendir("/dev/dri"); if (!dir) { return -1; @@ -85,11 +89,11 @@ int qemu_egl_rendernode_open(void) return fd; } -int egl_rendernode_init(void) +int egl_rendernode_init(const char *rendernode) { qemu_egl_rn_fd = -1; - qemu_egl_rn_fd = qemu_egl_rendernode_open(); + qemu_egl_rn_fd = qemu_egl_rendernode_open(rendernode); if (qemu_egl_rn_fd == -1) { error_report("egl: no drm render node available"); goto err; @@ -219,7 +223,11 @@ int qemu_egl_init_dpy(EGLNativeDisplayType dpy, bool gles, bool debug) } egl_dbg("eglGetDisplay (dpy %p) ...\n", dpy); +#ifdef EGL_MESA_platform_gbm + qemu_egl_display = eglGetPlatformDisplayEXT(EGL_PLATFORM_GBM_MESA, dpy, NULL); +#else qemu_egl_display = eglGetDisplay(dpy); +#endif if (qemu_egl_display == EGL_NO_DISPLAY) { error_report("egl: eglGetDisplay failed"); return -1; |