swung0x48
b831dae8d5
[Feat] (MG_Backend/DirectGLES): packed-type readback encoding - repack wide RGBA reads into all GL 3.3 packed pixel types (3_3_2/2_3_3_REV, 5_6_5(_REV), 4_4_4_4(_REV), 5_5_5_1/1_5_5_5_REV, 8_8_8_8(_REV), 10_10_10_2/2_10_10_10_REV, packed-float 10F_11F_11F_REV and shared-exponent 5_9_9_9_REV) for ReadPixels/GetTexImage; conversion helpers extracted to context-free ReadbackImpl (Utils.cpp) with unit tests asserting exact packed words against the GL CTS pack_* oracle layouts
2026-07-16 11:08:02 -04:00
swung0x48
6ca48e40fe
[Feat] (MG_State, MG_Util, MG_Impl/GLImpl, MG_Backend/DirectGLES): desktop-GL single-channel client formats GL_GREEN/GL_BLUE/GL_ALPHA and _INTEGER variants - validate and readback via wide-RGBA channel extraction (GL CTS packed_pixels rgba8_format_green/blue read with them), unpack GREEN/BLUE(_INTEGER) TexImage uploads into the named channel with 0/1 defaults per table 3.3; GL_ALPHA keeps the legacy Red upload mapping (R8 storage + 000R swizzle), its readback corrected at the backend to source channel 3
2026-07-16 06:47:33 -04:00
swung0x48
a1a8a18575
[Fix] (MG_Backend/DirectGLES, MG_Impl/GLImpl): ReadPixels - fall back to wide-format conversion when the ES driver rejects a legacy native read combo (Adreno errors on e.g. GL_RED/GL_UNSIGNED_INT and leaves the buffer untouched), and enforce packed-type/format pairing at the state layer via shared ValidateClientFormatTypePairing (GL_RED + GL_UNSIGNED_SHORT_5_6_5 now raises GL_INVALID_OPERATION)
2026-07-16 06:11:53 -04:00
swung0x48
37a050b106
[Fix] (MG_Backend/DirectGLES): upload shadow mips with UNPACK_ALIGNMENT=1 - shadow rows are tightly packed but uploads ran with alignment 4, shifting every row of non-multiple-of-4-width textures by one pixel (R8 7-wide CTS gradients read back diagonally)
2026-07-16 05:52:01 -04:00
swung0x48
164bfd810b
[Fix] (MG_State/ErrorState): GL error flags are sticky per error code, not an unbounded queue - repeated same-code errors accumulated and leaked into later unrelated glGetError checks (GL CTS "Texture state reset failed" deinit noise and false "Error during glGetTexImage" failures)
2026-07-16 05:29:46 -04:00
swung0x48
b8dc4a6004
[Fix] (MG_Util/Texture): expand channels and convert component types on texture unpack to the internal shadow layout
2026-07-16 04:39:57 -04:00
swung0x48
3e8c8b756f
Merge branch 'worktree-agent-acd555500daee6840' into dev
2026-07-16 04:13:25 -04:00
swung0x48
763d4c3207
[Fix] (CI): resume interrupted fixture downloads
2026-07-16 04:11:48 -04:00
swung0x48
9351d66dbc
Merge branch 'worktree-agent-a08726da20d78531a' into dev
...
# Conflicts:
2026-07-16 03:57:12 -04:00
swung0x48
e9bd520d9b
[Feat] (MG_Backend/DirectVulkan): implement combined depth-stencil texture upload via per-aspect de-interleaved staging copies
2026-07-16 03:54:33 -04:00
swung0x48
1dc217b32c
[Fix] (MG_Util/Metrics): correct Depth32FStencil8 shadow texel size (16->8) and FLOAT_32_UNSIGNED_INT_24_8_REV type size (4->8) to the GL client transfer layout
2026-07-16 03:54:33 -04:00
swung0x48
35626da5c4
[Fix] (MG_Util/Texture): infer RGBA8 for packed RGBA uploads
...
(cherry picked from commit 1146188ed4 )
2026-07-16 03:41:29 -04:00
swung0x48
8496e7c7eb
[Fix] (MG_Backend/DirectGLES): convert narrow client formats (RED/RG/RGB/BGR/BGRA + integer variants, byte/short/half/8888 types) in GetTexImage/ReadPixels via wide RGBA readback
2026-07-16 03:40:54 -04:00
swung0x48
c247ad5807
Merge branch 'worktree-agent-aae96e27d8b07e982' into dev
2026-07-16 03:32:39 -04:00
swung0x48
7514587b5a
[Fix] (MG_Impl/GLImpl, MG_State): fallback UBO backing for optimizer-eliminated uniforms (null-MapUBO SIGSEGV in KHR-GL33 do_while loops) + per-element locations/offsets for array uniforms incl. nested struct arrays (size assert in KHR-GL33 struct.uniform); demote uniform write assert to log-and-clamp
2026-07-16 03:31:32 -04:00
swung0x48
5b38f61961
[Fix] (MG_Backend): GetTexImage level-range check was off-by-one (max level is inclusive; single-level textures asserted on level 0), demoted to logged skip; advertise GL_ARB_texture_storage_multisample (entry points already implemented - unadvertised extension left null glw pointers and CTS framebuffer_blit jumped to address 0)
2026-07-16 03:06:03 -04:00
swung0x48
8bdab8005b
[Fix] (MG_Backend/DirectVulkan): skip combined depth-stencil texture data uploads instead of recording invalid single-copy with multi-bit aspect mask (VK_INCOMPLETE at vkEndCommandBuffer killed the process); proper per-aspect de-interleave tracked separately
2026-07-16 02:36:07 -04:00
swung0x48
273c7ebcf0
[Fix] (MG_Impl/GLImpl, MG_State, MG_Backend/DirectGLES): eliminate packed_pixels SIGTRAPs - complete TexImage format/type/internalformat validation matrix (depth-stencil family, integer-ness, packed-type pairing, 3D depth rejection), fix inverted UpdateSubData assert with clamped copy, demote unimplemented readback asserts to logged no-ops
2026-07-16 02:23:18 -04:00
swung0x48
3a40778c4b
[Fix] (MG_Util/ShaderTranspiler): stop stripping precision qualifiers - the strip corrupted "precision highp float;" into invalid syntax; glslang accepts and ignores them natively in 460 core (unblocks ~2000 GL CTS cases per backend)
2026-07-16 01:50:33 -04:00
swung0x48
37a7f35a27
[Chore] (MG_Backend/DirectGLES): demote UBO ring creation log to debug level
2026-07-16 00:10:14 -04:00
swung0x48
c6ed9429be
[Fix] (MG_Backend/DirectGLES): UBO ring - preserve generation across ES context recreation, retire frame marks at Present to bound growth
2026-07-16 00:10:14 -04:00
swung0x48
cb6af44984
[Fix] (MG_Backend/DirectGLES): UBO ring review fixes - invalidate array-buffer bind cache on failed ring creation, bump generation on emergency drain, division-based alignment rounding
2026-07-16 00:10:13 -04:00
swung0x48
7464179249
[Chore] (MG_Backend/DirectGLES): log global-UBO ring creation
2026-07-16 00:10:13 -04:00
swung0x48
315e9cb194
[Perf] (MG_Backend/DirectGLES): replace per-draw global-UBO glBufferSubData with a persistent-mapped ring allocator (fence-watermark reclaimed, MOBILEGL_DISABLE_UBO_RING opt-out); scrub stale indexed-binding shadow on glDeleteBuffers
2026-07-16 00:10:12 -04:00
swung0x48
e8d9a913d8
[Fix] (MG_Util/SelfTest): preserve POST checks before format probing
2026-07-16 00:10:12 -04:00
swung0x48
4453f1910d
[Feat] (MG_Backend, android-plugin): show format capability tables in POST
2026-07-16 00:10:11 -04:00
swung0x48
1b0be9a997
[Docs] (android-plugin): specify POST format capability tables
2026-07-15 22:36:56 -04:00
swung0x48
3e4ce5caa7
[Refactor] (MG_Impl/GLImpl): replace Flywheel dispatch sync hack with MOBILEGL_COHERENT_AS_FLUSH
2026-07-15 21:51:20 -04:00
swung0x48
f80f6f4a62
[Fix] (CI): retain fixtures for failed retraces
2026-07-15 04:36:15 -04:00
swung0x48
66caf907fd
[Fix] (CI): remove intermediate trace artifacts
2026-07-15 02:52:03 -04:00
swung0x48
d3150399c7
[Fix] (CI): download direct trace APK artifact
2026-07-15 02:01:53 -04:00
swung0x48
f1c6a12c06
[Fix] (CI): use full commit SHAs
2026-07-15 01:33:56 -04:00
swung0x48
947442ec78
[Fix] (CI): resolve trace APK by SHA
2026-07-15 01:27:09 -04:00
swung0x48
165dd003d7
[Chore] (CI): clean intermediate artifacts
2026-07-15 00:53:50 -04:00
swung0x48
b852ced3c1
[Chore] (CI): upgrade GitHub Actions runtimes
2026-07-15 00:36:08 -04:00
swung0x48
4a03d62b91
[Fix] (CI): publish APK artifacts directly
2026-07-15 00:34:52 -04:00
swung0x48
056574eebe
[Fix] (CI): name APK artifacts by commit
2026-07-15 00:22:12 -04:00
swung0x48
e61685547a
[Fix] (CI): locate unified trace APK
2026-07-15 00:17:08 -04:00
swung0x48
7ebaf43282
[Refactor] (Android plugin): unify renderer APK with Plugin V2 DSL
2026-07-14 23:37:21 -04:00
swung0x48
15580ff6a6
[Fix] (Retrace): preserve bundled ANGLE binaries
2026-07-15 08:46:28 +08:00
swung0x48
fd6f5bca83
[Fix] (Retrace): rely on APK signing for bundled ANGLE
2026-07-15 07:50:40 +08:00
swung0x48
b6d311f20b
[Fix] (Retrace): bundle and select signed ANGLE variants
2026-07-15 06:48:10 +08:00
swung0x48
9c0d5517bd
[Refactor] (MG_Backend/DirectVulkan): replace null-renderer guards with MOBILEGL_ASSERT
...
Drops the if (!pVulkanRenderer) { return; } / !MG_State::pGLContext early-return guards across DirectVulkan.cpp in favor of MOBILEGL_ASSERT, matching the pattern already used by the rest of the backend. Legitimate runtime conditions (index bounds, sync/query handle nullness, renderer-generation mismatch, timer-query support) are kept as real checks; only the null-pointer defenses are converted.
2026-07-14 03:55:41 -04:00
swung0x48
3445ab9304
[Refactor] (MG_Backend/DirectVulkan, trace-replay): extract dump-image capture out of MobileGL backend
...
Moves snapshot capture entirely into the apitrace retrace layer (glReadPixels + PNG encode). Drops the MOBILEGL_PRESENT_DUMP_PATH / MOBILEGL_PRESENT_STATS / MOBILEGL_PRESENT_DUMP_CALL / MOBILEGL_PRESENT_CURRENT_CALL / MOBILEGL_TRACE_CURRENT_CALL_OVERRIDE plumbing from Config, ConfigLoader, VulkanRenderer (GetPresentedDumpPixel/WritePresentedDumpPpm + present-stats readback), the EGL/GLX/Android ws shims, and the Android trace_replay_core PPM reader.
DirectVulkan ReadPixels on the default framebuffer now remaps raw swapchain pixels (top-left origin, preTransform-rotated) to GL orientation (bottom-left origin) so the retrace snapshot matches the golden; SwapchainObject also resizes the default-FBO stencil attachment to the swapchain extent to fix GL_INVALID_FRAMEBUFFER_OPERATION under the glReadPixels completeness check.
2026-07-14 02:40:20 -04:00
swung0x48
533219ede7
[Fix] (Retrace): load ANGLE through LD_LIBRARY_PATH
2026-07-13 21:20:02 -04:00
swung0x48
b1f55026af
[Chore] (MobileGL/ConfigLoader): rename/clean up more env var clutter
2026-07-13 20:45:40 -04:00
swung0x48
a26e9aaf25
[Refactor] (MG_Config, MG_Backend, trace-replay): remove unused stats instrumentation
2026-07-13 20:33:31 -04:00
swung0x48
a55a0645e2
[Refactor] (MG_Config, MG_Backend/DirectVulkan, trace-replay): centralize Magma env parsing and rename R11G11B10F fallback
2026-07-13 19:58:06 -04:00
swung0x48
e529e12d27
[Perf] (MG_Backend/DirectVulkan): bind GetBoundObject/GetSamplerObject const-ref returns by reference in BindProgramUniformBuffers resolve paths (UBO/SSBO/texel/sampler override) instead of copying the SharedPtr; ResolveUniformBufferPayload 2.2%->1.6%
2026-07-13 08:27:12 -04:00
swung0x48
e78eee972e
[Perf] (MG_Backend/DirectVulkan): store the resolved TextureResource pointer in the per-draw sync memo so repeat SyncTextureAndGetDescriptor calls skip the resource-map lookup
2026-07-13 06:53:37 -04:00