BZLZHH
6375e07030
[Feat] (Diligent): wire blend/depth/cull render state into state PSO
...
CreatePipelineFromState now reads MG_State render state:
- GL_BLEND enable, blend factors/equations
- GL_DEPTH_TEST enable, depth func, depth write mask
- GL_CULL_FACE enable, cull face mode, front-face winding
All Diligent local tests still pass.
2026-08-18 13:16:55 +08:00
BZLZHH
53cac39d4e
[Test] (Diligent, MG_Test): verify state-driven draw with real MobileGL frontend state
...
Add DrawsFromMobileGLState test that creates a GL 3.2 program, buffer and VAO
through the real frontend, then draws through DiligentRenderer::DrawFromState
and verifies the offscreen pixels.
Also release PSO/vertex buffer before recreation to avoid Diligent debug
assertions about overwriting references.
All 3 Diligent local tests pass on Turnip Adreno 750.
2026-08-18 13:13:10 +08:00
BZLZHH
f6b1ea635b
[Feat] (Diligent, MG_State): add state-driven draw path (VAO/buffer/program to Diligent)
...
DiligentRenderer now has DrawFromState() that:
- reads the current MobileGL program SPIR-V and creates Diligent shaders
- reads the current VAO enabled attributes and packs bound buffer data into
an interleaved vertex buffer
- creates a PSO with the matching input layout and primitive topology
- supports DrawArrays, DrawElements, triangle-fan and line-loop expansion
This is the first real front-end state wiring; it compiles and is used by
GLFunctionsTable DrawArrays/DrawElements, but is not yet covered by a
runtime state-driven test.
2026-08-18 13:08:23 +08:00
BZLZHH
8b2711e32a
[Feat] (Diligent): add dynamic vertex buffer upload path
...
DiligentRenderer can now upload arbitrary vec2 vertex data into a dynamic
vertex buffer and draw it with the existing triangle PSO. The local sanity
test uses this path instead of the hardcoded triangle, verifying buffer
basics on Turnip Adreno 750.
2026-08-18 13:01:29 +08:00
BZLZHH
9776cc8047
[Feat] (Diligent, MG_Backend): wire Clear/Draw/Present into GLFunctionsTable
...
BackendObject_Diligent now exposes real function-table entries backed by the
DiligentRenderer: Clear reads the current GL clear color from MG_State, and
DrawArrays/DrawElements currently render the built-in triangle as a
placeholder until buffer/VAO/program state is connected. Present flushes the
immediate context.
Local Diligent tests still pass on Turnip Adreno 750.
2026-08-18 12:57:06 +08:00
BZLZHH
3b0591e0ba
[Feat] (Diligent): add real offscreen renderer with clear and triangle draw
...
- Add DiligentRenderer: creates an offscreen RGBA8 render target, compiles a
GLSL vertex/pixel shader through Diligent's glslang path, creates a triangle
vertex buffer and pipeline, and supports clear/draw/readback.
- BackendObject_Diligent now owns a DiligentRenderer after device creation.
- Extend local sanity test to clear green, draw a red triangle, and verify
center is red and corner stays green.
- All Diligent local tests pass on Turnip Adreno 750.
2026-08-18 12:54:10 +08:00
BZLZHH
e62f158c22
[Feat] (Diligent, CMake): enable DiligentCore and add initial Diligent/Vulkan backend skeleton
...
- Add MOBILEGL_ENABLE_DILIGENT option; build DiligentCore Vulkan-only after
MobileGL's existing 3rdparty targets so shared glslang/SPIRV-Cross/xxHash
targets are reused instead of duplicated.
- Add BackendType::DiligentVulkan, config parsing, and backend-object switch.
- Add DiligentBackend::BackendObject_Diligent skeleton: creates a Diligent
Vulkan device/context when an adapter is available, advertises GL 3.2 core,
and returns an empty GL function table for now.
- Add local DiligentVulkanSanityTest that compiles/runs on the host (skips
device creation gracefully when no Vulkan adapter is present).
- Fix GLXImpl EGLDisplay member shadowing the X11 Display typedef, exposed by
GCC 16 + Diligent header include order.
2026-08-18 12:42:17 +08:00
swung0x48
7769156cfc
[Fix, Test] (ShaderTranspiler, WGL, TraceReplay): remove subgroup pack quirks and tune iterationRP
2026-08-17 01:55:17 -04:00
swung0x48
0ecfdff4e7
[Fix, Test] (MG_State, MG_Util, DirectVulkan, MG_Test): replay narrow-subgroup reductions correctly
2026-08-16 13:33:01 -04:00
swung0x48
6df5a6137f
[CI] (trace-replay): run iterationRP only on DirectVulkan
2026-08-16 11:09:56 -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
14d3901d30
[Chore, Test] (MG_State, MG_Util, DirectGLES, DirectVulkan): make SPIR-V validation task-local
2026-08-15 22:58:28 -04:00
swung0x48
d4766513e4
[Fix, Test] (DirectVulkan): replay Photon descriptor pressure correctly
2026-08-15 22:35:39 -04:00
swung0x48
72dc7aa6aa
[Chore] (MG_Config, MG_State, MG_Util): gate SPIR-V validation at startup
2026-08-15 22:35:39 -04:00
swung0x48
9d1b280375
[Fix, Test] (MG_Util, MG_Test): rename Photon-conflicting MSL identifiers
2026-08-15 09:40:13 -04:00
swung0x48
8acd885594
[Fix, Test] (DirectVulkan): preserve viewport-index program metadata
2026-08-15 09:40:13 -04:00
swung0x48
10ff5e2b18
[Fix, Test] (DirectGLES, DirectVulkan): advertise indirect draw capabilities accurately
...
- advertise GL_ARB_draw_indirect when supported
- gate GL_ARB_base_instance on complete non-zero firstInstance semantics
- synchronize Driver POST reporting
- add capability and extension-advertisement regression tests
2026-08-15 06:30:44 -04:00
swung0x48
a6e52476f3
[Chore] (CMake): skip embedded SPIRV-Tools executables
2026-08-15 05:48:41 -04:00
swung0x48
0deff52a1b
[Fix, Test] (DirectVulkan, trace-replay): replay quarter-turn surfaces correctly
2026-08-13 06:45:28 -04:00
swung0x48
50fefca959
Merge branch "feat/cts-viewport-array" into dev
2026-08-13 04:57:40 -04:00
swung0x48
42ad62b54c
[Fix, Test] (MG_Util, MG_IntegrationTest): advertise the GL 4.3 VIEWPORT_BOUNDS_RANGE floor on a GLES driver that has no such query, instead of a range admitting no origin
2026-08-13 04:44:23 -04:00
swung0x48
f41403e227
[Feat, Test] (MG_Backend/DirectVulkan, MG_Test, MG_IntegrationTest): rasterize the viewport gl_ViewportIndex selects, instead of collapsing all sixteen onto viewport 0
2026-08-13 04:44:23 -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
92d8f7269b
[Fix] (MG_IntegrationTest): drop the executable bit a copied-in scenario file carried
2026-08-13 04:29:23 -04:00
swung0x48
822e405c77
Merge branch "feat/vk-barrier-layer-ranges" into dev
2026-08-13 04:28:57 -04:00
swung0x48
b8233f9c4e
[Fix, Test] (MG_Backend/DirectVulkan, MG_IntegrationTest): the barrier before every attachment transfer only ever moved layer 0, so a copy off a non-zero layer read a layout nothing had transitioned
2026-08-13 04:01:20 -04:00
Swung0x48
91475a7b6f
Merge branch feat/cts-copyimage-frontend into dev
2026-08-13 03:59:16 -04:00
Swung0x48
cee17025a0
[Test] (MG_Test): pin the plain mutable-texture copy every new validator rule is a new way to reject
2026-08-13 03:17:27 -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
595d140036
Merge branch "feat/cts-copyimage-magma-layers" into dev
2026-08-13 03:11:21 -04:00
swung0x48
b62d1f2078
[Fix, Test] (MG_Backend/DirectVulkan, MG_IntegrationTest): map a layered CopyImageSubData onto the axis each endpoint keeps its slices on, instead of copying slice 0 and calling it done
2026-08-13 02:49:57 -04:00
swung0x48
5e82ff968a
Merge branch "feat/cts-rgb9e5-raw-transfer" into dev
2026-08-13 02:47:18 -04:00
swung0x48
6a80a82dd3
[Fix, Test] (MG_Util, MG_Backend/DirectGLES, MG_Backend/DirectVulkan, MG_Test): a packed texel whose client type already spells its storage word must cross glGetTexImage unencoded, or the RGB9_E5 shared exponent gets canonicalized
2026-08-13 02:41:37 -04:00
swung0x48
f9182a5ca3
Merge branch "fix/cts-copyimage-level-validation" into dev
2026-08-13 02:38:43 -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
38027d21f8
Merge branch "feat/log-level-semantics" into dev
2026-08-13 02:19:26 -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
373aa44dd7
Merge branch "fix/cts-tess-ssbo-crash" into dev
2026-08-13 01:38:58 -04:00
swung0x48
96646df12e
[Fix] (MG_Backend/DirectVulkan): review round - failure diagnostics take MGLOG_E, the once-per-patch-size success note takes MGLOG_D, and the per-draw refusal stays latched
2026-08-13 01:34:57 -04:00
swung0x48
f20b20e643
[Fix, Feat, Test] (MG_Backend/DirectVulkan, MG_Test): synthesize the pass-through tessellation control stage GL gives an evaluation-only program, and refuse the half-tessellated pipeline Mali dereferences null inside
2026-08-13 01:28:35 -04:00
swung0x48
2587814970
Merge branch "feat/cts-image-format-qualifier" into dev
2026-08-12 19:23:51 -04:00
swung0x48
43398e33e8
[Fix, Test] (MG_Util, MG_IntegrationTest): review round - anchor a clone only behind a real definition, decline the atomic-image shape, and say what the software lanes cannot falsify
2026-08-12 19:12:39 -04:00
swung0x48
b7557d6615
[Feat, Fix, Test] (MG_Util, MG_Backend/DirectGLES, MG_IntegrationTest): bake the bound image format into the ESSL a format-less image declaration needs
2026-08-12 18:56:31 -04:00
swung0x48
bce34d7fac
Merge branch "feat/cts-followup-fp64-ds-imgbuf" into dev
2026-08-12 17:56:13 -04:00
swung0x48
f91857266f
[Fix, Test] (MG_Backend/DirectGLES, MG_Test): the tessellation stages never got the flat qualifier an ES linker compares across both sides of every integer interface
2026-08-12 17:50:31 -04:00
swung0x48
49cb1be0fd
[Fix, Test] (MG_Backend/DirectGLES, MG_IntegrationTest): a shader writing a buffer texture through an image unit left the CPU shadow stale, so every map and readback after it saw the old bytes
2026-08-12 17:50:31 -04:00
swung0x48
a51c68bb2c
[Fix, Test] (MG_Util, MG_IntegrationTest): a 64-bit float constant was read as 32 bits, so every comparison against a round double became an epsilon test against zero
2026-08-12 17:50:25 -04:00
swung0x48
1c723a6cfc
Merge branch "feat/cts-image-targets" into dev
2026-08-12 16:52:34 -04:00
swung0x48
44805bfa07
[Fix, Test] (MG_Util, MG_Backend/DirectVulkan, MG_IntegrationTest): adversarial review - the rewritten 1D-array image collided with a module's own 2D-array one and left an invalid duplicate type; pin the component order, keep the subject kinds in a truncated matrix
2026-08-12 16:49:59 -04:00
swung0x48
257fcbfd0b
[Fix, Test] (MG_Util, MG_Backend/DirectVulkan, MG_IntegrationTest): review round - one module parse for the shaders with no 1D-array image, per-kind values the combined case can name, and the invariants two shared buffers rest on
2026-08-12 16:43:29 -04:00