swung0x48
9eae98581f
[Test] (SelfTest, POST): probe upload/draw ordering in persistently mapped vertex arenas - native GLES controls distinguish mapped destination corruption from staging and synchronization failures
...
Add the persistent buffer ordering probe to the GLES POST's known-driver-bug inventory. Queue updates and draws into independent FBOs before reading them back, covering SubData and copies from both coherent persistent and ordinary staging buffers. Retry fresh mapped allocations for intermittent corruption.
Require passing never-mapped and fully serialized controls before reporting a finding. Include finish-before, map-then-unmap and barrier diagnostics, preserve caller GL state, and treat setup, allocation and GL errors as inconclusive. This adds detection and reporting only; no rendering workaround is enabled.
Validation: all 46 DriverBugProbesTest tests pass, including 11 new ordering, control, collector and cleanup cases. The Android API 26 / NDK 27 native probe detects all three upload paths on Mali-G1-Ultra r54p1 with clean controls and no GL errors. llvmpipe reports no finding after 240 mapped FBO checks per upload path.
2026-09-07 00:44:08 -04:00
swung0x48
795e08f7e6
[Fix, Test] (ShaderTranspiler): flatten fp64 storage blocks whose last member is a runtime array - the pass declined them, so the fp64 demotion re-derived ArrayStride 4 over the application's 8/16/32-byte double buffer and every double/dvecN data[] SSBO read raw words
2026-09-05 05:36:49 -04:00
swung0x48
d1edf765f5
[Fix] (Link, Async): carry the resolved gl_PointSize capture request into the SPIR-V handoff and let a deferred verdict name its own severity - the demotion read the request off a reflection slice phase A never fills it into, so its forced carrier was dead code, and its decline reason replayed at a level no shipped build keeps
2026-08-28 06:22:12 -04:00
swung0x48
97e07190ac
[Fix] (ShaderTranspiler): seed a forced point-size carrier nothing writes and decline a control stage whose live clip/cull distance would still print gl_PointSize - an ES front end deletes a never-written output, and SPIRV-Cross redeclares that block from member decorations rather than access
2026-08-28 06:22:11 -04:00
swung0x48
a4dcdf989e
[Fix] (ShaderTranspiler): stop the point-size carrier landing on a location a live varying owns, and decline the evaluation stage a synthesized pass-through control stage cannot feed - an i64vec4 counted as one location, and a located input carrier trips both backends' pass-through guard
2026-08-28 06:22:11 -04:00
swung0x48
1c113e4b26
[Fix] (ShaderTranspiler): count a 64-bit integer vector as two locations in the XFB flattener's LocationSpan - it read 64-bitness off the element's float type alone, so an i64vec3/4 member packed the members after it onto locations it already owns
2026-08-28 06:22:11 -04:00
swung0x48
d7f66722d1
[Fix] (ShaderTranspiler, Link, DirectGLES, DirectVulkan): demote tessellation/geometry gl_PointSize to an ordinary varying where the device cannot host the built-in - the value survives for gl_in reads and by-name capture, both backends' declines stay for shapes the pass refuses, and the verdict rides the L1 key
2026-08-28 06:21:30 -04:00
swung0x48
feea131d8b
[Fix] (DirectVulkan, SelfTest): honour the primitives-generated probe's leak-on-timeout contract in both of its callers, count paused-span draws the frontend cannot price, refuse a substitute measured worse than the stream query, and derive the POST row's failure clause from the measurement
2026-08-28 06:19:40 -04:00
swung0x48
19f4402fbf
[Test] (DirectVulkan): pin the primitives-generated probe's verdict and override mapping, and hold the reroute's GL answers and arming observable on the integration lane
2026-08-28 06:19:40 -04:00
swung0x48
1350031368
[Fix] (DirectVulkan): count GL_PRIMITIVES_GENERATED for transform-feedback-inactive draws - a bring-up probe measures the silent stream query and reroutes such draws through the dedicated primitives-generated query or a clipping-statistics pool, reported from the Vulkan POST
2026-08-28 06:19:39 -04:00
swung0x48
08419a1fe6
[Chore] (Config): point the two stale comments at the renamed feature fields
2026-08-28 00:47:35 -04:00
swung0x48
5d51372c44
[Chore] (Config): triage backend-scoped env toggles under MOBILEGL_ESPRYT_ and MOBILEGL_MAGMA_ prefixes
2026-08-28 00:38:17 -04:00
swung0x48
7fd4550968
[Fix] (Espryt): copy before any FBO attach in the packed16 probe - attaching the array relayouts it to the plain order and was neutralizing the subject
2026-08-28 00:22:16 -04:00
swung0x48
971537058e
[Fix] (Espryt): probe every allocation recipe of the packed16 shape - the Mali layout heuristic inverts between contexts, so one recipe cannot speak for the storage
2026-08-28 00:22:16 -04:00
swung0x48
5dbbbbd7eb
[Fix] (Espryt): allocate the packed16 probe's textures uploads-first, the order a minted backend texture performs and the one the Mali layout choice keys on
2026-08-28 00:22:15 -04:00
swung0x48
5d140a41ce
[Fix] (Espryt): re-arm the packed16 probe on the allocation-scoped mirror the device actually has and let any mirrored level trigger the widening
2026-08-28 00:22:15 -04:00
swung0x48
2cd1809c29
[Fix] (Review): rebuild the packed16 probe on the CTS's three-level chains and let the POST row answer for the widening knob actually in force
2026-08-27 22:46:13 -04:00
swung0x48
8282eecbfa
[Fix] (Espryt): store RGB565/RGB5_A1/RGBA4 as 8-bit channels where a POST probe measures the Mali packed16 array-mip field-order mirror
2026-08-27 22:46:12 -04:00
swung0x48
ad28d2b744
[Fix, Test] (Review): strip a block's member-level locations too, restore the probe's colour mask, and let the POST verdict follow the override
2026-08-27 20:15:31 -04:00
swung0x48
75e573c923
[Fix] (SelfTest): give the located-interface-block probe its own entry-point gate instead of the storage probe's
2026-08-27 19:56:26 -04:00
swung0x48
0d0ef13619
[Fix] (DirectGLES): run the interface-block location strip last, where its deliberately Vulkan-invalid module reaches no validator
2026-08-27 19:44:18 -04:00
swung0x48
23565fcacd
[Fix, Test] (DirectGLES, SelfTest, MG_Test): probe the located-interface-block defect with its controls and cover the strip in both gates
2026-08-27 19:38:39 -04:00
swung0x48
5dc26e3e2c
[Fix] (DirectGLES, ShaderTranspiler): drop the location qualifier from inter-stage interface blocks on a driver that loses their payload
2026-08-27 19:18:35 -04:00
swung0x48
7520607d47
[Fix] (Review): decline a point-size program the device cannot run, bound the compile-failure source dump, and correct the pass-through rationale
2026-08-27 15:42:04 -04:00
swung0x48
e42e7d00f5
[Fix] (DirectGLES): request the point-size extension a tessellation or geometry stage's ESSL needs
2026-08-27 15:06:01 -04:00
swung0x48
02cc0ce83c
[Fix] (Review): scope the sample mask to a multisample target, version the sampled-set memo on completeness, clamp the mask word count, give the multisample placeholder every numeric domain, unwind the fixup revert one pass at a time, and bound the validator log
2026-08-27 13:03:51 -04:00
swung0x48
c1d89de729
[Fix] (Sampler): carry GL_TEXTURE_BORDER_COLOR with its form, convert per GL 4.6 eq 2.2/2.3, and unify the name and scalar-pname error classes
2026-08-27 08:35:00 -04:00
swung0x48
11f4b4bd3b
[Fix] (Review): honour a SPIR-V module's transform-feedback decorations, take the composite's capture list from the linked snapshot, and reorder every glProgramUniformMatrix* link check
2026-08-27 05:56:45 -04:00
swung0x48
9ef33f4274
[Fix] (Review): bound copies by the requested level, reach every cube face, keep array layer counts, and give glSpecializeShader its spec error surface
2026-08-27 05:51:58 -04:00
swung0x48
6f299372c6
[Feat] (Program): implement GL_ARB_gl_spirv - glShaderBinary, glSpecializeShader and the SPIR_V_BINARY state, feeding the module into the ordinary compile pipeline
2026-08-27 05:37:17 -04:00
swung0x48
be7bf21eb8
[Fix] (ShaderTranspiler): enforce the layout(binding) range rule for samplers, images and uniform/atomic-counter blocks, not only for SSBOs
2026-08-27 05:37:17 -04:00
swung0x48
7168f2ef77
[Fix] (Getter): answer the GL 4.6 limit surface honestly - tess/cull/subroutine pnames, TBuiltInResource drift, 84 UBO binding points, 64-bit GL_MAX_ELEMENT_INDEX, per-category sample truth
2026-08-27 03:47:16 -04:00
swung0x48
07669aacd4
[Fix] (ShaderTranspiler): fan #extension implications out to both new gates and bound the mid-line #version probe to its line
2026-08-27 03:35:58 -04:00
swung0x48
9e23016dd4
[Perf] (ShaderTranspiler): memchr the mid-line #version scan and gate it on an accepted directive
2026-08-27 03:35:57 -04:00
swung0x48
2ae848ca19
[Fix] (ShaderTranspiler): route restored ES extension macros through glslang's custom preamble and detect a mid-line repeated #version
2026-08-27 03:35:55 -04:00
swung0x48
07a0408a28
[Fix] (ShaderTranspiler): lower gl_NumSamples onto a reserved global-UBO uniform, restore ES preamble extension macros, tolerate a repeated #version
2026-08-27 03:35:47 -04:00
Swung0x48
31252cf0da
[Fix] (Tessellation): bound the pass-through control-stage cache and stop baking "draw nothing" for levels GL clamps
2026-08-27 03:18:14 -04:00
Swung0x48
2635fe84b6
[Fix] (Tessellation): compare the default patch levels by bit pattern, so a NaN level stops re-linking the program on every draw
2026-08-27 03:18:13 -04:00
Swung0x48
90b7a689c5
[Fix] (Backend): resolve primitive restart per draw - never for a non-indexed one, and never on an index the type cannot hold
2026-08-27 03:18:09 -04:00
swung0x48
12df061e0b
[Test] (SelfTest): model the vertex-input-location and layered-blit defects in the fake driver and pin both probes' controls
2026-08-25 05:57:58 -04:00
swung0x48
d83a48da5c
[Fix] (SelfTest): read the probe-saved texture bindings off the same unit the restore puts them back on
2026-08-25 05:40:08 -04:00
swung0x48
1cde801a01
[Fix] (DirectGLES): blit onto a non-zero array layer with glCopyImageSubData where the driver ignores the destination layer
2026-08-25 05:27:46 -04:00
swung0x48
52c050131e
[Fix] (DirectGLES): advertise the vertex attributes whose layout(location) the driver's compiler will actually accept
2026-08-25 05:21:50 -04:00
swung0x48
ebb8a4cebf
[Fix] (DirectGLES, DirectVulkan): answer GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT with the storage limit, not the uniform one
2026-08-25 05:21:42 -04:00
swung0x48
06bbaf32b1
[Merge] (GLImpl, DirectGLES, DirectVulkan): take the extension advertisements under the DSA completion
2026-08-22 22:42:47 -04:00
swung0x48
dc543fa905
[Feat, Test] (DirectGLES, DirectVulkan, SelfTest): advertise the implemented extensions that were never named
2026-08-22 21:54:17 -04:00
swung0x48
48968a663f
[Fix, Test] (GLImpl, Util): let a buffer clear take a GL_INT pattern into a normalized format
2026-08-22 21:49:26 -04:00
swung0x48
6a8bf4c03c
[Fix, Test] (DirectVulkan): resolve a lowered atomic-counter block from the atomic-counter binding points
2026-08-22 21:45:13 -04:00
swung0x48
88be35c9ba
[Fix, Test] (Util): widen a three-channel 16-bit texture to its same-width four-channel sibling
2026-08-22 12:41:18 -04:00
swung0x48
0eb5d54bb8
[Fix, Test] (GLState, ShaderTranspiler): report GL's default binding of zero for an unqualified uniform block
2026-08-22 12:41:18 -04:00