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
swung0x48
06744fde7f
[Fix] (Getter): close the review findings - six-stage combined uniform blocks, bounded uniform-block bindings, honest vertex-stream count, per-format sample ceilings
2026-08-27 03:54:16 -04:00
swung0x48
6cc9faf772
[Feat] (Program): report the geometry and tessellation link properties glGetProgramiv had no source for
2026-08-27 03:49:38 -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
d52a3b2196
[Test] (IntegrationTest): sample-shading state reaches both backends without disturbing the draw
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
f1354dc25e
[Fix] (DirectVulkan): hash the sample-shading state into the pipeline memo key
2026-08-27 03:35:56 -04:00
swung0x48
b7a694711a
[Test] (IntegrationTest): gl_NumSamples scenario - the value must follow the draw framebuffer, not the link
2026-08-27 03:35:56 -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
acf86d1fb6
[Feat] (RenderState): implement glMinSampleShading and the GL_SAMPLE_SHADING enable on both backends
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
8cf2e2aea9
[Fix] (Getter): answer GL_PATCH_DEFAULT_*_LEVEL from the float state in glGetBooleanv and write every component in glGetInteger64v
2026-08-27 03:18:15 -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
e3163233a5
[Fix] (Framebuffer): apply the glFramebufferTexture error conditions to the 2D/3D/Layer attach paths and bound a view by its own level count
2026-08-27 03:18:12 -04:00
Swung0x48
eb9e4fdac1
[Fix] (DirectVulkan): report the index the arbitrary-restart rewrite cannot represent instead of silently drawing a different vertex
2026-08-27 03:18:10 -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
e69e939d1a
[Fix] (ProgramLink): fail the link when a tessellation control stage declares more output vertices than GL_MAX_PATCH_VERTICES
2026-08-27 02:11:23 -04:00
Swung0x48
b675e2a0b0
[Fix] (Drawing): refuse a draw whose program runs a geometry or tessellation stage with no vertex shader
2026-08-27 02:11:21 -04:00
Swung0x48
6979926a6f
[Fix] (Framebuffer): the four glFramebufferTexture error conditions the DSA sibling already implemented
2026-08-27 02:11:20 -04:00
Swung0x48
d5286e69b6
[Feat] (Tessellation): implement glPatchParameterfv and bake the default levels into both pass-through control stages
2026-08-27 02:11:19 -04:00
Swung0x48
0f2fcbc469
[Fix] (Backend): honour desktop GL_PRIMITIVE_RESTART with an arbitrary index instead of throwing through the C GL ABI
2026-08-27 02:11:18 -04:00
swung0x48
18fccdd796
[Feat] (Backend): advertise OpenGL 4.6 (target version + OpenGL44/45/46 tokens) on both backends
2026-08-26 23:48:36 -04:00
swung0x48
0d2fceab0e
[Docs] (DeviceBench): note session.sh leaves frequency pins active by design
2026-08-26 05:52:34 -04:00
swung0x48
82decded58
[Test] (TraceReplay): minecraft-1.21.4-rd12-odinlite-in-world perf fixture (campaign benchmark scene)
2026-08-26 05:52:33 -04:00
swung0x48
d04a3394de
[Feat] (DeviceBench): launch retry loop (signal-34 JVM flake), session.sh runner, MSYS path-conversion guards
2026-08-26 05:52:32 -04:00
swung0x48
33eabfc2ff
[Perf] (DirectGLES): upload the union dirty box instead of scatter rects when staging through the unpack ring (each PBO-sourced glTexSubImage is a GPU copy job on Mali; ~100 sprite rects per tick cost +6ms/frame of GPU time)
2026-08-26 05:52:31 -04:00
swung0x48
56e5d13dc9
[Perf] (DirectGLES): stage glTexSubImage uploads through a persistent-mapped unpack PBO ring (Mali blocks the render thread on in-flight destination textures)
2026-08-26 05:52:30 -04:00
swung0x48
34b7cc772f
[Fix] (Build): compile fordebug native code as RelWithDebInfo (debuggable APK was shipping an -O0 libMobileGL.so, invalidating all performance measurements on this flavor)
2026-08-26 02:18:47 -04:00
swung0x48
c1d6a3c908
[Feat] (TraceReplay): benchmark mode with per-frame timing for device fixtures
2026-08-26 02:17:35 -04:00
swung0x48
386bd7e461
[Feat] (DeviceBench): scripted in-game FPS benchmark harness (FCLFPS logcat sampling, MTK ppm frequency pinning, thermal gate, GPU busy telemetry)
2026-08-26 01:51:04 -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
b3100b0de5
[Fix] (DirectGLES): take the layered-blit substitute's colour destination from the draw buffer that is actually enabled, and leave self-overlapping copies alone
2026-08-25 05:38:12 -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
5398fb4289
[Fix] (IntegrationTest): report the backend that actually comes up when MOBILEGL_BACKEND_TYPE is unset
...
HeadlessGL reported the literal "<unset>" as the backend name when the variable was
not set, while MG_ConfigLoader::InitBackendType defaults it to DirectGLES and brought
DirectGLES up. Every ctest entry sets the variable through its ENVIRONMENT property,
which is why nothing ever noticed - but run straight from an adb shell, where nothing
sets it, the name matched neither backend and every case gated on DirectGLES skipped
as though DirectGLES were not running. On an Adreno 830 that silently disabled the
gl_ViewportIndex emulation control and the DirectGLES-only attachment scenarios.
2026-08-25 04:52:21 -04:00