swung0x48
|
1e7ecab4db
|
[Fix, Test] (MG_State, BufferObject): land a non-persistent write map's staged bytes into a GPU-resident store at unmap and explicit flush instead of dropping them - SSBO binding and large-store adoption make resident stores reachable through glMapBufferRange, so every per-draw re-initialisation was silently lost
|
2026-09-05 05:36:48 -04:00 |
|
swung0x48
|
81b17c0b75
|
[Test] (ShaderTranspiler, Integration): pin the five reworked shapes - the read-only capture stage through the real link, the seeded carrier's ESSL declaration, the metadata-driven block redeclaration and its decline, the control-stage-less evaluation decline, and a carrier clearing an i64vec4
|
2026-08-28 06:22:12 -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
|
bf9cfb3079
|
[Test] (Integration): PointSizeDemotionScenario - the demoted value chain is client-invisible in both configurations, with pinned per-backend lanes and a log-latch arming guard
|
2026-08-28 06:22:10 -04:00 |
|
swung0x48
|
e1818d497a
|
[Test] (ShaderTranspiler): pin the point-size demotion's shapes - capability stripped, carriers named and located past the program's varyings, byte-identical no-ops, whole-struct-copy decline, and the two new L1 key bits
|
2026-08-28 06:21:31 -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
|
92dc41ebf9
|
[Test] (DirectVulkan, SelfTest): pin the probe's fence-timeout teardown against a fake driver, the never-worse arming refusal, and paused-span patch/instanced counting against an unpaused control
|
2026-08-28 06:19:41 -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
|
0ee3384b22
|
[Fix] (Espryt): land a SubData into an adopted store as a GPU-ordered copy - the in-place coherent write tore the frames still reading the old section bytes
|
2026-08-28 04:50:07 -04:00 |
|
swung0x48
|
ba3f8d6774
|
[Test] (Integration): pin the adopted mesh-arena store - cross-frame SubData visibility, readback identity, and the GPU-written readback
|
2026-08-28 04:19:11 -04:00 |
|
swung0x48
|
3327784fd0
|
[Fix] (Espryt): adopt mesh-arena-sized stores into coherent persistent maps at definition, and stop the flush tiers from re-synchronizing them
|
2026-08-28 04:19:11 -04:00 |
|
swung0x48
|
ff426da3a9
|
[Fix, Test] (MG_State, DirectVulkan): order host writes to an adopted store after recorded GPU work - a SubData issued after a dispatch landed in coherent memory before the deferred dispatch executed, so its increments overwrote the newer bytes; un-skip the DirectVulkan half of the SubData-after-dispatch scenario
|
2026-08-28 03:01:15 -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
|
dd98c450ad
|
[Test] (SelfTest): model the params-before-upload escape so a params-first probe regression reads as a red test
|
2026-08-28 00:22:15 -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
|
bf376b230f
|
[CI] (Integration): rerun the buffer scenarios with the map flush disabled so the upload-ring tier keeps coverage
|
2026-08-28 00:15:15 -04:00 |
|
swung0x48
|
29599dcf90
|
[Fix] (DirectGLES): flush queued buffer ranges through a range-invalidating map first, so a partial write into a busy store is priced by the range
|
2026-08-27 23:54:19 -04:00 |
|
swung0x48
|
734fab9f90
|
[Test] (Integration): scope the SubData-after-dispatch readback case to DirectGLES, naming the DirectVulkan upload-ordering gap it exposed
|
2026-08-27 23:04:52 -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
|
faed498476
|
[Test] (IntegrationTest): shield the packed16 renderbuffer clear from an inherited scissor
|
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
|
f4f3afb0b6
|
[Test] (Integration): pin that a queued SubData survives an immediate readback of a GPU-written buffer
|
2026-08-27 22:19:45 -04:00 |
|
swung0x48
|
a28da07641
|
[Fix] (DirectGLES): queue app buffer updates and flush them through a staged-copy upload ring instead of stalling in glBufferSubData
|
2026-08-27 22:19:44 -04:00 |
|
swung0x48
|
200c21336f
|
[Fix] (Readback): size a cube-face pack buffer by one face, and give a cube view's face its owner layer
|
2026-08-27 22:05:23 -04:00 |
|
swung0x48
|
2c3fc583d5
|
[Test] (Readback): pin the one-face pixel pack buffer and a cube view's per-face layers
|
2026-08-27 21:58:51 -04:00 |
|
swung0x48
|
645a12d8bc
|
[Fix] (Readback): read the cube face a readback names, and let glGetTextureSubImage name one
|
2026-08-27 21:54:47 -04:00 |
|
swung0x48
|
8e6acc5528
|
[Test] (Readback): pin that a cube map's readback answers the face it was asked for
|
2026-08-27 21:54:46 -04:00 |
|
swung0x48
|
525ffe0f14
|
[Test] (Review): pin the inverted override mapping, the probe's controls, and that the pinned-on lane is really armed
|
2026-08-27 21:06:01 -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
|
eab622388f
|
[Test] (TranslationCache): pin the two interface-block location-strip flags as L2 key material
|
2026-08-27 20:07:49 -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
|
90564aa82e
|
[Test] (Review): give the geometry point-size case its own capability probe
|
2026-08-27 15:42:04 -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
|
57635a9198
|
[Test] (Tessellation): unit and headless-GPU coverage for capturing a patch draw's per-vertex payload
|
2026-08-27 15:06:02 -04:00 |
|
swung0x48
|
c19d0f0b75
|
[Fix] (DirectVulkan): mirror gl_PointSize for capture and enable the feature its stages need
|
2026-08-27 15:06:02 -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
|
62695ee3c2
|
[Test] (Review): pin the single-sample sample mask, the completeness-flip sampled set, and the integer multisample placeholders
|
2026-08-27 13:17:56 -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
|
9e52a0b23e
|
[Test] (DirectVulkan): pin the incomplete-default-texture draw, the unbound multisample sampler, and the unwritten redeclared gl_Position
|
2026-08-27 12:52:19 -04:00 |
|
swung0x48
|
9dee53337f
|
[Fix] (DirectVulkan): give an unbound multisample sampler a placeholder, clear a multisample texture through a load-op pass, and plumb glSampleMaski into the pipeline
|
2026-08-27 12:52:19 -04:00 |
|
swung0x48
|
28c5badf8f
|
[Fix] (SPIR-V): keep the entry-point interface consistent when the clip fixup and the XFB position mirror inject through gl_Position
|
2026-08-27 12:52:18 -04:00 |
|
swung0x48
|
01116f7b41
|
[Fix] (DirectVulkan): treat an incomplete sampled texture as unbound in the collect path too, and stop dereferencing a declined texture sync
|
2026-08-27 12:52:18 -04:00 |
|
swung0x48
|
05d627ba2d
|
[Fix] (Xfb): never issue a transform feedback capture-point bind the application did not ask for, and error-check the driver span instead of losing it silently
|
2026-08-27 12:28:32 -04:00 |
|
swung0x48
|
ea5d52f126
|
[Test] (Tessellation): assert the patch-array cross-stage link outright now that the fork pin carries the guard
|
2026-08-27 10:52:00 -04:00 |
|
swung0x48
|
3c70b4fc0f
|
[Fix] (Program): read an API colour index of zero as no override, matching the IO resolver and ProgramInterface
|
2026-08-27 10:52:00 -04:00 |
|
swung0x48
|
b6d6316333
|
[Fix] (Blend): decline a GL_SRC1_* factor on an incapable GLES driver even when blending is off
|
2026-08-27 10:51:59 -04:00 |
|
swung0x48
|
3c9ab5a68f
|
[Test] (Blend): make the dual-source scenario's capability gate skip the case, not just the helper
|
2026-08-27 10:48:22 -04:00 |
|
swung0x48
|
532b5e9cc5
|
[Fix] (Program): let two fragment outputs share a colour number when their colour index differs
|
2026-08-27 10:48:22 -04:00 |
|
swung0x48
|
06605ed0ea
|
[Test] (Tessellation): include the standard headers the link test uses directly
|
2026-08-27 10:48:21 -04:00 |
|
swung0x48
|
e1d5bdc4a5
|
[Fix] (Blend): decline an unsupported dual-source blend instead of throwing through the GL ABI
|
2026-08-27 10:48:21 -04:00 |
|
swung0x48
|
66867a41ba
|
[Fix] (Program): count the tessellation control stage as a transform-feedback capture stage
|
2026-08-27 10:48:20 -04:00 |
|
swung0x48
|
ebff4b21f7
|
[Fix] (Query): tie the two tessellation pipeline-statistics targets to the GL_ARB_tessellation_shader advertisement
|
2026-08-27 10:48:20 -04:00 |
|
swung0x48
|
d4e7378868
|
[Chore] (ShaderTranspiler): pin glslang fork at d89cf443 (patch-array io-resize guard for the evaluation stage)
|
2026-08-27 10:22:37 -04:00 |
|
swung0x48
|
01d20e5c96
|
[Test] (Review): border-colour clamping, a readback across a mip gap, and blending on renderbuffer formats with no exact VkFormat
|
2026-08-27 08:35:06 -04:00 |
|
swung0x48
|
b04c67d9a8
|
[Test] (Review): pin the sampler getter matrix, the shadow-readback refusals, and the proxy and by-name parameter targets
|
2026-08-27 08:35:05 -04:00 |
|
swung0x48
|
685d83e3ec
|
[Fix] (Review): bound a texture readback by the image's mip count, refuse cross-format depth/stencil copies, and probe the renderbuffer's real VkFormat
|
2026-08-27 08:35:05 -04:00 |
|
swung0x48
|
009b140691
|
[Fix] (Review): clamp integer and floating-point border colours to the sampled format's representable range
|
2026-08-27 08:35:05 -04:00 |
|
swung0x48
|
1f44e5bc1d
|
[Fix] (Review): convert every scalar sampler query to the type the caller asked for instead of the other type's bit pattern
|
2026-08-27 08:35:04 -04:00 |
|
swung0x48
|
d9aebcba26
|
[Fix] (Review): refuse a CPU-shadow readback whose layout the pack path cannot produce, and apply the parameter-target rule to proxy and by-name spellings
|
2026-08-27 08:35:04 -04:00 |
|
swung0x48
|
0db666897e
|
[Fix] (DirectGLES): key the border-colour sync memo on the authoritative representation, not just the float one
|
2026-08-27 08:35:03 -04:00 |
|
swung0x48
|
5f445e499f
|
[Test] (Integration): integer border-colour sampling and clear-tex-image on a texture with no level 0
|
2026-08-27 08:35:03 -04:00 |
|
swung0x48
|
c52ebd5bf6
|
[Test] (Texture): pin the border-colour forms, the GL 4.6 conversion pair and the texparameter validation gaps
|
2026-08-27 08:35:02 -04:00 |
|
swung0x48
|
8e072bc793
|
[Fix] (DirectVulkan): answer a texture-image query from the CPU shadow when the texture has no VkImage
|
2026-08-27 08:35:02 -04:00 |
|
swung0x48
|
88ee75be0e
|
[Fix] (DirectVulkan): resolve renderbuffer VkFormats through the shared texture table and police copy size-compatibility
|
2026-08-27 08:35:01 -04:00 |
|
swung0x48
|
0dbb4ceba8
|
[Fix] (DirectVulkan): resolve arbitrary and integer border colours through VK_EXT_custom_border_color, clamped to the sampled format
|
2026-08-27 08:35:01 -04:00 |
|
swung0x48
|
a94b3e0bd5
|
[Fix] (DirectGLES): forward an integer border colour through glTexParameterIiv/glSamplerParameterIiv instead of flattening it to float
|
2026-08-27 08:35:01 -04:00 |
|
swung0x48
|
764b6e044d
|
[Fix] (Texture): reject illegal texparameter targets and sampler enum values, invert the integer border-colour read, and report multisample sampler state as INVALID_ENUM
|
2026-08-27 08:35:00 -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
|
c136384f97
|
[CI] (TraceReplay): keep the rd12-odinlite perf fixture out of the CI matrices until its archive is published
|
2026-08-27 08:23:04 -04:00 |
|
swung0x48
|
1920a3d16f
|
[Test] (Review): pin the composite's linked capture list, the capture-stage rule, and the matrix uniform forms' link check
|
2026-08-27 06:00:54 -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
|
e430e1b3be
|
[Fix] (Texture): give glTexBuffer the sized-format check its TODO deferred and the target-taking forms their own INVALID_ENUM
|
2026-08-27 05:37:18 -04:00 |
|
swung0x48
|
e315d9e798
|
[Test] (GlSpirv): unit and headless-GPU coverage for glShaderBinary, glSpecializeShader and the SPIR_V_BINARY state
|
2026-08-27 05:37:18 -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
|
0e4302b399
|
[Feat] (RenderState): implement glClipControl, glPolygonOffsetClamp and glTextureBarrier instead of stubbing them
|
2026-08-27 05:37:16 -04:00 |
|
swung0x48
|
c9c2dcb42a
|
[Feat] (Query): accept the ARB_pipeline_statistics_query targets and report zero counter bits for them
|
2026-08-27 05:37:15 -04:00 |
|
swung0x48
|
2d938971b9
|
[Fix] (Getter): saturate combined uniform components in 64-bit and answer the missing GL4 state tokens
|
2026-08-27 05:37:15 -04:00 |
|
swung0x48
|
f7e23d5d83
|
[Fix] (DirectVulkan): generate mipmaps for cube-map-array and 1D-array targets, and stop shrinking an array's layer count down the chain
|
2026-08-27 05:37:14 -04:00 |
|
swung0x48
|
02fbb816e9
|
[Fix] (Texture): cube-map-array shape rules on glTexImage3D, GL_TEXTURE_SHARED_SIZE, and the unimplemented glCopyTexSubImage1D/3D
|
2026-08-27 05:37:14 -04:00 |
|
swung0x48
|
0e0882cfc6
|
[Test] (IntegrationTest): read cube faces back through a per-face FBO, which glGetTexImage's face token does not distinguish on DirectVulkan
|
2026-08-27 05:07:38 -04:00 |
|
swung0x48
|
de09646d5e
|
[Fix] (DirectVulkan): one shared attachment layer count for the render pass and the clear key, and direct VkResult checks in the render-pass builder
|
2026-08-27 05:04:44 -04:00 |
|
swung0x48
|
747864777e
|
[Test] (IntegrationTest): pin the layered 3D and cube-map-array attachment shapes and their per-layer routing
|
2026-08-27 04:37:29 -04:00 |
|
swung0x48
|
6fc3504bd9
|
[Fix] (Framebuffer): carry the layered flag through the GL_DEPTH_STENCIL_ATTACHMENT split
|
2026-08-27 04:37:28 -04:00 |
|
swung0x48
|
df1bcdba09
|
[Fix] (DirectVulkan): legal view types for layered 3D/cube attachments, and a real failure channel for the render-pass builder
|
2026-08-27 04:19:06 -04:00 |
|
swung0x48
|
843c61dee1
|
[Chore] (ShaderTranspiler): pin glslang fork at 7e255451 (GL_ARB_cull_distance registration and version-gated availability)
|
2026-08-27 04:01:43 -04:00 |
|
swung0x48
|
c0a3f4cc50
|
[Docs] (Getter): restate the uniform-binding airtightness argument against the per-stage sum, not the combined limit
|
2026-08-27 03:54:17 -04:00 |
|