BZLZHH
b7a6e6c538
[Docs] (Anland): the D1100 + Mali, kernel 4.14 bring-up and its three fixes
2026-10-03 15:55:53 +08:00
BZLZHH
f44888ca01
[Fix] (Espryt): present through eglSwapBuffers when the driver refuses the damage entry point
...
A vendor EGL can export eglSwapBuffersWithDamageEXT and then answer EGL_FALSE on
a window surface without setting an error (measured on an Android 4.14 vendor
kernel with a Mali driver; the surface is current, the context is current, the
ANativeWindow reports its full extent, and the plain entry point presents the
same surface happily). Trusting that pointer kept the frame: the window's buffer
queue never saw a buffer, the compositor's own window stayed a solid colour on
screen, and every client of the session fell back to wl_shm because the
compositor could not sample what it could not present.
A refused damage swap now falls back to eglSwapBuffers and says so once. A
driver without the extension presents through the plain call as before.
2026-10-03 15:54:55 +08:00
BZLZHH
8245221755
[Fix] (Remote): name a shared image by extent and format when the kernel gives descriptors one identity
...
(st_dev, st_ino) is how an incoming dma-buf descriptor names the image it was
exported from, and it is the only identity the registry had. Some kernels do not
keep those apart: on a 4.14 vendor kernel every descriptor of every image reports
dev 12 ino 10658 with st_size 0, and /proc/self/fdinfo carries nothing else, so
the registry correctly detected the ambiguity and then refused every import -
which is every zero-copy window a compositor ever tries to sample, leaving the
whole stack on the wl_shm fallback.
The identity stays the kernel's to give. When it is ambiguous, the import's own
extent and format select among the live images exported under that identity, in
allocation order and each claimed once, which is the order a producer allocates
and hands them over in. Identify() takes the extent and the fourcc the import
record already carries; nothing else changes.
2026-10-03 15:54:55 +08:00
swung0x48
b64c2de3c8
[Docs] (Anland): point the reproduce guide at the anland fork
2026-10-02 22:26:24 -04:00
swung0x48
2b95a9697a
[Docs] (Anland): reproduce the MobileGL Plasma container setup from source
2026-10-02 22:26:11 -04:00
swung0x48
228bd24c67
[Fix] (Espryt): turn window buffer age on by default
2026-10-02 21:00:20 -04:00
swung0x48
c822a9fef7
[Fix] (Espryt): copy only the damaged rectangles into shared images again
2026-10-02 21:00:10 -04:00
swung0x48
815217cc07
[Fix] (Espryt): turn the scissor off around backend copies by what the driver has, not another session's render-state shadow
2026-10-02 20:57:18 -04:00
swung0x48
7a5b0755b3
[Docs] (Anland): install MobileGL as the container's system-wide vendor and document the fallback
2026-10-02 20:13:33 -04:00
swung0x48
3d69c37504
[Fix] (EGL): keep a process the vendor does not serve from opening its log
2026-10-02 20:07:15 -04:00
swung0x48
4f679d669d
[Fix] (EGL): answer client queries and proc lookups without bringing a session up
2026-10-02 20:03:45 -04:00
swung0x48
4095624f87
[Fix] (Client): step aside for processes that ask for software rendering
2026-10-02 19:57:49 -04:00
swung0x48
321e61ca0b
[Docs] (README): the target is OpenGL 4.6 Core, with the current modules and platforms
2026-10-02 19:53:29 -04:00
swung0x48
552dd3d39b
[Fix] (EGL): decline another backend's GBM device and ask X for a visual only on X displays
2026-10-02 19:49:32 -04:00
swung0x48
6c742eba8a
[Build] (Config): bump the version to 26.10
2026-10-02 19:43:47 -04:00
swung0x48
69e96f5b8d
[Feature] (Client): read a system config file and decline EGL/GLX/GBM when no server answers
2026-10-02 19:36:38 -04:00
swung0x48
d24abe9287
[Fix] (Espryt): make window buffer age opt-in
2026-10-02 18:34:23 -04:00
swung0x48
d6d75c9951
[Fix] (Espryt): copy whole frames into shared images
2026-10-02 17:38:55 -04:00
swung0x48
bb4e3e0ec6
[Fix] (Espryt): query buffer age only after a damage region is declared
2026-10-02 17:11:31 -04:00
swung0x48
233e2f8ced
[Fix] (Espryt): swap a pbuffer without damage rectangles
2026-10-02 16:27:16 -04:00
swung0x48
74919a3bc1
[Feature] (Present): buffer age and swap damage end to end on Espryt and Magma
2026-10-02 15:19:39 -04:00
swung0x48
7090e31dee
[Feature] (Damage): damage-region and buffer-age bookkeeping with host tests
2026-10-02 14:51:48 -04:00
swung0x48
5accb0985c
[Fix] (glslang): keep samplers of anonymous uniform structs out of the default uniform block, which made Adreno page-fault into device loss on Shadertoy
2026-10-02 14:20:36 -04:00
swung0x48
58685bc116
[Fix] (Server): wait out an apply thread that is busy in a GPU stall at Stop() instead of aborting every session
2026-10-02 13:54:26 -04:00
swung0x48
34090097a1
[Fix] (Client): make a readback on a lost device a no-op instead of a Fatal that kills the client
2026-10-02 13:43:51 -04:00
swung0x48
58c3d9bde5
[Fix] (P14): latch a lost GPU device per session on Magma and Espryt instead of aborting the whole server
2026-10-02 13:37:58 -04:00
swung0x48
d03fe4c9dd
[Fix] (Client): drop the late reply of a timed-out surface op instead of reading it as the next op's
2026-10-02 13:34:17 -04:00
swung0x48
239fc228fc
[Fix] (DirectVulkan): retype gl_FragCoord access chains to Private when the y-flip pass redirects them to its copy
2026-10-02 13:34:16 -04:00
swung0x48
8da082f805
[Fix] (State): start the clear colour at GL's (0, 0, 0, 0), not opaque black
2026-10-02 12:50:36 -04:00
swung0x48
258b946086
[Fix] (P12): publish the server window's extent from the display on every resize, at once, and let eglQuerySurface take it in
2026-10-02 12:03:52 -04:00
swung0x48
16b07cf4b5
[Fix] (DirectVulkan): build offscreen targets of a window-created renderer through AImageReader instead of a null headless entry point
2026-10-02 11:42:14 -04:00
swung0x48
51c37bcbc9
[Fix] (Sampler): convert sampler parameters set through the other scalar type
2026-10-02 11:22:00 -04:00
swung0x48
5a7b23f661
[Feature] (P12): suspend the on-screen session when the server window goes, resume it on the next, and republish a resized window's extent
2026-10-02 11:14:27 -04:00
swung0x48
15f9b27a42
[Fix] (P14): publish a cached sampler CSO into each share group that names it
2026-10-02 10:35:44 -04:00
swung0x48
82d96a63c9
[Docs] (Anland): runbook and skill for bringing up MobileGL with anland and KDE Plasma
2026-10-02 10:31:35 -04:00
swung0x48
7520e53b5e
[Feature] (SharedImage): GPU-side fences between sessions on Espryt and Magma, no CPU wait at present
2026-10-02 10:31:34 -04:00
swung0x48
b5cab44100
[Feature] (SharedImage): sync_file write/read fences per image, so sessions order their access without CPU waits
2026-10-02 09:40:12 -04:00
swung0x48
672261764e
[Fix] (SharedImage): allocate and import ARGB8888/XRGB8888 images so KWin's offscreen Quick views get buffers
2026-10-02 09:37:17 -04:00
swung0x48
0e314f645e
Remove a stray build log
2026-10-02 09:18:20 -04:00
swung0x48
350fc699a1
[Fix] (SharedImage): create dma-buf wl_buffers without create_immed, drain the ring before teardown ops, and decline Magma records after the renderer is gone
2026-10-02 09:18:05 -04:00
swung0x48
3d17e8c10b
[Feature] (SharedImage): zero-copy Wayland windows via linux-dmabuf, EGL dma-buf import, GBM backend, and Espryt/Magma AHB present and texture binding
2026-10-02 08:39:59 -04:00
swung0x48
38842985f8
[Feature] (SharedImage): server-allocated AHB images over a shared_image pipe verb, with dma-buf fds on the aux socket
2026-10-02 07:52:25 -04:00
swung0x48
e06aabe812
[Docs] (Anland): plan for zero-copy windows via server-allocated AHB dma-bufs
2026-10-02 07:34:45 -04:00
swung0x48
67a97065b8
[Fix] (DirectVulkan): transpose quarter-turn viewports and scissors, rebuild a resized pbuffer's target, and leave out-of-range default-framebuffer reads unfilled
2026-10-02 07:15:47 -04:00
swung0x48
ec084959fa
[Docs] (Anland): record the Magma bring-up to Espryt parity
2026-10-02 06:36:20 -04:00
swung0x48
4b388950e3
[Fix] (DirectVulkan): decline draws from storeless buffers and sample with defaults when a texture's sampler CSO is gone, as DirectGLES does
2026-10-02 06:33:53 -04:00
swung0x48
7e76a98d36
[Fix] (DirectVulkan): keep one renderer per session across its surfaces, follow bind_context to each context's surface, and keep the wire resource ops registered while any session lives
2026-10-02 06:24:13 -04:00
swung0x48
15dbe78ce6
[Fix] (DirectVulkan): give each served session its own renderer and Magma state
2026-10-02 05:52:38 -04:00
swung0x48
168808d1a7
[Fix] (DirectVulkan): advertise the GLSL 1.00-era ARB strings KWin gates on, and let a debug property pick the Android backend
2026-10-02 05:42:14 -04:00
swung0x48
75e1da4d1b
[Docs] (Anland): record the lock-screen corruption root cause
2026-10-02 05:07:59 -04:00