Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2077 commits
Select commit Hold shift + click to select a range
d4688d0
README: document MOBILEGL_ENABLE_LTO and FRAMES_IN_FLIGHT, link the u…
Swung0x48 Oct 9, 2026
e072176
Plugin manifest: add the relaxed-semantics title meta-data.
Swung0x48 Oct 9, 2026
0b536de
Plugin build: honour the MOBILEGL_BUILD_DISAGGREGATED env fallbacks.
Swung0x48 Oct 9, 2026
0650608
User guide: env fallback now read consistently.
Swung0x48 Oct 9, 2026
cee9178
Bench: bench_session stop restores the pinned clocks.
Swung0x48 Oct 9, 2026
e920189
Docs (P15): Espryt BSL depth-copy and attachment-shadow items measure…
Swung0x48 Oct 9, 2026
e70925d
Pipe: per-program global-constants key and frontend-written spans rep…
Swung0x48 Oct 9, 2026
dce02ae
Build: -Pmobilegl.androidApi=29 builds a separate API 29 library and …
Swung0x48 Oct 9, 2026
1accc7f
Docs (P15): API 29 vs API 26 A/B, native TLS gives no TLS saving in a…
Swung0x48 Oct 9, 2026
b48f55e
Docs (P15): egc row, global-constants key cuts EmitGlobalConstants 0.…
Swung0x48 Oct 10, 2026
d5ff64d
Docs (P15): per-context pipe dirty mask plan.
Swung0x48 Oct 10, 2026
a44a877
Docs (P15): dirty mask parked; C8 approved separately.
Swung0x48 Oct 10, 2026
e0b8053
Docs (P15): queue the present-wait Perfetto trace.
Swung0x48 Oct 10, 2026
4d36262
Docs (P15): Perfetto timeline rule.
Swung0x48 Oct 10, 2026
a759b4b
Docs (P15): present-wait analysis uses the existing traces.
Swung0x48 Oct 10, 2026
9a1d306
[Docs] (P15): present-wait timeline
Swung0x48 Oct 10, 2026
8ebb69d
[Fix] (Pipe): share-group clocks fire dirty bits 11-14 for sibling-co…
Swung0x48 Oct 10, 2026
0a206b0
[Docs] (P15): queue the pwait latency trace
Swung0x48 Oct 10, 2026
575be35
[Perf] (TLS): pGLContext and gPipeInputs become pointer slots
Swung0x48 Oct 10, 2026
f755032
[Perf] (TLS): applier lookup cache in one thread_local block
Swung0x48 Oct 10, 2026
b5f9ab5
[Perf] (TLS): inline Magma session and built-slot lookups
Swung0x48 Oct 10, 2026
3b01067
[Perf] (TLS): Espryt context serial and lookup cache share one thread…
Swung0x48 Oct 10, 2026
a6028ff
[Fix] (TLS): drop the context reference before clearing the slot at t…
Swung0x48 Oct 10, 2026
f66d31c
[Docs] (P15): TLS cut device A/B
Swung0x48 Oct 10, 2026
f4f2bec
[Perf] (Espryt): drain small partial writes as a whole-store orphan map
Swung0x48 Oct 10, 2026
add15f0
[Perf] (Magma): submit off-screen work ahead of the swapchain acquire…
Swung0x48 Oct 10, 2026
2175ee0
[Perf] (Espryt): flush once per frame before the window pass
Swung0x48 Oct 10, 2026
fa56e1c
[Test] (Espryt, Magma): WindowPassGateScenario
Swung0x48 Oct 10, 2026
71e442d
[Feat] (Magma): MOBILEGL_MAGMA_EXTRA_SWAPCHAIN_IMAGES knob
Swung0x48 Oct 10, 2026
2b277b0
[Docs] (P15): present-wait levers handoff
Swung0x48 Oct 10, 2026
96037fc
[Docs] (P15): pwab device A/B results
Swung0x48 Oct 10, 2026
166f47f
[Fix] (Test): TrackerShareGroup uses Take() for the context slot
Swung0x48 Oct 10, 2026
b733eed
[CI] (census): drop the partial-SubData case from the magma-buffers b…
Swung0x48 Oct 10, 2026
79afd8a
[Docs] (pwait): levers, timeline and latency effect
Swung0x48 Oct 10, 2026
5f9c3d6
[Docs] (Performance): anland glmark2 before/after
Swung0x48 Oct 10, 2026
745f59b
[Feat] (Remote): give inproc T0 the server's own store and never an AHB
Swung0x48 Oct 11, 2026
e4aab8d
[Fix] (Remote): offer inproc no shared images and refuse them on its …
Swung0x48 Oct 11, 2026
a2801f9
[Fix] (Build): restore the MSVC Windows build of the opengl32 drop-in
Swung0x48 Oct 11, 2026
2afeec9
[Fix] (Magma): readback before the first acquire no longer submits a …
Swung0x48 Oct 11, 2026
cef5759
[Feat] (Video): add the paper-cutout intro and hype reel sources
Swung0x48 Oct 11, 2026
b4f35cd
[Fix] (cts): run_cts_local.py times out on qpa log idleness, not chun…
Swung0x48 Oct 12, 2026
2a1920a
[Fix] (Espryt): redeclare clip/cull distance outputs inside gl_PerVer…
Swung0x48 Oct 12, 2026
53877cf
[Docs] (cts): ReadBuffer waiver names GL_INVALID_OPERATION, not GL_IN…
Swung0x48 Oct 12, 2026
e7cd3a3
[Fix] (Texture): size unsized GL_DEPTH_COMPONENT/GL_DEPTH_STENCIL tex…
Swung0x48 Oct 12, 2026
03aa152
[Fix] (GL): accept GL_SRC_ALPHA_SATURATE as a source and destination …
Swung0x48 Oct 12, 2026
ef3178a
[Fix] (GL): keep ES-only image_external and ARB_robustness names off …
Swung0x48 Oct 12, 2026
a566342
[Test] (Texture): unsized depth formats resolve to sized storage
Swung0x48 Oct 12, 2026
7abc581
[Test] (GL): image_external names stay off strict desktop contexts
Swung0x48 Oct 12, 2026
8800c6b
[Fix] (Shader): keep subroutine type declarations as prototypes so re…
Swung0x48 Oct 12, 2026
14617a5
[Fix] (Espryt): re-sync image units when a bound image texture's cont…
Swung0x48 Oct 12, 2026
84b0c20
[Test] (Espryt): upload into an image-only texture lands before the d…
Swung0x48 Oct 12, 2026
c639e17
[Fix] (Espryt): barrier re-uploads into image-accessed textures ahead…
Swung0x48 Oct 12, 2026
363fce2
[Fix] (Espryt): order a dispatch after unbarriered storage-buffer wri…
Swung0x48 Oct 12, 2026
9b5e15d
[Fix] (Espryt): swizzle GL_BGRA vertex arrays into RGBA streams inste…
Swung0x48 Oct 12, 2026
bc3c4fb
[Fix] (Remote): order buffer writebacks by producing seq so a stale c…
Swung0x48 Oct 12, 2026
106190e
[Fix] (Shader): make demoted double varyings flat on every stage so b…
Swung0x48 Oct 12, 2026
ba6db60
[Fix] (GL): fail the link when a stage exceeds its uniform or storage…
Swung0x48 Oct 12, 2026
7e544c2
[Feat] (Frontend): add GL_EXT_fragment_shading_rate state, entry poin…
Swung0x48 Oct 12, 2026
6d27499
[Feat] (ShaderTranspiler): carry shading-rate built-ins through the E…
Swung0x48 Oct 12, 2026
db23b9d
[Feat] (Espryt): forward fragment shading rate to the driver extension
Swung0x48 Oct 12, 2026
c881bc2
[Feat] (Magma): pipeline and primitive fragment shading rate via VK_K…
Swung0x48 Oct 12, 2026
2eae028
[Fix] (GL): report tessellation-stage image uniform limits from the b…
Swung0x48 Oct 12, 2026
4c9ce56
[Feat] (GL): advertise the 4.x-core extension batch and ARB_tessellat…
Swung0x48 Oct 12, 2026
b22c37f
[Fix] (GL): resolve attribute array elements in glGetAttribLocation
Swung0x48 Oct 12, 2026
454083b
[Fix] (DirectGLES): redeclare input gl_PerVertex with the producer's …
Swung0x48 Oct 12, 2026
c83d27a
[Feat] (GL): advertise ARB_cull_distance where the backend has cull d…
Swung0x48 Oct 12, 2026
82ef005
[Fix] (DirectVulkan): express polygon facing as the pipeline front face
Swung0x48 Oct 12, 2026
6e43ff8
[Feat] (GL): apply glClipControl on both backends and advertise ARB_c…
Swung0x48 Oct 12, 2026
d4501e0
[Fix] (GL): raise INVALID_OPERATION from glTextureParameter* for samp…
Swung0x48 Oct 12, 2026
4b5c315
[Fix] (GL): report FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS and treat an …
Swung0x48 Oct 12, 2026
2f31226
[Fix] (GL): keep TEXTURE_BASE_LEVEL/MAX_LEVEL as set on immutable tex…
Swung0x48 Oct 12, 2026
b7d42fa
[Fix] (GL): answer GL_TEXTURE_BUFFER_DATA_STORE_BINDING in glGetTexLe…
Swung0x48 Oct 12, 2026
60ba52b
[Fix] (GL): validate the glGetTextureSubImage region with INVALID_VAL…
Swung0x48 Oct 12, 2026
049c8a4
[Fix] (GL): implement glGetCompressedTextureSubImage over the compres…
Swung0x48 Oct 12, 2026
b4da0e1
[Fix] (GL): raise INVALID_VALUE/INVALID_ENUM from glGetStringi for an…
Swung0x48 Oct 12, 2026
45f5bae
[Fix] (GL): answer one for the name-length program queries of a progr…
Swung0x48 Oct 12, 2026
c2dbcbe
[Fix] (GL): report GL_SAMPLE_POSITION from the backend's sample locat…
Swung0x48 Oct 12, 2026
4cb65bd
[Fix] (Shader): place relaxed-rule atomic counters on their binding's…
Swung0x48 Oct 12, 2026
cc23ed3
[Fix] (Shader): reject a location qualifier on an atomic counter inst…
Swung0x48 Oct 12, 2026
3507724
[Fix] (GL): derive per-stage atomic-counter limits from the backend's…
Swung0x48 Oct 12, 2026
e0193f0
[Fix] (GL): fail the link of a non-separable program that has a tesse…
Swung0x48 Oct 12, 2026
e98c5b4
[Fix] (GL): validate program pipelines by the spec rules in glValidat…
Swung0x48 Oct 12, 2026
1469022
[Fix] (Shader): keep ESSL 3.10 block-array indexing and image-uniform…
Swung0x48 Oct 12, 2026
3b0e627
[Fix] (Backend): apply the polygon offset clamp on both backends
Swung0x48 Oct 12, 2026
8fff936
[Fix] (Backend): apply framebuffer no-attachment defaults on both bac…
Swung0x48 Oct 12, 2026
acad001
[Fix] (Pipe): bind incomplete image units as no image
Swung0x48 Oct 12, 2026
1962e0c
[Fix] (Buffer): refresh persistent read maps at glFinish and glClient…
Swung0x48 Oct 12, 2026
c9bf43b
[Fix] (Texture): decode ETC2/EAC uploads into the texel shadow
Swung0x48 Oct 12, 2026
09b3151
[Fix] (Espryt): bound usampler2DMS fetches by the bound texture's rea…
Swung0x48 Oct 12, 2026
171eed9
[Fix] (CI): re-baseline the link ratchet for the seq-ordered buffer w…
Swung0x48 Oct 12, 2026
da6b172
[Fix] (Magma): lower pixel_center_integer gl_FragCoord so Vulkan vali…
Swung0x48 Oct 12, 2026
cd26f50
[Fix] (Pipe): skip the location tables a failed relink cleared when e…
Swung0x48 Oct 12, 2026
47601cb
[Fix] (Buffer): refresh persistent read maps at a client-mapped buffe…
Swung0x48 Oct 12, 2026
53f3b7a
[Fix] (GL): leave the injected default fragment stage out of program …
Swung0x48 Oct 12, 2026
6129d6e
[Fix] (Magma): zero gl_Layer in draws into a non-layered framebuffer
Swung0x48 Oct 12, 2026
702f937
[Fix] (Pipe): avalanche the composite shutter mix so dirty bits stop …
Swung0x48 Oct 12, 2026
05d58a5
[Fix] (Espryt): sample cube-array shadow textures at LOD 0 with textu…
Swung0x48 Oct 12, 2026
065d158
[Fix] (Magma): ignore shader gl_SampleMask without multisample fragme…
Swung0x48 Oct 12, 2026
4eb0dbc
[Fix] (Magma): probe and work around Adreno E5 transfer reads and cro…
Swung0x48 Oct 13, 2026
4e0989b
[Fix] (Magma): read unbacked depth levels back from the CPU shadow
Swung0x48 Oct 13, 2026
8c2d501
[Fix] (Magma): convert 32-bit int and packed 2_10_10_10 float attribu…
Swung0x48 Oct 13, 2026
cd9f677
[Fix] (Magma): re-emit dynamic state after rasterizer-discard draws
Swung0x48 Oct 13, 2026
735b705
[Fix] (Espryt): invalid image units read zero through a shaped placeh…
Swung0x48 Oct 13, 2026
cfbaffd
[Fix] (Espryt): defer geometry emits behind memory writes on drivers …
Swung0x48 Oct 13, 2026
d6b0eba
[Feat] (Subgroups): use native subgroups or emulate them on both back…
Swung0x48 Oct 13, 2026
8ecab66
[Fix] (Espryt): probe empty image units and keep invalid units empty …
Swung0x48 Oct 13, 2026
fdb747b
[Fix] (Remote): stop the adoption's falling edge from overwriting wri…
Swung0x48 Oct 13, 2026
5980349
[Fix] (CI): the parity gate sanctions Magma's spawn-only AdoptTier0 f…
Swung0x48 Oct 13, 2026
b9f940a
[Test] (Pipe): re-pin the pipeline member count and the clear-blit re…
Swung0x48 Oct 13, 2026
a31eabd
[Test] (IterationRP): accept the driver's dot() rounding within one u…
Swung0x48 Oct 13, 2026
6336943
[Test] (Coverage): register ClipControlScenario on the gated split arms
Swung0x48 Oct 13, 2026
e8dafac
[Fix] (Magma): leave the fragment stage out of rasterizer-discard pip…
Swung0x48 Oct 13, 2026
2afbcaa
[CI] (Census): retire the renamed subgroup sanity case and Magma's sp…
Swung0x48 Oct 13, 2026
28f937d
[Fix] (Espryt): keep the invalid-image placeholder on ANGLE instead o…
Swung0x48 Oct 14, 2026
d1b3a33
[Test] (ServerLoop): arm the guilty-reset drain hold by the healthy r…
Swung0x48 Oct 14, 2026
fdb93e9
[Fix] (CI): treat a process that exits mid-read of its /proc stat as …
Swung0x48 Oct 14, 2026
652e7cd
[Merge] (Anland): take fix-d1100-mali - the damage-swap fallback and …
Swung0x48 Oct 15, 2026
37d07cd
[CI] (.github/workflows): run CI on cleanup as on feat/disaggregated
Swung0x48 Oct 15, 2026
bc38b0f
[Docs] (AGENTS.md, CLAUDE.md, CONTRIBUTING.md): add rules for commits…
Swung0x48 Oct 15, 2026
f0cd9b2
[Chore] (MG_Client, MG_Protocol, MG_Protocol/gen): remove generated w…
Swung0x48 Oct 15, 2026
35c7b58
[Chore] (scripts): add license headers only where missing, covering .…
Swung0x48 Oct 15, 2026
c4fb939
[Chore] (MG_Backend/DirectGLES, MG_Backend/DirectVulkan, MG_Impl/EGLI…
Swung0x48 Oct 15, 2026
506ab15
[Docs] (.github/workflows, CMakeLists.txt, MG_Backend, MG_Backend/Dir…
Swung0x48 Oct 15, 2026
5370d91
[Docs] (.github/workflows, MG_Backend/DirectGLES, MG_Backend/DirectVu…
Swung0x48 Oct 15, 2026
f9c5e0a
[Docs] (docs/Disaggregated, docs/Performance, MG_Pipe, MG_Remote/Clie…
Swung0x48 Oct 15, 2026
eb0830d
[Fix] (MG_IntegrationTest/Scenarios): re-encode a GBK section sign as…
Swung0x48 Oct 15, 2026
b808b68
[Chore] (MG_Backend/DirectVulkan): remove an empty source file nothin…
Swung0x48 Oct 15, 2026
73d4511
[Chore] (MG_Backend/DirectVulkan, MG_Benchmark, MG_Benchmark/Buffer, …
Swung0x48 Oct 15, 2026
725a73e
[Docs] (.claude/skills): point the anland skill's commit rule at CONT…
Swung0x48 Oct 15, 2026
b1f36a7
[Docs] (MG_Backend, MG_Backend/DirectGLES, MG_Impl/Pipe, MG_Integrati…
Swung0x48 Oct 15, 2026
67c4864
[CI] (.github/workflows, scripts, scripts/data): check commit message…
Swung0x48 Oct 15, 2026
66ef407
[Fix] (scripts, scripts/data): count comment lines the same on CRLF c…
Swung0x48 Oct 15, 2026
d3c10f1
[Fix, Test] (MG_Test, MG_Test/Backend, MG_Test/BackendLoader, MG_Test…
Swung0x48 Oct 15, 2026
174a428
[Test] (MG_Test/Util): give each log level test process its own log file
Swung0x48 Oct 15, 2026
0e3e2b7
[CI, Docs] (CONTRIBUTING.md, scripts): freeze docs/archive and treat …
Swung0x48 Oct 15, 2026
aabca3c
[Docs] (.claude/skills, .github/workflows, CMakeLists.txt, docs/archi…
Swung0x48 Oct 16, 2026
211ca08
[Docs] (docs/Disaggregated): point the indexes' prose at docs/archive
Swung0x48 Oct 16, 2026
7ec1448
[Docs] (docs/Disaggregated, MG_Backend/MGPipe, MG_IntegrationTest/Har…
Swung0x48 Oct 16, 2026
37ecba2
[Docs] (docs/Disaggregated, MG_Impl/Pipe, MG_Remote/Client): shorten …
Swung0x48 Oct 16, 2026
23ee8bd
[Docs] (docs/Disaggregated, MG_Remote, MG_Remote/Client, MG_Remote/Pr…
Swung0x48 Oct 16, 2026
265966a
[Docs] (MG_Backend/DirectGLES, MG_Backend/MGPipe, MG_Backend/Record, …
Swung0x48 Oct 16, 2026
92f1b9b
[CI] (scripts/data): lower the text hygiene baseline after the commen…
Swung0x48 Oct 16, 2026
1161d48
[Build] (MG_IntegrationTest): register each integration lane with one…
Swung0x48 Oct 16, 2026
7bb5a9c
[Docs] (.github/workflows, docs/Disaggregated, MG_IntegrationTest): s…
Swung0x48 Oct 16, 2026
37cb446
[CI] (scripts/data): lower the text hygiene baseline after the commen…
Swung0x48 Oct 16, 2026
26a30ec
[CI] (CONTRIBUTING.md, scripts): skip moved lines in the changed-line…
Swung0x48 Oct 16, 2026
f90537c
[CI] (.github/workflows, CONTRIBUTING.md, scripts, scripts/data): add…
Swung0x48 Oct 16, 2026
deae0fc
[Refactor] (MG_Backend/DirectGLES): drop the readback stores' pack-bu…
Swung0x48 Oct 16, 2026
01f80b0
[Refactor] (CMakeLists.txt, MG_Backend, MG_Backend/DirectGLES, MG_Bac…
Swung0x48 Oct 16, 2026
b0e229f
[Refactor] (MG_Backend/DirectVulkan): make the renderer's two file-sc…
Swung0x48 Oct 16, 2026
98c8e88
[Refactor] (CMakeLists.txt, MG_Backend/DirectVulkan): split VulkanRen…
Swung0x48 Oct 16, 2026
7f7c596
[Docs] (docs/Disaggregated, docs/MobileVA, docs/Performance, MG_Impl/…
Swung0x48 Oct 16, 2026
16994dc
[Docs] (MG_Backend/Record, MG_IntegrationTest/Scenarios): cite symbol…
Swung0x48 Oct 16, 2026
5973bf3
[CI] (scripts/data): lower the hygiene and structure baselines after …
Swung0x48 Oct 16, 2026
1ec54d8
[CI] (scripts/ci): read every DirectGLES source in the memo purity gate
Swung0x48 Oct 16, 2026
b0f73e3
[Refactor] (CMakeLists.txt, MG_Backend/DirectGLES): split DirectGLES.…
Swung0x48 Oct 16, 2026
d1f220c
[Refactor] (CMakeLists.txt, MG_Backend/DirectGLES): split Managers.cp…
Swung0x48 Oct 16, 2026
91294a1
[Docs] (MG_Backend/DirectGLES, MG_Backend/DirectVulkan, MG_Backend/Re…
Swung0x48 Oct 16, 2026
cf1b7f6
[CI] (scripts/ci, scripts/data): lower the baselines after the Direct…
Swung0x48 Oct 16, 2026
778014c
[Refactor] (MG_Backend, MG_Backend/DirectVulkan, MG_Pipe, MG_Remote/C…
Swung0x48 Oct 16, 2026
f7e065a
[Docs] (MG_Backend/Record, MG_Impl/GLImpl, MG_Impl/Pipe, MG_Remote, M…
Swung0x48 Oct 16, 2026
351bb35
[CI] (scripts/data): lower the baselines after the BackendCaps.h move
Swung0x48 Oct 16, 2026
58c727f
[Tools] (scripts): format exactly the files the format check covers
Swung0x48 Oct 16, 2026
76b10cc
[CI] (scripts): read the dirty-bit name table in any line layout
Swung0x48 Oct 16, 2026
f4994ee
[Chore] (MG_Backend, MG_Backend/DirectGLES, MG_Backend/DirectVulkan, …
Swung0x48 Oct 16, 2026
7dbe0e5
[Docs] (.git-blame-ignore-revs, CONTRIBUTING.md): list the reformat f…
Swung0x48 Oct 16, 2026
28bf0c1
[Refactor] (MG_Backend, MG_Impl/Pipe, MG_IntegrationTest/Harness, MG_…
Swung0x48 Oct 16, 2026
230a90a
[Fix] (MG_Impl/GLImpl, MG_IntegrationTest, MG_IntegrationTest/Scenari…
Swung0x48 Oct 16, 2026
095cf26
[CI] (scripts/data): expect the new F1 scenarios to skip on the monol…
Swung0x48 Oct 16, 2026
ad73409
[Fix] (MG_Impl/GLImpl, MG_State/GLState, MG_Test/Texture, scripts/dat…
Swung0x48 Oct 16, 2026
55fa9cd
[Refactor] (CMakeLists.txt, MG_Backend, MG_Backend/DirectVulkan, MG_I…
Swung0x48 Oct 17, 2026
1aa5cf6
[Refactor] (MG_Backend, MG_Backend/DirectGLES, MG_Backend/DirectVulka…
Swung0x48 Oct 17, 2026
a877325
[Test] (MG_Test, MG_Test/Backend): pin BackendObject's EGL surface bo…
Swung0x48 Oct 17, 2026
7de09a6
[Refactor] (CMakeLists.txt, MG_Backend, MG_Backend/DirectGLES, MG_Bac…
Swung0x48 Oct 17, 2026
2793e46
[Refactor] (CMakeLists.txt, MG_Pipe): move the device-loss debug knob…
Swung0x48 Oct 17, 2026
ca5470c
[Fix] (MG_Pipe, MG_Test/Wire, scripts/data): aim the session-loss kno…
Swung0x48 Oct 17, 2026
53e4c42
[Test] (MG_Test/Wire, scripts/data): wait for events, not deadlines, …
Swung0x48 Oct 17, 2026
4f34da0
[Test] (scripts/ci): keep the TCP lane controls' errors out of annota…
Swung0x48 Oct 17, 2026
4b1aba2
[CI] (.github/actions, .github/workflows): run serial lanes at -j, re…
Swung0x48 Oct 17, 2026
8063c63
[CI] (.github/workflows): pack the test runtimes with zstd, not gzip
Swung0x48 Oct 17, 2026
b44805e
[Feat] (MobileGL, MG_Test/Program, MG_Util/ShaderTranspiler): add MOB…
Swung0x48 Oct 17, 2026
d27a619
[CI] (.github/workflows): skip the shader prewarm in the ctest lanes
Swung0x48 Oct 17, 2026
32772ca
[CI] (.github/workflows): run every job on ubuntu-26.04
Swung0x48 Oct 17, 2026
fb73bca
[Test] (MG_Test/Program, MG_Util/ShaderTranspiler, MobileGL): probe t…
Swung0x48 Oct 17, 2026
ca5411c
[CI] (.github/actions, .github/workflows): compress cores so death te…
Swung0x48 Oct 17, 2026
bc0111c
[Test] (.github/workflows, scripts/ci, tools/trace_replay): assert ea…
Swung0x48 Oct 17, 2026
75edebd
[CI] (.github/workflows, docs/ci, scripts/ci, tools/trace_replay): dr…
Swung0x48 Oct 17, 2026
1e9f8bb
[Refactor] (docs/ci, MG_Impl/Pipe, MG_Remote/Client, MG_Test/Wire, sc…
Swung0x48 Oct 17, 2026
c5e4ddd
[CI] (.github/workflows, docs/ci, scripts/ci, scripts/data): tally th…
Swung0x48 Oct 17, 2026
93c4220
[CI] (.github/workflows, docs/ci, MG_IntegrationTest, MG_IntegrationT…
Swung0x48 Oct 17, 2026
f87ec9e
[Chore] (.github/workflows, docs/ci, scripts/ci): delete dead CI cont…
Swung0x48 Oct 17, 2026
9f0ad51
[CI] (.github/workflows, scripts/ci): configure both Linux builds fro…
Swung0x48 Oct 17, 2026
72e7d64
[CI] (scripts/ci): let skip-census rows be optional
Swung0x48 Oct 17, 2026
eebbb1a
[CI] (.github/workflows, docs/ci, MG_IntegrationTest/Harness, scripts…
Swung0x48 Oct 17, 2026
d5dfc9f
[CI] (.github/workflows, docs/ci, scripts/ci, scripts/data): run tran…
Swung0x48 Oct 17, 2026
5ce4890
[CI] (.github/workflows, docs/ci, scripts/ci): fold the strict split …
Swung0x48 Oct 17, 2026
8b76a4e
[CI] (.github/workflows, docs/ci, tools/trace_replay): drop retrace-s…
Swung0x48 Oct 17, 2026
91b8898
[Test] (.github/workflows, docs/ci, MG_IntegrationTest, MG_Integratio…
Swung0x48 Oct 17, 2026
8aa92c3
[CI] (.github/workflows, docs/ci, scripts/ci): decide split build reu…
Swung0x48 Oct 17, 2026
43e671f
[CI] (.github/workflows, docs/ci, scripts/ci, scripts/data): keep the…
Swung0x48 Oct 17, 2026
9eb92f8
[CI] (.github/workflows, docs/ci, scripts/ci): require optional censu…
Swung0x48 Oct 17, 2026
d98f183
[CI] (.github/workflows, scripts/ci, tools/trace_replay): check the v…
Swung0x48 Oct 17, 2026
a26d9a4
[CI] (.github/workflows): run 16 emulator retrace jobs at a time
Swung0x48 Oct 18, 2026
8f64fa7
[CI] (.github/workflows, android-plugin): boot retrace emulators from…
Swung0x48 Oct 18, 2026
da1ec09
[CI] (.github/workflows, android-plugin): cache a pre-booted AVD, not…
Swung0x48 Oct 18, 2026
4422732
[CI] (.github/workflows): let the emulator retrace jobs use the whole…
Swung0x48 Oct 18, 2026
1d13ea8
[CI] (.github/workflows): retry a timed-out retrace result upload once
Swung0x48 Oct 18, 2026
82a8fb8
[Test] (MG_IntegrationTest/Harness, MG_IntegrationTest/Scenarios, MG_…
Swung0x48 Oct 18, 2026
8199494
[CI] (.github/workflows, docs/ci, docs/Disaggregated, MG_IntegrationT…
Swung0x48 Oct 18, 2026
9032561
[Refactor, Test] (docs/ci, docs/Disaggregated, MG_Backend/MGPipe, MG_…
Swung0x48 Oct 18, 2026
87b8338
[Refactor, Test] (docs/ci, docs/Disaggregated, MG_IntegrationTest/Sce…
Swung0x48 Oct 18, 2026
95ecdd2
[Test] (docs/ci, MG_IntegrationTest, MG_IntegrationTest/Harness, MG_I…
Swung0x48 Oct 18, 2026
ebd7926
[CI] (.github/workflows, docs/ci, scripts/ci): keep the split lane's …
Swung0x48 Oct 18, 2026
f5df1f8
[Refactor] (docs/Disaggregated, MobileGL): force the verify IPC setti…
Swung0x48 Oct 18, 2026
9b5a60b
[Refactor, Test] (.github/workflows, docs/ci, docs/Disaggregated, MG_…
Swung0x48 Oct 18, 2026
b2daab6
[Refactor, Test] (docs/ci, docs/Disaggregated, MG_Backend/MGPipe, MG_…
Swung0x48 Oct 18, 2026
ead1a78
[Test] (.github/workflows, docs/ci, MG_IntegrationTest, MG_Integratio…
Swung0x48 Oct 18, 2026
9824bea
[Docs] (MG_Pipe, MobileGL): describe the bad-knob Fatal and the arm-t…
Swung0x48 Oct 18, 2026
ee30726
[Refactor, Test] (docs/ci, docs/Disaggregated, MG_IntegrationTest, MG…
Swung0x48 Oct 18, 2026
9ad0d48
[Refactor] (android-plugin/app, MobileGL): delete the unread MOBILEGL…
Swung0x48 Oct 18, 2026
0d11af0
[Refactor] (MG_Util/ShaderTranspiler): delete the uncalled Translatio…
Swung0x48 Oct 18, 2026
fd2cdf9
[Refactor] (MG_Backend/DirectVulkan): delete the MOBILEGL_MAGMA_WIREB…
Swung0x48 Oct 18, 2026
12a96be
[Refactor] (MG_Backend/DirectVulkan): drop the always-printed MGWIRE-…
Swung0x48 Oct 18, 2026
21925f9
[Refactor, Test] (MG_Impl/Pipe, MG_Test/Pipe): rename ResetForTest to…
Swung0x48 Oct 18, 2026
584641d
[Test] (docs/ci, MG_IntegrationTest/Harness): keep the ambient CtWire…
Swung0x48 Oct 18, 2026
c4eb620
[Docs] (MG_Backend/DirectVulkan): fix two comments citing the deleted…
Swung0x48 Oct 18, 2026
b4b2ccf
[Fix] (MG_Backend/DirectGLES, MG_Test/Backend): advertise 32 fragment…
Swung0x48 Oct 18, 2026
0c2f8df
[Fix] (CMakeLists.txt, MG_Test/ShaderTranspiler, MG_Util/ShaderTransp…
Swung0x48 Oct 18, 2026
c56c7e7
[Fix] (CMakeLists.txt, MG_Test/ShaderTranspiler, MG_Util/ShaderTransp…
Swung0x48 Oct 18, 2026
fe60711
[Fix, Test] (MG_Backend/DirectVulkan, MG_Test/ShaderTranspiler): fix …
Swung0x48 Oct 18, 2026
3528628
[Feat] (CMakeLists.txt, MG_Test/ShaderTranspiler, MG_Util/ShaderTrans…
Swung0x48 Oct 18, 2026
cc0c2aa
[Fix] (MG_Backend/DirectVulkan, MG_Test/Pipeline): give 8/16-bit inte…
Swung0x48 Oct 18, 2026
2093d84
[Test] (MG_IntegrationTest, MG_IntegrationTest/Scenarios): capture na…
Swung0x48 Oct 18, 2026
5a48bd8
[Perf] (MG_Backend/DirectVulkan, MG_Pipe, MG_Test/Pipeline): start a …
Swung0x48 Oct 18, 2026
78c2154
[Test] (MG_IntegrationTest/Scenarios): draw each array twice in a row…
Swung0x48 Oct 18, 2026
044a3f1
[Test] (tools/trace_replay): add a 1.20.1 iterationT in-world fixture
Swung0x48 Oct 19, 2026
58b0550
[Refactor] (MG_Backend/DirectVulkan, MG_Util/ShaderTranspiler): share…
Swung0x48 Oct 19, 2026
fd48928
[Test] (MG_IntegrationTest, MG_IntegrationTest/Harness, MG_Integratio…
Swung0x48 Oct 19, 2026
381124a
[Feat] (CMakeLists.txt, MG_Test/ShaderTranspiler, MG_Util/ShaderTrans…
Swung0x48 Oct 19, 2026
d129335
[Fix] (CMakeLists.txt, MG_Backend/DirectGLES, MG_Pipe, MG_Test/Backen…
Swung0x48 Oct 19, 2026
3d2e259
[Fix] (MG_Backend/DirectGLES, MG_Test/Backend): re-arm seeds per link
Swung0x48 Oct 19, 2026
1a53cbd
[Test] (MG_IntegrationTest/Scenarios, MG_Test/Backend): run every nar…
Swung0x48 Oct 19, 2026
b5d6417
[Fix] (MG_IntegrationTest/Harness): list the canned narrow check unarmed
Swung0x48 Oct 19, 2026
6e36bf2
[Chore, Docs] (...): drop the archived notes and move the skill under…
BZLZHH Oct 31, 2026
de7b7ea
[CI, Docs] (CONTRIBUTING.md, scripts): allow an abbreviated scope on …
BZLZHH Oct 31, 2026
47892af
[CI, Docs] (AGENTS.md, CONTRIBUTING.md, scripts): let wide commits su…
BZLZHH Oct 31, 2026
4f50bed
[Docs, Chore] (docs, tools, MobileGL, scripts, CONTRIBUTING.md, .giti…
BZLZHH Oct 31, 2026
6d3b00e
[Chore] (docs, MobileGL, scripts, tools, .github): use US spelling in…
BZLZHH Oct 31, 2026
8084a93
[Fix] (android-plugin/app): match the announcement wording the superv…
BZLZHH Oct 31, 2026
15ba86c
[CI] (scripts/ci): re-pin revision 6 after the comment-only schema edit
BZLZHH Oct 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Layout-only commits for `git blame` to look past:
# git config blame.ignoreRevsFile .git-blame-ignore-revs

# clang-format every C and C++ source
f4994ee36e3aa2d53c22370e471c976a3fae719f
57 changes: 57 additions & 0 deletions .github/actions/setup-test-runner/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Configure Test runner
description: Select the installed compiler and graphics stack without modifying the host
inputs:
gpu:
description: Require the native GPU stack when running on 8845
default: "false"
runs:
using: composite
steps:
- shell: bash
env:
NEED_GPU: ${{ inputs.gpu }}
run: |
if [ "$RUNNER_ENVIRONMENT" = "self-hosted" ] && [ "$NEED_GPU" = true ]; then
for tool in clang clang++ cmake ninja ccache; do command -v "$tool"; done
test -r /usr/share/vulkan/icd.d/dzn_icd.json
test -e /dev/dxg
{
echo 'MOBILEGL_CI_NATIVE_GPU=1'
echo 'MOBILEGL_CI_CC=clang'
echo 'MOBILEGL_CI_CXX=clang++'
echo 'MOBILEGL_CI_LLD=ld.lld'
echo 'MOBILEGL_CI_SOFTWARE_RENDERING=OFF'
echo 'VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/dzn_icd.json'
echo 'VK_DRIVER_FILES=/usr/share/vulkan/icd.d/dzn_icd.json'
echo 'EGL_PLATFORM=surfaceless'
echo 'LIBGL_ALWAYS_SOFTWARE=0'
echo 'GALLIUM_DRIVER=d3d12'
echo 'MESA_LOADER_DRIVER_OVERRIDE=d3d12'
} >> "$GITHUB_ENV"
else
{
echo 'MOBILEGL_CI_NATIVE_GPU=0'
echo 'MOBILEGL_CI_CC=clang-20'
echo 'MOBILEGL_CI_CXX=clang++-20'
echo 'MOBILEGL_CI_LLD=ld.lld-20'
echo 'MOBILEGL_CI_SOFTWARE_RENDERING=ON'
echo 'VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/lvp_icd.json'
echo 'VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json'
} >> "$GITHUB_ENV"
# A stalled mirror must fail a request and retry it, not hold the install step until
# its timeout.
if [ -d /etc/apt/apt.conf.d ] && command -v sudo > /dev/null; then
printf 'Acquire::Retries "3";\nAcquire::http::Timeout "30";\nAcquire::https::Timeout "30";\n' |
sudo tee /etc/apt/apt.conf.d/80-mobilegl-ci-network > /dev/null
fi
# Cores go through zstd: a unit run's intentional aborts (death tests) left hundreds
# of raw cores in /tmp and filled the disk. The handler keeps honoring each
# process's RLIMIT_CORE (%c), so only steps that raise it with ulimit -c get cores;
# read one with 'zstd -d core.<exe>.<pid>.zst' first.
if [ ! -f /.dockerenv ] && command -v sudo > /dev/null && command -v zstd > /dev/null; then
printf '#!/bin/sh\n[ "$3" = 0 ] && exec cat > /dev/null\nexec %s -q -1 -o "/tmp/core.$1.$2.zst"\n' \
"$(command -v zstd)" | sudo tee /usr/local/bin/mobilegl-core-handler > /dev/null
sudo chmod 755 /usr/local/bin/mobilegl-core-handler
sudo sysctl -q -w kernel.core_pattern='|/usr/local/bin/mobilegl-core-handler %e %p %c'
fi
fi
33 changes: 29 additions & 4 deletions .github/scripts/validate-plugin-apks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ require 'key:MOBILEGL_BACKEND_TYPE' "$plugin_resource_text" 'V2 backend variable
require 'defaultValue:DirectGLES' "$plugin_resource_text" 'V2 DirectGLES default'
require 'DirectVulkan' "$plugin_resource_text" 'V2 DirectVulkan option'
require 'key:MOBILEGL_DISABLE_TIMERQUERY' "$plugin_resource_text" 'V2 timer-query toggle'
require 'key:MOBILEGL_MAGMA_DISABLE_SUBGROUP' "$plugin_resource_text" 'V2 Vulkan subgroup toggle'
require 'key:MOBILEGL_SUBGROUP_EMULATION' "$plugin_resource_text" 'V2 subgroup emulation setting'
require 'key:MOBILEGL_MAGMA_R11G11B10F_FALLBACK' "$plugin_resource_text" 'V2 Magma format fallback toggle'
require 'key:MOBILEGL_MAGMA_FRAMESINFLIGHT' "$plugin_resource_text" 'V2 Magma frames-in-flight setting'
require 'key:MOBILEGL_FRAMES_IN_FLIGHT' "$plugin_resource_text" 'V2 frames-in-flight setting'
require 'key:MOBILEGL_ESPRYT_AVOID_SAMPLER_MIPMAP_MIN_FILTER' "$plugin_resource_text" 'V2 sampler workaround toggle'
require 'key:MOBILEGL_COHERENT_AS_FLUSH' "$plugin_resource_text" 'V2 coherent-as-flush toggle'
require 'key:MOBILEGL_ESPRYT_USE_ANGLE' "$plugin_resource_text" 'V2 ANGLE toggle'
Expand All @@ -61,15 +61,40 @@ if ! grep -Eq '^lib/[^/]+/libMobileGL\.so$' <<<"$plugin_contents"; then
exit 1
fi

# The render server is not trace-only: both flavors carry the control screen, the offscreen
# service, the on-screen display activity, and (split native builds) the supervisor executable.
# The plugin APK ships to users, so its build keeps the three components private (manifest
# placeholder serverComponentsExported=false); only the debuggable trace APK exports them for adb.
for component in ServerControlActivity MobileGLServerService MobileGLDisplayActivity; do
require "$component" "$plugin_manifest" "plugin render server component ($component)"
require "$component" "$trace_manifest" "trace render server component ($component)"
done
if [[ "${MOBILEGL_CI_DISAGGREGATED:-OFF}" == "ON" ]]; then
trace_contents=$(unzip -Z1 "$trace_apk")
for entry in "plugin:${plugin_contents}" "trace:${trace_contents}"; do
if ! grep -Eq '^lib/[^/]+/libMobileGLServer\.so$' <<<"${entry#*:}"; then
echo "::error::${entry%%:*} APK does not contain libMobileGLServer.so (both flavors ship the render server)" >&2
exit 1
fi
done
fi

require 'top.mobilegl.plugin.trace' "$trace_manifest" 'trace package name'
require 'top.mobilegl.plugin.TRACE_REPLAY' "$trace_manifest" 'trace replay action'
if grep -Fq 'fclPlugin' <<<"$trace_manifest"; then
echo '::error::Trace APK must not advertise renderer-plugin metadata' >&2
exit 1
fi
if grep -Fq 'android.intent.action.MAIN' <<<"$trace_manifest"; then
echo '::error::Trace APK must not expose a launcher activity' >&2
# The trace APK IS a launchable app now: PostActivity (the POST self-test screen) is its
# entry icon and the bottom navigation bar switches to the render server screen. What is
# left of the old "no launcher" contract is the count - exactly ONE MAIN activity, so a
# screen that accidentally grows a launcher entry (ServerControlActivity was one for a day)
# reds here instead of shipping two icons.
main_count=$(grep -Fc 'android.intent.action.MAIN' <<<"$trace_manifest")
if [[ "$main_count" -ne 1 ]]; then
echo "::error::Trace APK must expose exactly one launcher activity (PostActivity); found ${main_count} android.intent.action.MAIN" >&2
exit 1
fi
require 'PostActivity' "$trace_manifest" 'trace launcher activity (PostActivity)'

echo 'Validated unified MobileGL plugin APK and isolated trace APK.'
Loading
Loading