From nobody Tue Apr 30 04:28:47 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 152336221135191.87008026205501; Tue, 10 Apr 2018 05:10:11 -0700 (PDT) Received: from localhost ([::1]:40114 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f5s6E-0002ii-J7 for importer@patchew.org; Tue, 10 Apr 2018 08:10:10 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53034) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f5s4l-0001qZ-0h for qemu-devel@nongnu.org; Tue, 10 Apr 2018 08:08:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f5s4f-0004ZK-SV for qemu-devel@nongnu.org; Tue, 10 Apr 2018 08:08:38 -0400 Received: from mail-wr0-x244.google.com ([2a00:1450:400c:c0c::244]:34230) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f5s4f-0004Yt-M3 for qemu-devel@nongnu.org; Tue, 10 Apr 2018 08:08:33 -0400 Received: by mail-wr0-x244.google.com with SMTP id d19so8644014wre.1 for ; Tue, 10 Apr 2018 05:08:33 -0700 (PDT) Received: from Nikki.cbg.collabora.co.uk (bakora.collabora.co.uk. [46.17.161.148]) by smtp.googlemail.com with ESMTPSA id j126sm943167wmb.33.2018.04.10.05.08.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 Apr 2018 05:08:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=RJpCttqCwknC/Sktnt5KpsjGNFMZLU4fbZ7k0GX6qWE=; b=UE1cS3/6wa8dwt0LRSNxi2Ot8mLrg+peDif6gFoDU6heyAuByBARIBWQSqLUGmT1G7 bEoCnADhk0TyOosjHnegJJtbA2D5uT/rw9CYKrgMZd53fpskJAFnspMJmjUrhuzEqlaA KgNaYvrkcdMNbc/mYIFacDz4MTOfi4mEjU3ckFEQwI3LeSmw12s1qDqfabaZQxJBWE7Q j5PsG+gegM7DBKBYHhp89vpEb7bCGu2tA6pNXBw3s3BsQDB3KYNvlhQysoba9+IkEQn2 j7hLTe9ks0TH5EOoGSELVPIO6/c2gtIZbmmhPMZm/RZlSq6dA2RRHtEScHfT82Kmf5x8 +moQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=RJpCttqCwknC/Sktnt5KpsjGNFMZLU4fbZ7k0GX6qWE=; b=QpT7gMhK9RJXlPfOZh4FTL0F5X9I2fgS9CXj429vojxG+O6NpCdYjImQdCd4OTurGa +GbkZZP8CxaeVaDVEfhcw99YF5n35XMbUd0AbdbWl28Uoz0cN/fHak+gT+2QcB+VXcBx M/0sJ0tmBnWwJCGjGN5ar+9EFUn1asz0fXzE2IaRp+UhHdjwDYLMr+FyXSCnPIVKGGNJ jV5KTx7yll6vlUPpiq9NPBL2QpViTjiKhnu2mPgVattUD0gEu4MOWegF9c2wxyrFUHoO 9Rx0icT1OgztbUmJUdYJi+g9sgLeEoY6dNHar3+q6lb+bIlOX2x/brL0oa6UIdWAG89S 4Vuw== X-Gm-Message-State: ALQs6tB3RFhySfUWf8LF579QgUiBXDxQAA5MX02N2/S68f9NvwW5u7rl hMdglpc3q41L61dCY55LvlQMTg== X-Google-Smtp-Source: AIpwx48kuV7pJHWBXKEMgC9xF5Dq0cYIBWmuWqod3c9JIDvyGExsTLkbT+ren7vJLnsZmO8N/Dxh9g== X-Received: by 10.223.225.71 with SMTP id f7mr105092wri.172.1523362112677; Tue, 10 Apr 2018 05:08:32 -0700 (PDT) From: Elie Tournier To: qemu-devel@nongnu.org Date: Tue, 10 Apr 2018 13:02:21 +0100 Message-Id: <20180410120222.31845-2-tournier.elie@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180410120222.31845-1-tournier.elie@gmail.com> References: <20180410120222.31845-1-tournier.elie@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::244 Subject: [Qemu-devel] [PATCH v2 1/2] qapi: Parameter gl of DisplayType now accept an enum X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pbonzini@redhat.com, Elie Tournier , kraxel@redhat.com, Elie Tournier Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Elie Tournier --- qapi/ui.json | 21 ++++++++++++++++++++- vl.c | 10 +++++----- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/qapi/ui.json b/qapi/ui.json index 5d01ad4304..c8005867e5 100644 --- a/qapi/ui.json +++ b/qapi/ui.json @@ -1019,6 +1019,25 @@ { 'struct' : 'DisplayGTK', 'data' : { '*grab-on-hover' : 'bool' } } =20 + ## + # @DisplayGLMode: + # + # Display OpenGL mode. + # + # 'off' Disable OpenGL (default). + # 'on' Use OpenGL, pick context type automatically. + # Would better be named 'auto' but is called 'on' for backward + # compatibility with bool type. + # 'core' Use OpenGL with Core (desktop) Context. + # 'es' Use OpenGL with ES (embedded systems) Context. + # + # Since: 2.13 + # + ## + { 'enum' : 'DisplayGLMode', + 'data' : [ 'off', 'on', 'core', 'es' ] } + + ## # @DisplayType: # @@ -1048,7 +1067,7 @@ 'base' : { 'type' : 'DisplayType', '*full-screen' : 'bool', '*window-close' : 'bool', - '*gl' : 'bool' }, + '*gl' : 'DisplayGLMode' }, 'discriminator' : 'type', 'data' : { 'default' : 'DisplayNoOpts', 'none' : 'DisplayNoOpts', diff --git a/vl.c b/vl.c index fce1fd12d8..7809a15caf 100644 --- a/vl.c +++ b/vl.c @@ -2142,9 +2142,9 @@ static void parse_display(const char *p) opts =3D nextopt; dpy.has_gl =3D true; if (strstart(opts, "on", &nextopt)) { - dpy.gl =3D true; + dpy.gl =3D DISPLAYGL_MODE_ON; } else if (strstart(opts, "off", &nextopt)) { - dpy.gl =3D false; + dpy.gl =3D DISPLAYGL_MODE_OFF; } else { goto invalid_sdl_args; } @@ -2185,9 +2185,9 @@ static void parse_display(const char *p) opts =3D nextopt; dpy.has_gl =3D true; if (strstart(opts, "on", &nextopt)) { - dpy.gl =3D true; + dpy.gl =3D DISPLAYGL_MODE_ON; } else if (strstart(opts, "off", &nextopt)) { - dpy.gl =3D false; + dpy.gl =3D DISPLAYGL_MODE_OFF; } else { goto invalid_gtk_args; } @@ -4343,7 +4343,7 @@ int main(int argc, char **argv, char **envp) qemu_display_early_init(&dpy); qemu_console_early_init(); =20 - if (dpy.has_gl && dpy.gl && display_opengl =3D=3D 0) { + if (dpy.has_gl && !dpy.gl =3D=3D DISPLAYGL_MODE_OFF && display_opengl = =3D=3D 0) { #if defined(CONFIG_OPENGL) error_report("OpenGL is not supported by the display"); #else --=20 2.17.0 From nobody Tue Apr 30 04:28:47 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1523362298316789.8467846503386; Tue, 10 Apr 2018 05:11:38 -0700 (PDT) Received: from localhost ([::1]:40198 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f5s7Y-00046q-6W for importer@patchew.org; Tue, 10 Apr 2018 08:11:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f5s4o-0001tq-NC for qemu-devel@nongnu.org; Tue, 10 Apr 2018 08:08:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f5s4n-0004eh-IE for qemu-devel@nongnu.org; Tue, 10 Apr 2018 08:08:42 -0400 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:53530) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f5s4n-0004do-BA for qemu-devel@nongnu.org; Tue, 10 Apr 2018 08:08:41 -0400 Received: by mail-wm0-x244.google.com with SMTP id 66so19343434wmd.3 for ; Tue, 10 Apr 2018 05:08:41 -0700 (PDT) Received: from Nikki.cbg.collabora.co.uk (bakora.collabora.co.uk. [46.17.161.148]) by smtp.googlemail.com with ESMTPSA id j126sm943167wmb.33.2018.04.10.05.08.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 10 Apr 2018 05:08:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=LQhbaawqWMxTf83JNTxo2fa5MpYPt5arfD194Nqurks=; b=txhPTWq3KxnjJFa3itb6+rYaNPPE8RcfPib3+3Ya5DHCvKa2ubrOFth0assBZkure9 T2jkaOVMjZw1OosVW3v9UVK4zD46K5nBOGrB7C07kpa32PJr4iZsoPHJ5LUx37cKSzY1 f9Q47Rs4nNXfvEPsinnTnqdVN/VNUzwMzdHtlFemVN609T/2Zotg9MD8FgyQy8cwtZUI 2bcc00/C/KddAsEkYRPD3DRs1iY4u7LE1TI3CSA+QeowNr6eYoQ/RgZgt7nh4+BnIujI VCXtEj5EtPx5X3Z6wlz/X4MvGR7/mLvoHh0YgAUZfo05tt77xkAalKVv8L7qN1UcSWHS E0HQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=LQhbaawqWMxTf83JNTxo2fa5MpYPt5arfD194Nqurks=; b=FEDyr3GusMepyCagIiPtYEzFcdCPZMPAC94eNmw/zMpm6YYQ+G9wZmF7Ortp+OoNfg x8gN3Q4LVpRtVUomYvdmVBYEZ7deOgM/H4AwfxRShPNtDwzA7kNfeFZ2cgOzM1kNXbPW V4IFR3soLUdePIVhqxGxElitJaqHFRu9YMNc3suBuOFWwawLi/BqKhWNBfkQpS0zmnto J6UqkwVoVgaliY2kDQqOCLydx+k8Q79bO1zPa8r7ifMWo2SaacBfKrCLM+d9gMoausWQ U1fy9kIZVi/BXVk4PqL/n1cFtgRbhsO/GIG1F8Qh0BbJLDQEZmR/K/1zol8n+GZUQwnf mq2g== X-Gm-Message-State: ALQs6tDHxNrXxe3xDBDC8ia+YEVB4JZ110xPned8kOtqFlMeOf0BQ44a VGJ54Oqi60df37Y3exBkKiraYQ== X-Google-Smtp-Source: AIpwx4/bEBmhMbQYYGz43Y02o5RrfdjKZMXFQ2VjRTP5pt+bf8CN3usi/UtvPucOD9BRRR/ImgqtYg== X-Received: by 10.28.19.13 with SMTP id 13mr1594679wmt.89.1523362120088; Tue, 10 Apr 2018 05:08:40 -0700 (PDT) From: Elie Tournier To: qemu-devel@nongnu.org Date: Tue, 10 Apr 2018 13:02:22 +0100 Message-Id: <20180410120222.31845-3-tournier.elie@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180410120222.31845-1-tournier.elie@gmail.com> References: <20180410120222.31845-1-tournier.elie@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::244 Subject: [Qemu-devel] [PATCH v2 2/2] sdl: Allow OpenGL ES context creation X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pbonzini@redhat.com, Elie Tournier , kraxel@redhat.com, Elie Tournier Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Elie Tournier --- include/ui/sdl2.h | 1 + qemu-options.hx | 2 +- ui/sdl2-gl.c | 17 +++++++++++++++-- ui/sdl2.c | 1 + vl.c | 4 ++++ 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/include/ui/sdl2.h b/include/ui/sdl2.h index 51084e6320..8495795e48 100644 --- a/include/ui/sdl2.h +++ b/include/ui/sdl2.h @@ -22,6 +22,7 @@ struct sdl2_console { int x, y, w, h; int hidden; int opengl; + DisplayGLMode gl_mode; int updates; int idle_counter; int ignore_hotkeys; diff --git a/qemu-options.hx b/qemu-options.hx index ca4e412f2f..333dd1f1c8 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -1240,7 +1240,7 @@ ETEXI =20 DEF("display", HAS_ARG, QEMU_OPTION_display, "-display sdl[,frame=3Don|off][,alt_grab=3Don|off][,ctrl_grab=3Don|off= ]\n" - " [,window_close=3Don|off][,gl=3Don|off]\n" + " [,window_close=3Don|off][,gl=3Don|core|es|off]\n" "-display gtk[,grab_on_hover=3Don|off][,gl=3Don|off]|\n" "-display vnc=3D[,]\n" "-display curses\n" diff --git a/ui/sdl2-gl.c b/ui/sdl2-gl.c index c3683e6b65..4755314afe 100644 --- a/ui/sdl2-gl.c +++ b/ui/sdl2-gl.c @@ -140,12 +140,25 @@ QEMUGLContext sdl2_gl_create_context(DisplayChangeLis= tener *dcl, SDL_GL_MakeCurrent(scon->real_window, scon->winctx); =20 SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 1); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, - SDL_GL_CONTEXT_PROFILE_CORE); + if (scon->gl_mode =3D=3D DISPLAYGL_MODE_ON || scon->gl_mode =3D=3D DI= SPLAYGL_MODE_CORE) + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, + SDL_GL_CONTEXT_PROFILE_CORE); + else if (scon->gl_mode =3D=3D DISPLAYGL_MODE_ES) + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, + SDL_GL_CONTEXT_PROFILE_ES); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, params->major_ver); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, params->minor_ver); =20 ctx =3D SDL_GL_CreateContext(scon->real_window); + + /* If SDL fail to create a GL context and we use the "on" flag, + * then try to fallback to GLES. + */ + if (!ctx && scon->gl_mode =3D=3D DISPLAYGL_MODE_ON) { + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, + SDL_GL_CONTEXT_PROFILE_ES); + ctx =3D SDL_GL_CreateContext(scon->real_window); + } return (QEMUGLContext)ctx; } =20 diff --git a/ui/sdl2.c b/ui/sdl2.c index 83b917fa37..29bf8e36ad 100644 --- a/ui/sdl2.c +++ b/ui/sdl2.c @@ -815,6 +815,7 @@ static void sdl2_display_init(DisplayState *ds, Display= Options *o) sdl2_console[i].idx =3D i; #ifdef CONFIG_OPENGL sdl2_console[i].opengl =3D display_opengl; + sdl2_console[i].gl_mode =3D o->gl; sdl2_console[i].dcl.ops =3D display_opengl ? &dcl_gl_ops : &dcl_2d= _ops; #else sdl2_console[i].opengl =3D 0; diff --git a/vl.c b/vl.c index 7809a15caf..5694c23742 100644 --- a/vl.c +++ b/vl.c @@ -2143,6 +2143,10 @@ static void parse_display(const char *p) dpy.has_gl =3D true; if (strstart(opts, "on", &nextopt)) { dpy.gl =3D DISPLAYGL_MODE_ON; + } else if (strstart(opts, "core", &nextopt)) { + dpy.gl =3D DISPLAYGL_MODE_CORE; + } else if (strstart(opts, "es", &nextopt)) { + dpy.gl =3D DISPLAYGL_MODE_ES; } else if (strstart(opts, "off", &nextopt)) { dpy.gl =3D DISPLAYGL_MODE_OFF; } else { --=20 2.17.0