Received: (at submit) by debbugs.gnu.org; 27 Jan 2026 07:47:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 27 02:47:06 2026
Received: from localhost ([127.0.0.1]:57833 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vkdn0-0001w3-ET
for submit <at> debbugs.gnu.org; Tue, 27 Jan 2026 02:47:06 -0500
Received: from lists.gnu.org ([2001:470:142::17]:37578)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <arthur@HIDDEN>)
id 1vkdmv-0001vN-Ew
for submit <at> debbugs.gnu.org; Tue, 27 Jan 2026 02:47:04 -0500
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 <arthur@HIDDEN>)
id 1vkdmm-00087B-IJ
for bug-gnu-emacs@HIDDEN; Tue, 27 Jan 2026 02:46:53 -0500
Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.90_1) (envelope-from <arthur@HIDDEN>)
id 1vkdmi-0001t2-TC
for bug-gnu-emacs@HIDDEN; Tue, 27 Jan 2026 02:46:51 -0500
Received: by mail-ed1-x52d.google.com with SMTP id
4fb4d7f45d1cf-653780e9eb3so7526223a12.1
for <bug-gnu-emacs@HIDDEN>; Mon, 26 Jan 2026 23:46:47 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=aheymans-xyz.20230601.gappssmtp.com; s=20230601; t=1769500006; x=1770104806;
darn=gnu.org;
h=mime-version:message-id:date:from:subject:to:from:to:cc:subject
:date:message-id:reply-to;
bh=9sHkGoetYhghmL76o1pVpO0+J2E2G11D/l1wMdXQkeM=;
b=tMYbHxDBAmotvRPoXqpE3n5LwPmIKFgdg6MK2md5c9c+923o2UQFe4LZVXnEInuOh+
NMwLcPYU4StEo2aKH7QM9dnWihF6pGpegJt6R8O/rdo8oClKSZ23YFhZH7yUqx450p7s
OD+qYv9oPWhWFKbJ5Hrn55Gk+YhH7MNTvGVuJcZb6LlIYlaUEZc0VQdZkRdlbiRmUTfo
KO72ZxrxQlfzKMiTHq/serZRPxrBdT/QwPW56OVR9QvlPreBhjKuh+bhZgSxjJpRY7wU
6ECFhb7TQp9uQjMZbLZuaCNyNPxD/Glwp6Tqm6ZnbnjxnUiPrgfC0DW5GbF3+Ur+2paF
5aQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1769500006; x=1770104806;
h=mime-version:message-id:date:from:subject:to:x-gm-gg
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=9sHkGoetYhghmL76o1pVpO0+J2E2G11D/l1wMdXQkeM=;
b=sLNCNjMWEcvXZTZohv2g48/VyR44wb727SkkdjbPF8DCpjL0zwhNIrs6/xfVMkfeua
REvtR8S/0vIWL64bn/K9bG0YXuwW2Z42Nqj/aZHFm3nJvoiGXFCBJozU/wf3B2Fgb7Ld
8m5ImOukFupnQrKyxZtX4rmL4uCuBFh2c72m3Eg9lOpN0LT8xQQ5dRfTK4LEzMUmVLQI
PgPnBTh2iVFxwm1yXqL4zWI87A2O88W3ewBHwGLOKKsYjPlplAdUTVAD6DEmnDCXqhU+
fDFSpGkp24wRS7wDxCIkjGH99HHekhw8uplkDsknHD+pNrZWBZXvIcyYgWjTC8t3mmgr
IU9g==
X-Gm-Message-State: AOJu0Ywc0WorZ7boHYenBQAVHqaLgykrVeF3b9EmIz+vqrtnHALfxx9X
NH/N2QXBi7CBghJN32KS8zSe1lexODEZ8+mgvCpb35a7V75RysYHWiU+amen2ex5PEMjtMcDujY
7I1TuwE4=
X-Gm-Gg: AZuq6aL8mKnKazmpmzQ/DkiroeKFsu7n1W5V08HK6rOXQ/N0J4zEpwG5gfzOhxsiRfK
gWH9K632MnLWdQoTJyes/ke6dtamdn2G+AXrkGsBw5zTLtSDxLbPofvaS3S+orkIrf1XhSZTxLt
hK+HygZqhCnE3BM5RvXmg/ixFcpyOfcEzCSfh/3SgEU30rVOgVSljEYkfS+K/At2YbKtV2IX/Xl
jZtIXV3MPwePJjR3oS/fzkKkNxhgYBdkkrTbspEny6d98zXjjEp2gzbZApKIfz48cj4M7v3dERz
TmkLOcjn5ENQl0D9CsQr7iac7hRIaO4EGtUaktF6ORZrrdEDf2ZrbpZcukAHMVSOxK/gckATWgf
ssetDkCkrVVoQb2uyJXM/n5cVOjD/vDJ479/BxyxPqEKUeBolIsGlXPdYHhQ0pbD1vn08+VSnko
W1F38wv5aBSmog4D2Y68xlCw8cgO9l89O/mnSrbSOfxDINDxLvPSoJ2T4u1Sfj+XyxSJ7bA43ye
LWM3DBN2fM/
X-Received: by 2002:a17:907:9816:b0:b88:4102:8932 with SMTP id
a640c23a62f3a-b8dab348ba3mr66858166b.44.1769500005626;
Mon, 26 Jan 2026 23:46:45 -0800 (PST)
Received: from gmktec-k11 (228.243-245-81.adsl-dyn.isp.belgacom.be.
[81.245.243.228]) by smtp.gmail.com with ESMTPSA id
a640c23a62f3a-b8d89026200sm237660766b.14.2026.01.26.23.46.45
for <bug-gnu-emacs@HIDDEN>
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Mon, 26 Jan 2026 23:46:45 -0800 (PST)
To: bug-gnu-emacs@HIDDEN
Subject: [PATCH 0/6] Add Skia as alternative graphics backend for PGTK
From: Arthur Heymans <arthur@HIDDEN>
Date: Tue, 27 Jan 2026 08:40:25 +0100
Message-ID: <87a4xzy046.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
Received-SPF: pass client-ip=2a00:1450:4864:20::52d;
envelope-from=arthur@HIDDEN; helo=mail-ed1-x52d.google.com
X-Spam_score_int: -5
X-Spam_score: -0.6
X-Spam_bar: /
X-Spam_report: (-0.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
DKIM_VALID=-0.1, FROM_SUSPICIOUS_NTLD=0.499, FROM_SUSPICIOUS_NTLD_FP=0.843,
RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,
SPF_PASS=-0.001 autolearn=no autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 2.3 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: #+OPTIONS: html-postamble:nil H:5 num:nil ^:{} toc:nil
author:nil
email:nil tex:dvipng d:nil #+STARTUP: hidestars indent inlineimages
:PROPERTIES:
:reply-to: nil :attachment: ("~/src/emacs_Skia/patche [...]
Content analysis details: (2.3 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
-0.0 SPF_HELO_PASS SPF: HELO matches SPF record
1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail)
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [2001:470:142:0:0:0:0:17 listed in] [list.dnswl.org]
0.8 FROM_SUSPICIOUS_NTLD_FP From abused NTLD
0.5 FROM_SUSPICIOUS_NTLD From abused NTLD
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.5 (/)
#+OPTIONS: html-postamble:nil H:5 num:nil ^:{} toc:nil author:nil email:nil tex:dvipng d:nil
#+STARTUP: hidestars indent inlineimages
:PROPERTIES:
:reply-to: nil
:attachment: ("~/src/emacs_Skia/patches/0001-Add-Skia-C-wrapper-library.patch" "~/src/emacs_Skia/patches/0002-Add-with-skia-configure-option-and-build-system-supp.patch" "~/src/emacs_Skia/patches/0003-Add-Skia-type-definitions-and-declarations-to-header.patch" "~/src/emacs_Skia/patches/0004-Add-Skia-font-driver.patch" "~/src/emacs_Skia/patches/0005-Implement-Skia-rendering-for-PGTK.patch" "~/src/emacs_Skia/patches/0006-Document-with-skia-configure-option.patch")
:alternatives: (utf-8 html)
:END:
This patch series adds Skia as a GPU-accelerated rendering backend for
the PGTK build of Emacs. Skia is Google's 2D graphics library used in
Chrome and Android.
When configured with --with-skia, Emacs uses Skia for all drawing
operations instead of Cairo, providing GPU-accelerated rendering via
OpenGL through GtkGLArea.
The series is split into logical commits for easier review:
1. Skia C wrapper - standalone C API around Skia's C++ library
2. Build system - configure.ac and Makefile.in support
3. Header definitions - type definitions and declarations
4. Font driver - Skia font rendering with FreeType/HarfBuzz
5. Rendering implementation - all drawing primitives
6. Documentation - INSTALL and NEWS updates
Tested with both --with-pgtk (Cairo) and --with-pgtk --with-skia.
I've send the copyright assignement request.
Disclaimer: I did use an LLM to help with this work.
Arthur Heymans (6):
Add Skia C wrapper library
Add --with-skia configure option and build system support
Add Skia type definitions and declarations to headers
Add Skia font driver
Implement Skia rendering for PGTK
Document --with-skia configure option
INSTALL | 27 +
configure.ac | 191 +++-
etc/NEWS | 11 +-
src/Makefile.in | 27 +-
src/dispextern.h | 23 +-
src/font.c | 8 +-
src/font.h | 7 +
src/ftfont.h | 7 +
src/gtkutil.c | 19 +-
src/image.c | 255 ++++-
src/pgtkfns.c | 86 +-
src/pgtkterm.c | 2141 ++++++++++++++++++++++++++++++++++--
src/pgtkterm.h | 74 +-
src/skia/emacs_skia.cpp | 2271 +++++++++++++++++++++++++++++++++++++++
src/skia/emacs_skia.h | 650 +++++++++++
src/skiafont.c | 774 +++++++++++++
16 files changed, 6376 insertions(+), 195 deletions(-)
create mode 100644 src/skia/emacs_skia.cpp
create mode 100644 src/skia/emacs_skia.h
create mode 100644 src/skiafont.c
--
2.52.0
Arthur Heymans <arthur@HIDDEN>:bug-gnu-emacs@HIDDEN.
Full text available.bug-gnu-emacs@HIDDEN:bug#80271; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.