Swung0x48
dd2a62228f
[Fix, Feat, Test] (MG_Util, MG_Backend, MG_Impl, MG_State): correct the log severity ordering and unwind the diagnostics it silenced
2026-08-13 02:02:49 -04:00
swung0x48
b8a8a660e1
[Refactor] (Lifecycle): own MobileGL's lifecycle from the EGL layer instead of ELF static ctor/dtor - the first EGL/WGL entry point lazily initializes via a thread-safe, re-init-capable EnsureInitialized (AutoInit is gone), the last eglTerminate with no initialized display and nothing current tears the whole library down deterministically inside the EGL lifecycle, and the global singletons move to leak-at-exit heap storage so process exit runs no backend destructors at all (AutoDestroy and the Windows DllMain abandon hook are gone); fixes the exit-time SIGABRT from undefined static-destruction order - the DirectGLES buffer-pool mutex abort on Android clean exits, and the pre-existing macOS QueryTest/ProgramTest 'Subprocess aborted' gtest failures now pass (ctest 411/411)
2026-07-26 10:59:14 -04:00
swung0x48
c4254c4bbd
[Feat] (WGL): add Windows host layer - drop-in opengl32.dll with WGL over EGLImpl, Win32 window backend plumbing for both backends, ANGLE loader path, and leak-at-exit process teardown
2026-07-26 06:46:29 -04:00
swung0x48 and Claude Fable 5
a6a5edf573
[Perf] (MG_Backend/DirectGLES, MG_Impl): cache link-time lookups, bound unit scans, honor eglSwapInterval
...
- BackendProgramObjectImpl::CacheResourceLocations resolves every
glGetUniformBlockIndex / glGetUniformLocation string query once per
link and establishes the block binding points there. Per draw,
BindCurrentProgramWithResources now uses the cached indices, re-issues
glUniform1i only when a sampler's unit actually changed (program state
persists), uploads the global UBO only when its content version moved,
and skips redundant glUseProgram binds (guard reset on program-name
reuse, MakeCurrent, and every explicit glUseProgram(0)). The caches are
invalidated through ProgramObject's link version, which also makes a
relinked program finally re-sync its backend program.
- Track a texture-unit high-water mark (fed by glBindTexture /
glBindTextureUnit / glBindSampler / glBindImageTexture) so the two
per-draw unit scans (MAX_TEXTURE_IMAGE_UNITS is 192) and the
texture-deletion unbind loop only walk units that were ever touched.
- Forward the app's eglSwapInterval to the native EGL surface through a
new BackendObject::SetEGLSwapInterval hook (applied immediately when
the surface exists, otherwise deferred to surface creation /
MakeCurrent). "VSync off" finally reaches the hardware - DirectGLES
was hard-locked to the display refresh before.
The driver-side cost of the per-draw string lookups was about half of a
30% Adreno driver hotspot; libMobileGL's share of the vanilla render
thread fell from 22% to 9% (simpleperf, Adreno 830).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-09 12:12:51 +00:00
swung0x48
5cdc6c902e
[Fix] (MG_Impl/EGLImpl, MG_Backend): track EGL surface lifecycle
2026-07-03 07:45:40 +08:00
swung0x48
59976a7f7b
[Feat] (MG_Impl/EGLImpl): expose surfaceless platform extensions
2026-07-02 08:09:56 +08:00
swung0x48
5b116696f0
[Fix] (MG_Impl/EGLImpl, MG_Backend): handle EGL current handoff for NeoForge earlydisplay
...
Treat valid-display no-surface eglMakeCurrent calls as EGL release requests, keep EGLState and backend current records consistent across threads, and rebind the native DirectGLES EGL context during attach/release.
Add EGLState coverage for cross-thread owner transfer and same-thread release/reattach behavior.
2026-06-30 16:44:38 +08:00
swung0x48
cca4df17d9
[Fix] (MG_Impl): preserve macOS surface during resize
2026-06-29 21:07:12 +08:00
swung0x48
3fc6357f28
[Fix] (MG_Impl): handle Retina drawable resize on macOS
2026-06-28 23:22:33 +08:00
swung0x48
0ef9c76224
[Feat] (MG_Backend/DirectVulkan): support macOS Metal surfaces
2026-06-28 14:19:51 +08:00
BZLZHH
727939af5b
[Fix] (MG_Impl, MG_State, MG_Backend, MG_Util): Do source audit by Codex.
2026-06-09 15:34:19 +08:00
swung0x48
b0de886f8e
[Fix] (MG_Backend/DirectVulkan): make glmark2 work on Magma
2026-06-07 16:24:30 +08:00
swung0x48
ff41e59282
[Feat] (EGL): support Linux X11 + EGL
2026-06-07 08:21:20 +08:00
BZLZHH
15e24cda78
[Perf|Improvement] (All): Improve performance & optimize code.
2026-02-23 16:00:38 +08:00
BZLZHH
d22d2d64f2
[Feat|Fix] (MG_State/EGLState|MG_Backend|MG_Impl/EGLImpl): Initial implemention of EGL API.
2026-02-22 18:22:21 +08:00
BZLZHH
ccd51bf2d3
Merge branch 'dev' into Feat/Backend-Direct-Vulkan
2026-02-21 15:02:59 +08:00
BZLZHH
60f06d1b8d
[Improvement] (MG_Backend): Separate Initialize and InitCapabilities.
2026-02-20 15:26:46 +08:00
BZLZHH
e34f3d915c
[Fix] (MG_Impl/EGLImpl): Fix GetProcAddress.
2026-02-18 22:31:27 +08:00
BZLZHH
8413874e82
[Feat|Refactor] (MG_Backend|MG_Impl): Implement BackendObject, replacing previous methods.
2026-02-18 10:36:56 +08:00
swung0x48
129091a430
[Feat] (MG_Test/Backend/DirectVulkan): move Render() outside of eglSwapBuffers
2026-02-15 21:36:26 +08:00
swung0x48
92cdcd952b
[Feat] (MG_Test/Backend/DirectVulkan): move Render() outside of Present()
2026-02-14 23:31:10 +08:00
swung0x48
843fdcb47a
[Fix] (MG_Backend/DirectVulkan): PrepareDemoRes() (only as placeholder)
2026-02-14 13:28:53 +08:00
swung0x48
0a7061f375
[Feat] (MG_Backend/DirectVulkan): redo the whole thing, bringing up Vulkan instance
2026-02-11 13:54:40 +08:00
swung0x48
43e59d8fce
[Fix] (MG_Backend/DirectVulkan): fix validation error on Windows
2026-02-10 14:16:23 +08:00
swung0x48
acc826ee9f
[Fix] (MG_Impl/EGLImpl/EGLForVulkan): fix wrong egl function signatures
2026-02-10 11:21:16 +08:00
BZLZHH
3b2c2028b9
[Feat] (MG_Backend/DirectVulkan): Present frame in eglSwapBuffers.
2026-02-08 14:58:42 +08:00
swung0x48
2aff5dc650
[Fix] (MG_Impl/EGL/EGLForVulkan): use GL semantics for demo shader
2026-02-08 13:31:51 +08:00
BZLZHH
0cf9d9223d
[Feat|Perf] (*/BufferState): Improve dirty mark for Buffer.
2026-02-02 02:25:41 +08:00
BZLZHH
ad7d145ece
[Fix] (MG_Backend/DirectVulkan): Avoid directly using ANativeWindow in abstracted layers.
2026-02-01 00:05:50 +08:00
BZLZHH
516566321d
[Fix] (MG_Backend/DirectVulkan): Fix compiling error on linux.
2026-01-31 23:06:58 +08:00
BZLZHH
7918300848
[Chore] (...): Run scripts.
2026-01-31 22:58:22 +08:00
BZLZHH
00679642d6
[Feat] (MG_Backend/DirectVulkan): Basic Vulkan renderer and EGL impl for Vulkan.
2026-01-31 22:51:24 +08:00
swung0x48
53e4778054
[Fix] (MG_Impl/EGLImpl): fix BindAPI debug log
2026-01-24 19:03:08 +08:00
swung0x48
0a7bd794b5
[Chore] (MG_Impl/EGLImpl): add more logs to EGLWrapper
2026-01-23 11:21:33 +08:00
swung0x48
8c2dd621b6
[Fix] (EGLImpl/EGLWrapper): hardcode binding to EGL_OPENGL_ES_API for now
2026-01-18 22:06:43 +08:00
BZLZHH
20fbfc2956
[Chore] (LICENSE): Switch project license to LGPLv3.
2026-01-18 09:33:33 +08:00
swung0x48
80bb46cbb9
[Fix] (MG_Impl/GetProcAddress, Exporting): properly get proc address, clear reliance on dlsym
2026-01-17 09:19:38 +08:00
swung0x48
97cbb35dbd
[Feat] (MG_Impl/EGLImpl): Implement eglQueryString
2026-01-14 22:50:40 +08:00
BZLZHH
3714e275ab
[Chore] (All): Update copyright year in source code files.
2026-01-01 00:42:06 +08:00
BZLZHH
e7d9da42dc
[Chore] (All): Adjust copyright declaration.
2025-12-31 21:49:54 +08:00
BZLZHH
8ed8efe347
[Chore] (All): Add standardized source file header and update script.
2025-12-31 15:45:34 +08:00
swung0x48
ffd4ec3408
[Feat] (tracy): initial tracy integration
2025-12-11 17:18:26 +08:00
BZLZHH
bd1056f9c9
[Feat|Fix] (...): Add/Fix lots of stuff, being able not to crash in MC.
2025-10-06 16:08:35 +08:00
BZLZHH
e37dedb72d
[Feat] (...): Basic ability to load GLES/EGL.
2025-10-06 11:47:27 +08:00
swung0x48
445f55af92
[Fix]: guard against dlsym
2025-08-25 20:08:42 +08:00
swung0x48
a19c0a214a
[Chore] (buildsystem): fix compilation and linking on Windows when building 3rdparty from source
2025-08-25 14:53:22 +08:00
BZLZHH
253e14f2c9
[Improvement] (...): Optimize code.
2025-08-10 23:18:01 +08:00
BZLZHH
93ca669929
[Refactor] (All): Restructure include system.
2025-08-09 23:10:34 +08:00
BZLZHH
f928661045
[Feat] (MG_Impl/EGL): Implement a simplified egl temporarily.
2025-07-11 19:16:56 +08:00