From nobody Sun May 5 02:56:52 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=quicinc.com ARC-Seal: i=1; a=rsa-sha256; t=1685628147; cv=none; d=zohomail.com; s=zohoarc; b=NbkaQ/d8Qb+TgzXplC6XZIy6tGpYU2vHgSjJRUFzjHXhnnTXMrij4r3oJ1CHhzT1WfFloKnbOHU7X6hB1FX3fboFKarQVUDKwiVKF/KRZlI9Igg3BPajgLxKE1hmxHjcAfA9lNKE2Jz8WTosdWA1zhc7oui9PW2gPFB6HHreAB4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685628147; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=po+r+BOyDl7w66v4xIHlopy5PSinGNJ6JR4ttVafKDQ=; b=bS9PLMkI2cwxDYdh6Gm84JlYTWDO9ZhtIpS6TgVMyUIbb/zs/jYkm4VNpzp3xvUZmjLyfre4E/Zb44F62VZ7txPsRLcna1LqFnX7yaltFQgDuwkpE3oKQzwwGMGzaDtrsXUgvcPkYUhstfPeSbpmb338ecRqdhUrWQsGBglIklI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1685628147605335.3570094053132; Thu, 1 Jun 2023 07:02:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q4is8-0005dn-7d; Thu, 01 Jun 2023 10:01:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q4is6-0005WT-QL for qemu-devel@nongnu.org; Thu, 01 Jun 2023 10:01:46 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q4irz-0003Dv-Ex for qemu-devel@nongnu.org; Thu, 01 Jun 2023 10:01:42 -0400 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 351B58BS022285; Thu, 1 Jun 2023 14:01:33 GMT Received: from nalasppmta02.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3qxdr9a1br-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 01 Jun 2023 14:01:31 +0000 Received: from nalasex01c.na.qualcomm.com (nalasex01c.na.qualcomm.com [10.47.97.35]) by NALASPPMTA02.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 351E1MPF005296 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 1 Jun 2023 14:01:22 GMT Received: from acaggian1-mac.qualcomm.com (10.80.80.8) by nalasex01c.na.qualcomm.com (10.47.97.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.42; Thu, 1 Jun 2023 07:01:21 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding : content-type; s=qcppdkim1; bh=po+r+BOyDl7w66v4xIHlopy5PSinGNJ6JR4ttVafKDQ=; b=ahtPDq0SXMtnP1tEfNnMsNHt/xHbHXkop4NMG0CU22j1AtVGBbxyTgHBGlStZt0+bek+ xw2F9b3dZJzsFdUxyAjsmoK7pgpzLCRbdhcETtDozl6wXC0gcna0y6i0QAV+qPr1CUqR j6XbE+lovzUEzVbvJKIB4DYXreBqPwvwko9Ay5gGVWVBai7LYVxgTI9/EwORCDuTQRfi ucmUsS1fn9aL0wKNGDObcwfdFO5yYlay4fsgJe8W0OafRbaaMrW1tdbISEGBjBiFgaZe Gg9mEm6wFoJqOpHdWJzJNFFrjAHhYXHYkrVNAKnyTnX1tJLmDApXcZ1MgQF00zv/8yPN AA== From: Antonio Caggiano To: CC: Gerd Hoffmann , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Subject: [PATCH] SDL: OpenGL 3 window context Date: Thu, 1 Jun 2023 16:00:19 +0200 Message-ID: <20230601140019.66013-1-quic_acaggian@quicinc.com> X-Mailer: git-send-email 2.40.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To nalasex01c.na.qualcomm.com (10.47.97.35) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: Q7bhUr9sliDa_tp0AyiGsLLy_nLB5UdQ X-Proofpoint-GUID: Q7bhUr9sliDa_tp0AyiGsLLy_nLB5UdQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.573,FMLib:17.11.176.26 definitions=2023-06-01_08,2023-05-31_03,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 mlxlogscore=823 suspectscore=0 malwarescore=0 spamscore=0 phishscore=0 lowpriorityscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2304280000 definitions=main-2306010123 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=205.220.180.131; envelope-from=quic_acaggian@quicinc.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @quicinc.com) X-ZM-MESSAGEID: 1685628174301100001 Content-Type: text/plain; charset="utf-8" SDL renderer creates an OpenGL 2.1 context while QEMU expects minimum OpenGL version 3.3 or ES 3.0. To fix this we create an OpenGL context directly, ignoring the SDL renderer when OpenGL is enabled. Signed-off-by: Antonio Caggiano --- ui/sdl2.c | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/ui/sdl2.c b/ui/sdl2.c index 9d703200bf..42512588b5 100644 --- a/ui/sdl2.c +++ b/ui/sdl2.c @@ -104,7 +104,24 @@ void sdl2_window_create(struct sdl2_console *scon) surface_width(scon->surface), surface_height(scon->surface), flags); + if (scon->opengl) { + /* Set the minimum version required by the texture blit shaders */ + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3); + + if (scon->opts->gl =3D=3D DISPLAYGL_MODE_ES) { + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, + SDL_GL_CONTEXT_PROFILE_ES); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); + } + + scon->winctx =3D SDL_GL_CreateContext(scon->real_window); + } else { + /* + * The SDL renderer is only used by sdl2 2D callbacks, when OpenGL= is + * disabled at configuration time + */ const char *driver =3D "opengl"; =20 if (scon->opts->gl =3D=3D DISPLAYGL_MODE_ES) { @@ -113,11 +130,8 @@ void sdl2_window_create(struct sdl2_console *scon) =20 SDL_SetHint(SDL_HINT_RENDER_DRIVER, driver); SDL_SetHint(SDL_HINT_RENDER_BATCHING, "1"); - } - scon->real_renderer =3D SDL_CreateRenderer(scon->real_window, -1, 0); =20 - if (scon->opengl) { - scon->winctx =3D SDL_GL_CreateContext(scon->real_window); + scon->real_renderer =3D SDL_CreateRenderer(scon->real_window, -1, = 0); } sdl_update_caption(scon); } @@ -128,10 +142,14 @@ void sdl2_window_destroy(struct sdl2_console *scon) return; } =20 - SDL_GL_DeleteContext(scon->winctx); - scon->winctx =3D NULL; - SDL_DestroyRenderer(scon->real_renderer); - scon->real_renderer =3D NULL; + if (scon->winctx) { + SDL_GL_DeleteContext(scon->winctx); + scon->winctx =3D NULL; + } + if (scon->real_renderer) { + SDL_DestroyRenderer(scon->real_renderer); + scon->real_renderer =3D NULL; + } SDL_DestroyWindow(scon->real_window); scon->real_window =3D NULL; } --=20 2.40.0