2026-05-29 11:01:25 +01:00
2026-01-01 12:54:34 +00:00
2026-05-28 11:31:16 +08:00
2026-05-07 17:46:43 +01:00
2026-01-01 12:54:34 +00:00
2026-06-04 08:54:03 +02:00
2026-05-26 21:57:20 -07:00
2026-01-01 12:54:34 +00:00
2026-05-28 13:07:32 +08:00
2026-01-01 12:54:34 +00:00
2026-05-07 17:46:43 +01:00
2026-01-01 12:54:34 +00:00
2026-06-04 08:54:03 +02:00
2026-01-01 12:54:34 +00:00
2026-01-01 12:54:34 +00:00
2026-01-18 21:59:38 +01:00
2026-01-01 12:54:34 +00:00
2026-01-01 12:54:34 +00:00
2026-01-01 12:54:34 +00:00
2026-04-29 22:45:51 -07:00
2026-05-28 12:59:55 +08:00
2026-01-01 12:54:34 +00:00
2026-01-01 12:54:34 +00:00
2026-01-01 12:54:34 +00:00
2026-01-01 12:54:34 +00:00
2026-01-01 12:54:34 +00:00
2026-05-07 17:46:43 +01:00

emacs-gpu

GNU Emacs with a GPU-accelerated display backend.

On macOS it renders with native Apple Metal: text goes through a GPU glyph atlas, images and inline video are textures, and the whole frame is composited by the GPU instead of CoreGraphics. The output is pixel-accurate against the stock Cocoa backend.

OpenGL support for GNU/Linux and Windows is planned but not implemented yet. The drawing logic is already platform-neutral (src/gfxterm.c) behind a small driver interface (src/gfxdrv.h); an OpenGL driver only needs to implement that interface (src/glterm.c is the documented skeleton). Contributions welcome.

Status: experimental, under active development.

Note: I am not answering issues for now. Feel free to open them as a public record (they will be read eventually), but do not expect a reply at this stage.

Building on macOS

Requires Xcode (or the Command Line Tools) and the usual Emacs build dependencies (brew install autoconf automake gnutls texinfo pkg-config).

./autogen.sh

SDK=$(xcrun --sdk macosx --show-sdk-path)
CC="xcrun clang" OBJC="xcrun clang" \
CFLAGS="-isysroot $SDK" CPPFLAGS="-isysroot $SDK" OBJCFLAGS="-isysroot $SDK" \
./configure --with-ns --with-mtl

make -j$(sysctl -n hw.ncpu)

The binary is src/emacs (or install the app bundle from nextstep/).

Enabling the GPU backend

Emacs starts with the regular Cocoa backend; switch a frame to Metal with:

(add-to-list 'load-path "/path/to/emacs-gpu/lisp")
(require 'mtl)
(mtl-enable)

Extras once enabled:

(mtl-video-insert "video.mp4" 480 270 t)  ; inline video, follows scrolling
(mtl-animations t)                        ; GPU cursor effects (experimental)
(mtl-draw-stats)                          ; renderer counters

How it works

redisplay engine (xdisp.c, untouched)
        ↓
src/gfxterm.c   platform-neutral drawing policy
        ↓
src/gfxdrv.h    driver interface (~25 ops)
        ↓
src/mtlterm.m   Metal driver: glyph atlas (CoreText → R8 texture),
                render cycle on a persistent texture, AVFoundation
                video through CVMetalTextureCache

License

GNU General Public License v3 or later, same as GNU Emacs.

S
Description
No description provided
Readme
1.5 GiB
Languages
Emacs Lisp 72.7%
C 21.4%
Objective-C 1%
M4 1%
C++ 0.6%
Other 2.3%