swung0x48
3a289222af
[Docs] (MobileVA): plan a vendor-agnostic VA-API driver on Android MediaCodec, H.264 first
2026-10-03 23:46:13 -04:00
swung0x48
18a5dba0e4
[Docs] (Anland): Chrome decodes video in hardware through the YUV shared images, with probes to check it
2026-10-03 22:46:01 -04:00
swung0x48
77c604061e
[Docs] (Anland): glxgears is fixed-function, so it measures presentation only
2026-10-03 07:53:11 -04:00
swung0x48
af2b9f4c1c
[Docs] (Anland): root cause of the X11 stale-region issue
2026-10-03 04:36:24 -04:00
swung0x48
b0dad54cf1
[Docs] (Anland): device numbers and the open stale-region issue for X11 on the GPU
2026-10-03 03:20:12 -04:00
swung0x48
9e7305b885
[Docs] (Anland): plan and device scripts for X11 apps on the GPU
2026-10-03 01:51:24 -04:00
swung0x48
b1405e17ad
[Docs] (Anland): the desktop starts from the app and idles while hidden, with no manual bring-up
2026-10-02 22:46:04 -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
82d96a63c9
[Docs] (Anland): runbook and skill for bringing up MobileGL with anland and KDE Plasma
2026-10-02 10:31:35 -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
ec084959fa
[Docs] (Anland): record the Magma bring-up to Espryt parity
2026-10-02 06:36:20 -04:00
swung0x48
75e1da4d1b
[Docs] (Anland): record the lock-screen corruption root cause
2026-10-02 05:07:59 -04:00
swung0x48
335637af38
[Docs] (Anland): record the GLX, Chrome and server-config fixes
2026-10-02 03:09:18 -04:00
swung0x48
4236b42a57
[Fix] (Server+Transpiler): configure the server once per process, and enable blend_func_extended for index-1 outputs
2026-10-02 03:09:17 -04:00
swung0x48
ce11c9accd
[Docs] (Anland): record the Chrome/dma-buf feedback fix
2026-10-02 01:45:03 -04:00
swung0x48
7bb9d9829f
[Docs] (Anland): record the Plasma desktop milestone and the remaining issues
2026-10-02 01:38:57 -04:00
swung0x48
d5acece005
[Docs] (Anland): record the Plasma bring-up state after the P14 server-state fixes
2026-10-02 00:04:01 -04:00
swung0x48
cbb87b968a
[Docs] (Anland): drop the stale-glslang note and record d554c87c and the landed tooling
2026-10-01 23:36:27 -04:00
swung0x48
d554c87c45
[Fix] (Loader+Texture): tolerate drivers without EXT swap-with-damage, and pair stencil-only storage correctly
...
- eglSwapBuffersWithDamageEXT is an extension entry point that Android's
framework libEGL does not export through dlsym; requiring it was a
bring-up FATAL on TB321FU. Resolve EXT, fall back to the KHR spelling
(same function, interchangeable signature), then to plain
eglSwapBuffers (a zero-rectangle damage call is defined to be exactly
that). The GLES dlsym fallback gains a self-reference guard for
MobileGL installed under a GLES soname, where dlsym would otherwise
hand the backend the frontend's own entry points and recurse forever.
- NormalizePixelFormat maps GL_STENCIL_INDEX8/GL_STENCIL_INDEX to
GL_STENCIL_INDEX/GL_UNSIGNED_BYTE instead of falling through to
RGBA/UBYTE, which no driver can pair with stencil-only storage.
- Tests pin the EXT->KHR->none preference order and the stencil pair.
- The anland handoff is rewritten to the post-P14 landed state: device
evidence (win-smoke green screen, Konsole on screen, eglinfo/glxinfo),
the remote-only recovery procedure, and the known gaps (Plasma session
bring-up, cursor scale, the no-CPU-blit requirement, resize/surface
loss, AVC audit).
2026-10-01 23:16:33 -04:00
swung0x48
6946ff3a5c
[Docs] (Anland): refresh the handoff to the post-P14 landed state
...
The document still described the state before the state-ownership work
landed: it called the unified server design unfinished, listed the
KernelSU grant as unsolved, said the directory bind had not taken effect,
and presented MobileGLAppsService plus the per-app fork worker as pending
drafts. None of that is true now.
Rewritten against the current tree and the device:
- header: architecture landed per the user's correction, acceptance still
open; the rejected fork-worker/AppsService path is removed and the
unified server lives in the MobileGL library (design 11-state-ownership,
commits d52c031c / 4ed1c9ce / 5c6399e2 / ff212061 / 5a0f13fd , plus the
landed 6fb880cd / ebc552a0 that used to be listed as uncommitted)
- MobileGL: HEAD moved to 5a0f13fd; the state-ownership section now records
what S1-S6 landed and the debts that remain (process-level unit shadows,
g_backendContextGeneration, per-record ContextSlot, the glIsBuffer probe,
the window half of pbuffer->window)
- anland: 2ffa1f5 and 33e496c pushed; the draft inventory is now a landed
inventory plus the three uncommitted KWin-acceptance fixes
- device: KernelSU grant resolved (reinstall changed the uid to 10270), the
clone restarted with the directory bind effective, the 5a0f13fd APK
serving @anland-mobilegl with six completed client sessions, and the
client library installed with a stale build stamp
- new: concurrency warning (parallel sessions have overwritten the dist and
the source tar), the current desktop-session.service failure state, and a
rewritten continuation order
Verified: doc citations resolve (scripts/check_doc_citations.py), device
facts checked against HA27Q3LQ at refresh time.
2026-10-01 20:41:54 -04:00
swung0x48
4156ca6e36
[Docs] (Anland): hand off unified runtime work and record corrected state ownership requirements
2026-10-01 13:18:23 -04:00
swung0x48
7308668488
[Docs] (Anland): kgsl-as-server.md - read with the kernel as the server, routes A and B are about who owns the buffer (6.x + Mesa is A, 5.x is B), plus the split-level analogy to virtio-gpu native context vs virgl / venus; linked from the README
2026-09-30 13:00:11 -04:00
swung0x48
134791b4b9
[Docs] (Anland): compare today's container Mesa (freedreno / turnip over kgsl) with routes A and B - it is route A's no-change dma-buf tier with the renderer in the app process, Anland's dma-buf ingress was shaped around it, and 5.x's private protocol sat between A and B
2026-09-30 12:45:16 -04:00
swung0x48
c24926cafe
[Docs] (Anland): add route B - Anland hands the window's Surface to the MobileGL server (the FCL shape: SC mode leaves the parent Surface's queue free, waylandbridge itself receives it over binder), with its MobileGL items B1-B4, the Anland extension, its limits, and the phasing reordered around it
2026-09-30 12:24:24 -04:00
swung0x48
c5fa722be7
[Docs] (Anland): correct the window model - a toplevel attaches on demand to at most one Android window and several can be attached at once (popups and subsurfaces composite into the parent); P12 does not fit because the Android window and its input belong to Anland, not because of the window count
2026-09-30 12:17:56 -04:00
swung0x48
b7aa8d2011
[Docs] (Anland): research note - what MobileGL and Anland would each need for MobileGL to render Anland's Linux apps (glibc split client in the container, bionic render server, native AHB ingress into waylandbridge), with the two source-audit reports, their briefs and the notes index entry
2026-09-30 11:57:57 -04:00
swung0x48
378020adf3
[Fix] (MG_Remote, P11 T0): the T0 POST also checks what the CPU writes through the held lock after the import and its first GPU use, in both directions - Mali-G1-Ultra passed the old single round (the import cleans the CPU cache) while its GPU saw 0/1024 post-import words, so T0 was granted and create-indirect-in-world-align1024 x Magma lost every Flywheel object on inproc/spawn (0.867/0.848); it now fails there and runs T2 (0.999984), and the Redmi passes both rounds and keeps T0
2026-09-30 10:21:46 -04:00
swung0x48
648800a2da
[Docs] (P8): close the phase - ruling ID-P8-19 (the exit device check and the P12 cross-host rerun), the P8 README and PLAN, the roadmap row and header, MEASUREMENTS row 19, the status page and the last debt
2026-09-30 08:25:38 -04:00
swung0x48
b4bee9dd38
[Docs] (P8): CONTRACT-P8 (the rules P8 landed, each with its code anchor and its test), rulings ID-P8-14..18 (MD + MF and the create-indirect fixture's alignment, SE, SV, the dev merge, the wave 2 integration gate) and the debts wave 2 hands on
2026-09-30 07:55:50 -04:00
swung0x48
494305381e
[Merge] (P8): integrate wave 2 package MF - the push flush ladder gets dev's Adreno 830 queued-ring-copy guard (FlushPendingRangesFrom, create-instancing x Espryt x monolith 0.870 -> 0.99998 on the Redmi), and both G5 scripts pin the two reviewed ladder bodies under ID-P8-14
2026-09-30 07:12:50 -04:00
swung0x48
fb106a682e
[Docs] (P8-MF): the package note - the push-ladder mirror of dev f973008c, create-instancing Espryt monolith 0.870 -> 0.99998 on the Redmi with spawn unchanged, why spawn was unaffected (the same two partial maps behind queued ring copies, the copy already submitted by the server's intervening whole-buffer maps), the red-onces and the gate
2026-09-30 07:09:28 -04:00
swung0x48
c8c4397475
[Merge] (P8): integrate wave 2 package SV - Magma's 3D native mip blit uses one layer, the depth/stencil mip decline gets its tally row, 1D depth mips decline by name, and the wire arm issues glDispatchComputeIndirect natively
...
# Conflicts:
# MobileGL/MG_IntegrationTest/CMakeLists.txt
2026-09-30 06:11:04 -04:00
swung0x48
377d90d9f1
[Merge] (P8): integrate wave 2 package SE - the spawn/tcp default framebuffer publishes its surface to the client, the CPU mip arm declines on a driver-written base, D's case 3 runs on the Espryt split arms, the unmigrated-emulation name list is linted against its call sites, and the P8 notes' citations point at their content again
2026-09-30 05:24:11 -04:00
swung0x48
4cfb29a553
[Docs] (P8-SV): the note's gate table (G1 0/0, wire-declines 61/66, split_coverage, every lane, retrace 230/236) and the dirty-surface scan finding
2026-09-30 05:02:37 -04:00
swung0x48
51e95c9260
[Docs] (P8-SE): the note's gate and retrace readings
2026-09-30 04:47:27 -04:00
swung0x48
edcb9328e2
[Docs] (P8-SE): cite the integration CMakeLists by path - the bare basename resolves to the top-level file
2026-09-30 03:55:20 -04:00
swung0x48
e61060fbdf
[Docs] (P8-SE): the package note, and the P8 package notes' line citations re-anchored by content at HEAD (A 14, B 29, C 10, D 12, E 18 plus the copy-image-shadow-mirror line, F 4)
2026-09-30 03:55:01 -04:00
swung0x48
394d255487
[Docs] (P8-SV): the package note - the four items with their before/after, the design, the gates, ten red-once rows, the monolith observation and what was found but not fixed
2026-09-30 03:45:40 -04:00
swung0x48
307267c188
[Docs] (P8): the monolith defect count is 12 (13 reports, one duplicate between C and D), 9 of them left to P13, not 14 and 11
2026-09-30 03:24:47 -04:00
swung0x48
cbbaf77f6d
[Docs] (P8): wave 1 integrated - rulings ID-P8-5..13 (the survey, packages A-F, the integration gate, the wave 2 scope and the monolith defects left to P13), the survey note, open questions 9/11/15 answered, the debts and the P8 contract amendments, the P8 README table, PLAN-P8 wave 2 and the status page
2026-09-30 03:09:09 -04:00
swung0x48
39cd8fb73b
[Merge] (P8): integrate package E - a texture readback the Espryt driver refuses is answered from the split server's staged store, which now follows glCopyImageSubData (FollowCopy, client-box merge, sticky driver-written mark, named decline texture-readback-store-declined); CopyImageStoreReadbackScenario on both backends x every arm plus the extent-scoped StoreRead knob; the dead CopyImageSubData+RENDERBUFFER latch goes (census 79 -> 78)
2026-09-30 02:17:51 -04:00
swung0x48
92eab9f3b7
[Merge] (P8): integrate package D - the Magma wire arm issues glDraw*Indirect / glMultiDraw*Indirect[Count] natively from the wire store (vkCmdDraw*Indirect[Count]) instead of a CPU expansion behind a GPU-idle wait, with an INDIRECT_COMMAND_READ barrier once per shader write; windr[] PipeStats counters and WireIndirectDrawScenario on both backends x every arm
2026-09-30 01:28:20 -04:00
swung0x48
9441071567
[Merge] (P8): integrate package C - the Espryt split server refreshes its staged copy of a buffer a shader wrote before a CPU reader consumes it (storage/atomic/buffer-image marks, XFB captures into the copy; restart rewrite, multi-draw rebase, *IndirectCount, CPU-fed indirect fields, XFB scatter and fp64 narrowing read through SplitHostBytesForCpuRead); GpuWrittenDrawInputScenario (12 cases) on the Espryt split arms
2026-09-30 00:45:16 -04:00
swung0x48
2f530ad8a2
[Merge] (P8): integrate package B - Espryt glGenerateMipmap on the server: the record's generated window (BASE/MAX clip, B1) and RGB16F/RGB32F natively or on the server's CPU from the driver's level (B2), retiring both split generate-mipmap names; GenerateMipmapServerScenario on both backends x monolith/Split/Spawn/Tcp plus the forced-CPU arm
2026-09-30 00:01:29 -04:00
swung0x48
c00f5eabae
[Docs] (P8-E): the note's gate and retrace readings and two residuals (the extent-scoped tcp knob, the ERROR line before a store answer)
2026-09-29 23:51:49 -04:00
swung0x48
8133cd52ae
[Merge] (P8): integrate package A - register the monolith-only cases on split/spawn/tcp (P8Coverage.cmake, five server-knob tcp supervisors), gate them with split_coverage.py and its exemption table, pin the tcp supervisor's Vulkan env
2026-09-29 23:37:12 -04:00
swung0x48
06f28b0a1b
[Docs] (P8-A): the note says what the census measured about the audit's 396 and DoublePrecision on tcp, and the knob-port comment names the split/verify one-port overlap
2026-09-29 23:18:08 -04:00
swung0x48
b9feb9d7be
[Docs] (P8-B): the package note - the generated window and the server CPU arm, the coverage matrix, seven red-onces and monolith defects M1-M3 recorded for dev
2026-09-29 23:16:05 -04:00
swung0x48
e815ce8d33
[Docs] (P8-C): the package note - readers and writers of the server's staged copy, the twelve GPU-written draw-input cases, each red-once, the retrace subset and the five monolith defects recorded for dev
2026-09-29 22:53:18 -04:00
swung0x48
00d6c2480e
[Docs] (P8-E): the package note - the split read never touched a shadow, the store route and FollowCopy, the red-once table, the monolith defect for dev
2026-09-29 22:43:02 -04:00