Swung 0x48 swung0x48
  • Joined on 2026-07-03
swung0x48 synced new reference refs/heads/feat/wgl-host to swung0x48/MobileGL from mirror 2026-07-26 21:54:22 +09:00
swung0x48 synced commits to refs/heads/feat/wgl-host at swung0x48/MobileGL from mirror 2026-07-26 21:54:22 +09:00
swung0x48 synced commits to refs/heads/sfpew at swung0x48/MobileGL from mirror 2026-07-26 13:44:21 +09:00
199164c2e0 [Perf] (DirectGLES): route the per-upload GL_PIXEL_UNPACK_BUFFER unbinds through the unpack binding cache - the six texture-upload sites re-issued glBindBuffer(UNPACK, 0) on every upload; with the resting-0 shadow they now no-op after the first
e87063e90c [Fix] (DirectGLES): route default-framebuffer binds through the FBO-binding shadow - the raw glBindFramebuffer(0) in BindCurrentFBO/SyncAndBindFramebufferObject left the shadow claiming the previous user FBO, false-skipping its next re-bind and letting scoped guards restore a stale binding (caught by adversarial review); also scrub buffer-binding shadows when VAO client-attribute staging buffers are deleted, include cube-map arrays in the pack-image-params gate, and make the delete-recording test hook assertion-unwind safe
122da27249 [Fix] (DirectGLES): overhaul readback/copy/blit driver-state handling with shadow-backed RAII guards - pixel-PACK/UNPACK PBO binding caches resting at 0 (the old bind-then-query 'restore' left the user PBO bound forever, capturing later client-memory readbacks), a PACK pixel-store shadow replacing per-readback glGetIntegerv syncs, a driver FBO-binding shadow behind all scoped binders (per-instance prev slots, nest-safe), scratch-FBO attachment shadows that detach cross-aspect residue exactly when present (depth CopyTex* attachments used to wedge later GetTexImage color reads and vice versa), scissor guards around emulation blits (app scissor clipped depth copies), stale-driver-error drains before single-shot glGetError consumers (fallbacks silently dropped readbacks / GenerateMipmap raised phantom app errors in production builds), ClearBufferiv missing BindCurrentFBO(Draw), cube-face glBindTexture INVALID_ENUM cache poisoning, per-slice GL_PACK_IMAGE_HEIGHT/SKIP_IMAGES semantics on 3D GetTexImage, backend texture ids deleted on wrapper destruction with cache/scratch-FBO scrubs (ids used to leak for the context lifetime and dangling cache pointers could false-skip binds), and context-death/MakeCurrent invalidation for all new shadows; regression tests drive the shadows against a recording mock GLES table
bc2d698b3e [Fix] (DirectGLES): apply the read buffer when one FBO is bound as both draw and read
3049c4b82b [Fix] (ShaderTranspiler): stop blanking block comments in the source handed to glslang
Compare 5 commits »
swung0x48 synced commits to refs/heads/dev at swung0x48/MobileGL from mirror 2026-07-22 11:44:22 +09:00
199164c2e0 [Perf] (DirectGLES): route the per-upload GL_PIXEL_UNPACK_BUFFER unbinds through the unpack binding cache - the six texture-upload sites re-issued glBindBuffer(UNPACK, 0) on every upload; with the resting-0 shadow they now no-op after the first
e87063e90c [Fix] (DirectGLES): route default-framebuffer binds through the FBO-binding shadow - the raw glBindFramebuffer(0) in BindCurrentFBO/SyncAndBindFramebufferObject left the shadow claiming the previous user FBO, false-skipping its next re-bind and letting scoped guards restore a stale binding (caught by adversarial review); also scrub buffer-binding shadows when VAO client-attribute staging buffers are deleted, include cube-map arrays in the pack-image-params gate, and make the delete-recording test hook assertion-unwind safe
122da27249 [Fix] (DirectGLES): overhaul readback/copy/blit driver-state handling with shadow-backed RAII guards - pixel-PACK/UNPACK PBO binding caches resting at 0 (the old bind-then-query 'restore' left the user PBO bound forever, capturing later client-memory readbacks), a PACK pixel-store shadow replacing per-readback glGetIntegerv syncs, a driver FBO-binding shadow behind all scoped binders (per-instance prev slots, nest-safe), scratch-FBO attachment shadows that detach cross-aspect residue exactly when present (depth CopyTex* attachments used to wedge later GetTexImage color reads and vice versa), scissor guards around emulation blits (app scissor clipped depth copies), stale-driver-error drains before single-shot glGetError consumers (fallbacks silently dropped readbacks / GenerateMipmap raised phantom app errors in production builds), ClearBufferiv missing BindCurrentFBO(Draw), cube-face glBindTexture INVALID_ENUM cache poisoning, per-slice GL_PACK_IMAGE_HEIGHT/SKIP_IMAGES semantics on 3D GetTexImage, backend texture ids deleted on wrapper destruction with cache/scratch-FBO scrubs (ids used to leak for the context lifetime and dangling cache pointers could false-skip binds), and context-death/MakeCurrent invalidation for all new shadows; regression tests drive the shadows against a recording mock GLES table
bc2d698b3e [Fix] (DirectGLES): apply the read buffer when one FBO is bound as both draw and read
Compare 4 commits »
swung0x48 synced commits to refs/heads/dev at swung0x48/MobileGL from mirror 2026-07-21 19:24:21 +09:00
3049c4b82b [Fix] (ShaderTranspiler): stop blanking block comments in the source handed to glslang
2b3850b76b [Fix] (DirectGLES): upload RGB565/RGB5_A1 shadow data as packed 16-bit types
2a0ae743a0 [Fix] (DirectGLES): glFinish before the glGetTexImage temp-FBO readback
6839219c10 [Fix] (GLImpl): report GL_NO_ERROR from glGetGraphicsResetStatus
52ddb440ca [Feat] (SelfTest/DriverPost): add a noperspective correctness check to the GLES POST - render a strong-perspective quad and read the centre texel to verify the varying interpolates screen-linear (not perspective-correct), carried through the native GL_NV_shader_noperspective_interpolation path when present or MobileGL's exact gl_Position.w/gl_FragCoord.w emulation when absent. PASS = native and correct; WARN = emulated and correct (the fallback path shipping packs hit on such devices); FAIL = interpolation wrong/perspective-correct, or the program will not build. The ESSL header matches the device version because noperspective is rejected at #version 300 es on some drivers even with the extension enabled
Compare 5 commits »
swung0x48 synced commits to refs/heads/feat/post-noperspective-check at swung0x48/MobileGL from mirror 2026-07-21 19:24:21 +09:00
swung0x48 synced new reference refs/heads/feat/post-noperspective-check to swung0x48/MobileGL from mirror 2026-07-21 19:24:21 +09:00
swung0x48 synced commits to refs/heads/feat/cts-wave6-noperspective-emul at swung0x48/MobileGL from mirror 2026-07-21 19:24:21 +09:00
swung0x48 synced new reference refs/heads/feat/cts-wave6-noperspective-emul to swung0x48/MobileGL from mirror 2026-07-21 19:24:21 +09:00
swung0x48 synced commits to refs/heads/feat/cts-wave5-noperspective at swung0x48/MobileGL from mirror 2026-07-21 19:24:21 +09:00
swung0x48 synced new reference refs/heads/feat/cts-wave5-noperspective to swung0x48/MobileGL from mirror 2026-07-21 19:24:21 +09:00
swung0x48 synced commits to refs/heads/feat/cts-wave1 at swung0x48/MobileGL from mirror 2026-07-21 11:14:22 +09:00
e724e88eec [Fix] (MG_State, MG_Impl/GLImpl): allocating a mipmap level no longer truncates the chain above it - AllocateLevel now only grows and the callers that genuinely redefine the whole level set (glTexStorage*, mip regeneration, multisample storage, level-0 respecification) drop the tail explicitly
3b175fb88a [Fix] (MG_Impl/GLImpl): a multisample sample count above the format's maximum is INVALID_OPERATION, not INVALID_VALUE - matching both the spec and the native Adreno driver
b5a4e7075a [Fix] (MG_Impl/GLImpl): record a GL error from the unimplemented compressed texture entry points instead of throwing - a C++ exception unwinding through the C GL ABI hard-crashes any caller, and glGetCompressedTexImage reported success while writing nothing
520c2b6750 [Fix] (MG_Backend/DirectGLES): sync GL_TEXTURE_SWIZZLE_* on multisample targets - the early return meant to skip the sampler-only parameters dropped every swizzle write, which the frontend already treats as legal on those targets
57cc652b1d [Fix] (MG_Impl/GLImpl): glIsTransformFeedback reports GL_FALSE instead of claiming every name it is handed is a live transform feedback object
Compare 5 commits »
swung0x48 synced commits to refs/heads/feat/cts-wave3 at swung0x48/MobileGL from mirror 2026-07-21 11:14:22 +09:00
swung0x48 synced commits to refs/heads/feat/cts-wave2 at swung0x48/MobileGL from mirror 2026-07-21 11:14:22 +09:00
6eb5ff51c5 [Fix] (MG_Impl/GLImpl): reject the RGTC internal formats on 3D texture targets - RGTC compresses 4x4 blocks of a 2D image and has no 3D form, and the check must run on the raw enum because RGTC now resolves to plain R8/RG8 storage
e526f8e8ac [Fix] (MG_Util/Converters): resolve the GL_COMPRESSED_* internal formats to the uncompressed storage that backs them instead of rejecting them as unknown - GL prescribes this base-format fallback for the six generic formats, and RGTC stores uncompressed because ES exposes no compressor
e724e88eec [Fix] (MG_State, MG_Impl/GLImpl): allocating a mipmap level no longer truncates the chain above it - AllocateLevel now only grows and the callers that genuinely redefine the whole level set (glTexStorage*, mip regeneration, multisample storage, level-0 respecification) drop the tail explicitly
3b175fb88a [Fix] (MG_Impl/GLImpl): a multisample sample count above the format's maximum is INVALID_OPERATION, not INVALID_VALUE - matching both the spec and the native Adreno driver
b5a4e7075a [Fix] (MG_Impl/GLImpl): record a GL error from the unimplemented compressed texture entry points instead of throwing - a C++ exception unwinding through the C GL ABI hard-crashes any caller, and glGetCompressedTexImage reported success while writing nothing
Compare 5 commits »
swung0x48 synced commits to refs/heads/dev at swung0x48/MobileGL from mirror 2026-07-21 11:14:22 +09:00
b6a7807a3a [Fix] (MG_Util/ShaderTranspiler): reject malformed #version directives instead of legalizing them - an unrecognized version number (329/331), a bad profile keyword, a float or trailing token used to be rewritten to "#version 330 core" (or rescued to 460 by the retry); now InspectShaderLanguage marks such directives invalid so NormalizeVersionDirective and RetargetLegacyVersionDirectiveTo460 leave them for glslang to reject, while every valid version still normalizes as before
48ba622387 [Fix] (MG_Util/ShaderTranspiler): keep #line directives instead of deleting them, dropping only the GLSL-illegal quoted filename and the ones that precede #version, so __LINE__ and compiler diagnostics follow the application's own numbering
05260d1262 [Fix] (MG_Util/ShaderTranspiler): blank block comments lexically instead of erasing them - a '//*** banner ***' line opened a comment the old scanner never closed, so it deleted the rest of the shader, and a commented-out builtin definition renamed every genuine call to a name nothing defines
6eb5ff51c5 [Fix] (MG_Impl/GLImpl): reject the RGTC internal formats on 3D texture targets - RGTC compresses 4x4 blocks of a 2D image and has no 3D form, and the check must run on the raw enum because RGTC now resolves to plain R8/RG8 storage
e526f8e8ac [Fix] (MG_Util/Converters): resolve the GL_COMPRESSED_* internal formats to the uncompressed storage that backs them instead of rejecting them as unknown - GL prescribes this base-format fallback for the six generic formats, and RGTC stores uncompressed because ES exposes no compressor
Compare 5 commits »
swung0x48 synced commits to refs/heads/feat/cts-wave4 at swung0x48/MobileGL from mirror 2026-07-21 11:14:22 +09:00
swung0x48 synced new reference refs/heads/feat/cts-wave4 to swung0x48/MobileGL from mirror 2026-07-21 11:14:22 +09:00
swung0x48 synced new reference refs/heads/feat/cts-wave3 to swung0x48/MobileGL from mirror 2026-07-21 11:14:22 +09:00
swung0x48 synced commits to refs/heads/feat/cts-wave2 at swung0x48/MobileGL from mirror 2026-07-21 03:04:21 +09:00
swung0x48 synced new reference refs/heads/feat/cts-wave2 to swung0x48/MobileGL from mirror 2026-07-21 03:04:21 +09:00