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
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
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
swung0x48
7f2ca68615
[Test] (IntegrationTest): take the shader-compiler and viewport quirks from the environment instead of internal symbols
...
Android links this module against the SHIPPING libMobileGL.so on purpose, so the
on-device run validates the real artifact - and that library is -fvisibility=hidden.
Six symbols the scenarios reached for were therefore undefined and the executable
could not be linked at all: MG_Config::Features, SetAsyncShaderCompileSuspended,
ShaderCompilePool::Get/GetThreadCount/SetMaxConcurrency and
AsyncShaderCompileEnabled. All six are gone rather than exported.
CompilerThreadScope now restores the pool with glMaxShaderCompilerThreadsKHR
(0xFFFFFFFF), which MaxShaderCompilerThreadsKHR_State defines as exactly the two
steps it used to perform by hand, and AsyncAndSyncProgramsRenderIdenticalFrames
picks its two modes with the same entry point - a zero count compiles inline, a
nonzero one lifts that - so the switching is now itself under test.
ExtensionStringMatchesTheConfiguration stops deriving its expectation from
AsyncShaderCompileEnabled(), the very function the backends gate the extension
string on: it was asserting the implementation against itself and would have passed
however wrong both halves were. The expectation is now MOBILEGL_ASYNC_SHADER_COMPILE
as the process inherited it, and the case skips where that is unset because the
built-in default is a value only the implementation knows.
Both-mode coverage in one ctest run is preserved by registration rather than by
in-process forcing, and is wider than before. New entries, each APPENDING to the
common/Vulkan environment so the EGL-vendor and ICD pinning is not lost - a ctest
ENVIRONMENT property replaces the job environment rather than adding to it:
DirectGLES./DirectVulkan.AsyncOn. run all of AsyncCompileScenario with
MOBILEGL_ASYNC_SHADER_COMPILE=1; .AsyncOff. run the extension case with =0, which
asserts the withdrawn side that nothing covered before;
.OptimisticShaderStatus. run the Iris-shaped case with
MOBILEGL_ASYNC_OPTIMISTIC_SHADER_STATUS=1 (its own entries because the quirk is not
neutral for the rest of the scenario); DirectGLES.NoViewportArrayEmulation. runs the
emulation control with MOBILEGL_FORCE_VIEWPORT_ARRAY_EMULATION=0. Run from a device
shell with nothing set, the ambient configuration runs and the rest skip cleanly.
1836 -> 1853 ctest entries, all green.
2026-08-25 04:52:14 -04:00
swung0x48
b12ef4d717
[Test] (DirectVulkan): ask each unbound-descriptor case only for the limit its own resource kind needs
2026-08-25 03:44:36 -04:00
swung0x48
724755d9df
[Test] (DirectVulkan): pin the image-uniform numeric domain the unbound placeholder is chosen from
2026-08-25 03:44:36 -04:00
swung0x48
59f7059bf4
[Fix, Test] (DirectVulkan): keep the draw when a program declares an image-backed resource the application left unbound
2026-08-24 05:31:15 -04:00
swung0x48
4446c861be
[Fix, Test] (DirectVulkan): keep the draw when a program declares a storage block the application left unbound
2026-08-24 04:57:05 -04:00
swung0x48
602da1d131
[Merge] (GLImpl, DirectGLES, DirectVulkan): complete direct state access and the compressed-texture family
2026-08-22 22:47:08 -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
9bcf0a15a0
[Docs] (DirectGLES, DirectVulkan): correct what advertising cube map arrays actually unlocks
2026-08-22 22:03:26 -04:00
swung0x48
26e5a946ac
[Test] (GLImpl): pin the DSA name rule on the compressed 3D by-name entry point
2026-08-22 21:56:51 -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
f559d68728
[Feat, Test] (GLImpl): store and patch compressed 3D texture images, and wire the 1D/3D named entry points
2026-08-22 21:49:33 -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
0fdcb5d6c4
[Feat] (DirectGLES, DirectVulkan): advertise GL_ARB_sync and GL_ARB_shader_atomic_counters
2026-08-22 21:45:13 -04:00
swung0x48
6b25e7a7e3
[Fix] (GLState): report the storage flags glBufferData implies
2026-08-22 21:45:13 -04:00
swung0x48
50d260c840
[Fix] (GLImpl): reject memory-barrier bits the spec does not define
2026-08-22 21:45:13 -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
01098e9dd7
[Fix] (GLImpl): raise the errors ARB_sync specifies for ClientWaitSync, WaitSync and GetSynciv
2026-08-22 21:45:12 -04:00
swung0x48
82244e9048
[Merge] (GLState, GLImpl, DirectGLES, DirectVulkan, ShaderTranspiler): land texture views, the 4.3 version claim and the extension unlocks
2026-08-22 14:28:37 -04:00
swung0x48
7bd2f08313
[Fix] (DirectGLES): stop advertising GL_ARB_texture_view, whose functional half fails on a host driver that has EXT_texture_view
2026-08-22 13:40:35 -04:00
swung0x48
121b99f8c3
[Fix, Test] (DirectVulkan, GLImpl): size a 1D-array texture's mip chain and layered attachment by the axis that carries its layers
2026-08-22 12:52:10 -04:00
swung0x48
e8d79344d6
[Fix] (DirectVulkan): resolve a cube-map-array sampler to the cube-map-array texture target
2026-08-22 12:47: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
60808b6cf2
[Feat] (DirectGLES, DirectVulkan): advertise base-vertex draws, instanced arrays, KHR_debug and the 4.1-4.3 version tokens
2026-08-22 12:41:18 -04:00
swung0x48
eb2f14e55a
[Fix, Test] (GLImpl): validate count, instancecount, drawcount, type and range on the base-vertex draw family
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
swung0x48
6a2e9dc791
Merge branch 'target-gl43' of /mnt/c/Users/geekerwan/AndroidStudioProjects/FoldCraftLauncher/MobileGL into gl43-claim
2026-08-22 11:42:58 -04:00
swung0x48
d5aceebd7b
Merge branch 'dev' of /mnt/c/Users/geekerwan/AndroidStudioProjects/FoldCraftLauncher/MobileGL into gl43-claim
2026-08-22 11:42:50 -04:00
swung0x48
473d9951b7
[Fix, Test] (DirectVulkan, GLState): apply a texture view level and layer window at every subresource boundary
2026-08-22 11:17:09 -04:00
swung0x48
13783e3aec
[Feat] (DirectGLES, DirectVulkan): raise the advertised OpenGL target version to 4.3
2026-08-22 10:53:45 -04:00
swung0x48
6bb844b1c1
[Feature, Test] (GLImpl): give KHR_debug a real group stack and object labels
2026-08-22 10:42:49 -04:00
swung0x48
6162603072
[Feature, Fix, Test] (GLState, GLImpl, DirectVulkan, DirectGLES): implement glTextureView over shared texture storage
2026-08-22 10:41:52 -04:00
swung0x48
666f150202
[Fix] (SelfTest): stop optional-capability failures from declaring the whole backend unsupported, and log the POST report in chunks
2026-08-22 09:08:13 -04:00
swung0x48
2f62970dd5
[Refactor] (SelfTest): give every POST capability row a PASS/WARN/FAIL verdict and keep INFO for identity
2026-08-22 08:59:03 -04:00
swung0x48
dcb568d445
[Feature, Test] (SelfTest): probe the four remaining known driver bugs from the POST
2026-08-22 08:45:05 -04:00
swung0x48
a5f36c8f8d
[Feature, Test] (SelfTest): add a Known Driver Bugs POST section and probe the geometry write-after-emit drop
2026-08-22 07:49:17 -04:00
swung0x48
1ebe9d11c5
[Fix, Test] (GLState, DirectGLES): stop calling a multisample texture filter-incomplete so it still binds
2026-08-22 07:18:11 -04:00
swung0x48
a8bb63950d
[Fix, Test] (ShaderTranspiler): relocate a late length constant so an offset atomic-counter block still flattens
2026-08-22 07:18:11 -04:00
swung0x48
7d68a17774
[Fix, Test] (DirectGLES): give a split buffer image its own view so the sampler still sees whole texels
2026-08-22 06:16:52 -04:00
swung0x48
415645ccdd
[Merge] (ShaderTranspiler, DirectGLES): land the normalized-format carriers and the buffer-image split
2026-08-22 04:47:39 -04:00
swung0x48
e6d03eb2a1
[Merge] (DirectGLES): take the image-alias rename under the format carriers
2026-08-22 04:44:41 -04:00
swung0x48
5e29e7d266
[Feat, Test] (ShaderTranspiler, DirectGLES): split a non-core buffer image by its subscript instead of losing the stage
2026-08-22 04:30:06 -04:00
swung0x48
7eac33d17b
[Feat, Fix, Test] (ShaderTranspiler, DirectGLES): carry the seven normalized image formats as their own codes in rgba16ui
2026-08-22 04:17:46 -04:00
swung0x48
d0f7fb99db
[Feat, Test] (ShaderTranspiler, DirectGLES): carry rgb10_a2ui storage images in rgba16ui and split its packed upload
2026-08-22 03:21:48 -04:00
swung0x48
d4247db6c3
[Fix, Test] (ShaderTranspiler, GLImpl, ProgramState, DirectVulkan): keep fp64 where the backend consumes it natively
2026-08-22 00:57:06 -04:00
swung0x48
e4f41e0fd3
[Merge] (ShaderTranspiler, DirectGLES): land the fp64 block layout, colour-index and readonly-writeonly repairs
2026-08-21 22:24:38 -04:00
swung0x48
9cf340cbef
[Merge] (DirectGLES, ShaderTranspiler): take the viewport routing and image repairs under the fp64 and qualifier fixes
2026-08-21 22:21:17 -04:00
swung0x48
348a30a816
[Fix, Test] (ShaderTranspiler): keep a storage block with doubles at the byte layout it was bound with
2026-08-21 22:15:05 -04:00
swung0x48
b5e0ada97e
[Merge] (DirectGLES, ShaderTranspiler, Config): land the viewport-array routing emulation
2026-08-21 22:13:50 -04:00
swung0x48
cb27ac7761
[Merge] (DirectGLES): take the image-widening repairs under the viewport routing
2026-08-21 22:10:53 -04:00