swung0x48
7aa91e8024
[Fix, Test] (DirectGLES, DirectVulkan): narrow GL_DOUBLE vertex arrays to float32 instead of dropping them
2026-08-20 23:54:49 -04:00
swung0x48
dc1fffb041
[Fix, Test] (GLImpl): bound glCopyImageSubData's region against both images
2026-08-20 16:02:08 -04:00
swung0x48
d24d5b5ccd
[Fix, Test] (BackendLoader, DirectGLES, DirectVulkan, GLImpl): answer the layer and viewport-index provoking-vertex conventions from the backend
2026-08-20 15:40:25 -04:00
swung0x48
51883cf1a3
[Fix, Test] (GLState): deliver the GL_MIN_MAP_BUFFER_ALIGNMENT that glGetIntegerv advertises
2026-08-20 15:35:02 -04:00
swung0x48
9bde0e500f
[Merge] (CTS): land the GL43 wave-3 fixes and the DirectVulkan texture-shape repairs
2026-08-20 14:17:20 -04:00
swung0x48
02c9b8a32d
[Fix, Test] (GLImpl, DirectVulkan, MG_IntegrationTest): record glVertexAttribLFormat's state and drop the array at draw
2026-08-20 13:44:44 -04:00
swung0x48
26f02567d7
[Fix, Test] (GLState, GLImpl): reserve an inactive uniform's explicit location and pin the link to GL_MAX_UNIFORM_LOCATIONS
2026-08-20 13:39:38 -04:00
swung0x48
a3dbe234d7
[Fix, Test] (GLImpl, MG_IntegrationTest): answer glGetTexLevelParameter for buffer textures instead of erroring
2026-08-20 13:27:50 -04:00
swung0x48
a991f63899
[Fix] (GLImpl): answer the per-stage GL_MAX_*_SHADER_STORAGE_BLOCKS queries from the backend instead of a fixed 16
2026-08-20 13:16:29 -04:00
swung0x48
1740a8a41a
[Feat, Test] (GLImpl, GLState): implement glBeginConditionalRender and discard the commands GL 4.6 10.9 names
2026-08-20 12:59:22 -04:00
swung0x48
cb155c5b94
[Fix, Test] (GLImpl, ShaderTranspiler): reconcile the compute work-group limits glGetIntegeri_v and glslang advertise
2026-08-20 12:41:01 -04:00
swung0x48
fa2e15c27e
[Fix, Test] (GLImpl): answer GL_IMAGE_FORMAT_COMPATIBILITY_TYPE from glGetTexParameterfv
2026-08-20 11:56:24 -04:00
swung0x48
ee98c453ed
[Fix, Test] (GLImpl): enforce GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS on the bind and indexed-query paths
2026-08-20 11:39:28 -04:00
swung0x48
a9fb7ef0af
[Fix, Test] (GLImpl, GLState): answer GL_ACTIVE_ATOMIC_COUNTER_BUFFERS and implement glGetActiveAtomicCounterBufferiv
2026-08-20 11:23:33 -04:00
swung0x48
6159166d38
[Fix, Test] (GLImpl, ShaderTranspiler): reconcile the atomic-counter limits glGetIntegerv and glslang advertise
2026-08-20 11:20:21 -04:00
swung0x48
042c61fb75
[Fix, Test] (TextureUtil, GLImpl): accept GL_STENCIL_INDEX as a stencil-only texture internal format
2026-08-20 10:49:57 -04:00
swung0x48
a8bebe1a3c
[Fix, Test] (GLImpl, GLState): refuse a compressed texture in glClearTexImage/glClearTexSubImage
2026-08-20 10:44:52 -04:00
swung0x48
afebf38e90
[Fix, Test] (GLImpl): require only the requested level to exist in glGetTexImage
2026-08-20 10:38:29 -04:00
swung0x48
b1774e80be
[Fix, Test] (GLImpl): make copy-image completeness mipmap-aware per GL 4.6 core 8.17
2026-08-20 10:20:34 -04:00
swung0x48
a9b4c47fea
[Fix, Test] (GLImpl): record the specific compressed internalformat in TexImage3D and TexStorage3D
2026-08-20 10:17:55 -04:00
swung0x48
52718ecf84
[Fix, Test] (GLImpl, DirectGLES, DirectVulkan): accept GL_RENDERBUFFER endpoints in glCopyImageSubData
2026-08-20 10:11:38 -04:00
swung0x48
7940a09491
[Fix, Test] (GLImpl, MG_Test): validate glBlitFramebuffer's mask bits, filter enum and LINEAR depth rule
2026-08-20 05:14:11 -04:00
swung0x48
1e8d4661e6
[Fix, Test] (GLImpl, MG_Test): raise a draw's mode INVALID_ENUM before the no-current-program guard
2026-08-20 05:10:38 -04:00
swung0x48
916702629e
[Fix, Test] (GLImpl, MG_Test): validate glFenceSync's condition/flags and glWaitSync's flags/timeout
2026-08-20 05:08:11 -04:00
swung0x48
085eb5835b
[Fix, Test] (GLImpl, MG_State, DirectGLES, MG_Test): separate the transform feedback query counters and prefer the exact CPU count on DirectGLES
2026-08-20 04:58:54 -04:00
swung0x48
f17cb23ea3
[Fix, Test] (GLImpl, DirectGLES): deallocate zero-sized multisample images instead of defining them
2026-08-20 04:15:46 -04:00
swung0x48
f297af7d2b
[Fix] (GLImpl, DirectGLES, DirectVulkan): floor every advertised sample cap and clamp the realised count in the backends
2026-08-20 04:10:45 -04:00
swung0x48
6aed3b08f3
[Fix] (DirectVulkan, GLImpl, MG_State, ShaderTranspiler): second audit round over the remaining memo sites
...
Six more verified defects from the residual memo/cache mechanisms:
- Program resource cache (DirectVulkan reflection): glShaderStorageBlockBinding
deliberately does not bump the backend state version, and the SSO pipeline
composite is unnamed so the by-name in-place patch can never reach its slot -
the composite kept serving pre-rebind SSBO bindings. The cache now keys on the
program's block-binding version; a binding-only change re-applies the overrides
by name instead of re-running spirv-reflect. SetShaderStorageBlockBinding also
gains the equality bail-out its uniform-block sibling has, so the composite
mirror's replay stops churning the version every draw.
- LinkProgram's allowVSOnlyPrograms function-static latch never set its own
initialized flag (dead memo, re-read every call) - and completing it would have
frozen a per-backend capability across re-initialization. Replaced with a fresh
per-link read from the null-checked active backend.
- Query object registry: drained at full library teardown (DestroyAllQueryObjects,
mirroring DestroyAllSyncObjects) - undeleted queries and their backend wrappers
leaked across Destroy/Initialize cycles, stale ids stayed IsQuery == GL_TRUE in
the re-initialized library, and a later delete could hand the old backend's
wrapper to a different backend's DeleteBackendQuery.
- Converted vertex streams and the host-side EBO max-index scan now SyncGpuWrites
before reading the coherent mapping: XFB/SSBO/image writes are merely recorded
at that point, so the conversion read pre-write bytes (the restart-index
rewrite already synced; these two host reads did not).
- Zero-stride converted bindings: both converters rejected stride 0, making the
factory's documented single-element conversion unreachable and silently
dropping every draw using such a binding; the stride is substituted with the
element size for the one-element case.
- DemoteFloat64Pass block relayout: measurement queued into the module eagerly,
so a mid-struct failure left a half-relaid-out block (compacted offsets before
the failing member, 64-bit offsets after) while claiming the block was left
alone. Decoration writes are now collected and committed only when the whole
block measures successfully.
2026-08-19 16:41:28 -04:00
swung0x48
b3794f4e6a
[Feat] (MG_Impl, MG_State, MG_Util, DirectGLES, DirectVulkan, MG_Test): implement ARB_clear_buffer_object correctly
2026-08-16 01:12:28 -04:00
swung0x48
5fbb17f6b9
[Feat, Fix, Test] (MG_State, MG_Impl, MG_Backend, MG_Test): give ARB_viewport_array real 16-element indexed state instead of eight stubs and a viewport-0 echo
2026-08-13 04:44:23 -04:00
Swung0x48
9642ae4d20
[Fix, Test] (MG_Impl/Texture, MG_Backend, MG_Test): copy_image compatibility is texel-block size, and neither backend was told which slice to copy
2026-08-13 03:17:27 -04:00
swung0x48
f37b511fca
[Fix, Test] (MG_Impl/GLImpl, MG_Backend/DirectVulkan, MG_Backend/DirectGLES, MG_Test, MG_IntegrationTest): a glCopyImageSubData to a mipmap level the texture never had is INVALID_VALUE, not a subresource handed to the driver
2026-08-13 02:28:55 -04:00
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
6b6623ae72
[Fix, Test] (MG_Backend, MG_Impl, MG_State): advertise the uniform-block and stencil-texturing strings a 4.0 context hides behind, forward DEPTH_STENCIL_TEXTURE_MODE to both backends, and stop a reserved transform feedback name passing for an object
2026-08-12 15:12:01 -04:00
swung0x48
1b05a84928
[Fix, Test] (MG_State, MG_Backend, MG_Impl, MG_Test): review wave - hand the mapping back instead of renewing it, retire an immutable ES store on respecify, and tag glTexStorage2D levels too
2026-08-12 10:32:39 -04:00
swung0x48
7ccb762936
[Fix, Test] (MG_Impl, MG_Test): a persistently mapped unpack buffer is a legal source for the compressed uploads too
2026-08-12 09:24:57 -04:00
swung0x48
2787d15706
[Fix] (MG_Impl): the compressed sub-image bounds check added two application-supplied ints
2026-08-12 09:19:50 -04:00
swung0x48
9b0ed5b3af
[Fix, Feat, Test] (MG_Impl, MG_Test): a specific compressed internalformat now tags the level it defines, and the compressed sub-image entry points stopped being stubs
2026-08-12 08:52:01 -04:00
swung0x48
3be02abf47
[Fix] (MG_Impl): multisample renderbuffers ignored the integer formats own sample limit
2026-08-12 08:17:11 -04:00
swung0x48
f91d6b676c
[Fix] (MG_Impl): the per-stage atomic-counter-buffer limits answered GL_INVALID_ENUM instead of their zero
2026-08-12 08:12:32 -04:00
swung0x48
46fbd837b3
[Fix, Test] (MG_State, MG_Impl, MG_IntegrationTest): a double uniform initializer no longer reads zero
2026-08-12 06:41:54 -04:00
swung0x48
62a2dae5ba
[Fix, Test] (MG_Impl, MG_State, MG_IntegrationTest): glUniform*d stores what the demoted shader reads
2026-08-12 06:20:11 -04:00
swung0x48
2fced2241b
[Fix, Test] (MG_Util, MG_State, MG_Backend): the GL 4.3 vertex binding model - array vertex inputs, zero binding strides, instance divisors, and formats ES refuses
2026-08-12 05:36:00 -04:00
swung0x48
7625cf450d
[Fix, Test] (MG_Impl, MG_IntegrationTest): a block count may not exceed its binding points, and an atomic-counter buffer size must survive division by them
2026-08-12 02:38:04 -04:00
swung0x48
450eb209b6
[Fix, Test] (MG_State, MG_Impl): the program interface of a separable program is its own first and last stage, not vertex and fragment
2026-08-12 02:38:04 -04:00
swung0x48
8c5c39b3c3
[Feat, Test] (MG_Impl): glBindTextures and glBindImageTextures were no-op stubs while GL_ARB_multi_bind was advertised
2026-08-12 02:38:03 -04:00
swung0x48
ff324057ad
[Fix, Perf, Test] (MG_State, MG_Impl/GLImpl, MG_Test, MG_IntegrationTest): a pipeline composite mirrors only the uniforms a stage was written to, and survives a sampler or block rebinding
2026-08-11 23:11:13 -04:00
swung0x48
6dd0201bf2
[Fix, Test] (MG_Impl/GLImpl): an indexed buffer SIZE query reports the range that was asked for, not what the buffer currently holds
2026-08-11 20:43:28 -04:00
swung0x48
94e75fef79
[Fix, Test] (MG_State, MG_Impl): glIsProgramPipeline answers for the first bind, not for the materialization every pipeline command now does
2026-08-11 20:10:18 -04:00
swung0x48
43bcd03dca
[Fix] (MG_Backend/DirectVulkan, MG_Impl): a malformed graphics pipeline shape skips the draw instead of faulting inside the driver
2026-08-11 20:10:18 -04:00