Files
AnyPS5/docs/dev/debt/libSceGLSlimVSH.md
T
PrivacyOnion 19af8ed632 feat(libSceGLSlimVSH): implement EGL 1.4 and GLES 2.0 state, objects and pbuffer storage
Implement the EGL 1.4 and OpenGL ES 2.0 exports that do not need a shader compiler or rasterizer as a host-side state machine following the Khronos specifications: the default display, a single RGBA8/depth16/stencil8 pbuffer configuration, ES2 contexts with share groups, per-thread current state and errors, buffers, textures with mipmap generation, renderbuffers, framebuffers and their completeness, shader and program objects, vertex attributes, every fixed-function state setter and query, clears, pixel uploads, copies and reads on CPU storage.

The 22 unknown NIDs are named from the NID database and the Piglet, Orbis texture and compositor exports, together with shader compilation, program linking and reflection, uniforms, draws, native window surfaces and the Sony-specific APIs, stay NotImplemented_nid_no_patch; the gaps are in docs/dev/debt/libSceGLSlimVSH.md.
2026-11-01 08:10:59 +01:00

6.4 KiB

libSceGLSlimVSH technical debt

Unknown function info

  • The 22 Sony-specific exports in Export.cpp have names recovered by tools/nid_names.py from its pinned NID database. Each name hashes to the original explicit NID. Their prototypes and behavior remain unverified; all retain no-parameter throwing placeholders. No recovered name is a standard EGL or GLES2 function.
Name NID
glOrbisMapTextureResourceSCE iIsF4NzYgD4
glOrbisTexImageCanvas2DSCE hA8TWZkwPRU
glOrbisTexImageResourceSCE LuP1plTAR7g
glOrbisUnmapTextureResourceSCE J5IG3lL56FI
scePigletAllocateSystemMemoryEx oXkQEVitkCs
scePigletAllocateVideoMemoryEx sDotUt1uEhA
scePigletGetConfigurationVSH 3gtNzvkq-XY
scePigletReleaseSystemMemoryEx T-+xooU3VvQ
scePigletReleaseVideoMemoryEx AcruVcmKz78
sceSlimglClientStartIPC QvXbiLqpn6c
sceSlimglCompositorAllocateIndex mgKTS0PIvd8
sceSlimglCompositorCreateIndirectRenderTarget RP5cXUjm48U
sceSlimglCompositorDeleteIndirectRenderTarget srJHx3p48v0
sceSlimglCompositorFlush 6ZQXcSKKjyo
sceSlimglCompositorFlushWithRepeat wdRBDMIxI7I
sceSlimglCompositorGetCanvasHandle CzmA-OALrH8
sceSlimglCompositorGetError aRqvgeH+oe0
sceSlimglCompositorReleaseIndex gI+XEd5mWPU
sceSlimglCompositorSetEndOfFrameCommand 1TFdFqQBGqY
sceSlimglCompositorSetIndirectCanvasCommand 7Mp6qE235Qc
sceSlimglCompositorSetIndirectCompositionCommand BrNgn7z6A40
sceSlimglCompositorSetIndirectRenderTargetConfigCommand iyTnezpw1jE

Additional callable exports

  • Additional callable exports - 7 callable NIDs match the public 3.20 catalogue and the selected export metadata from two version-labelled images (SHA-256 5d1eb4913d2914be044c05a48c4287a3a73e526605f21ec37ce9acfb5b2170ad). The labels are not authenticated. Prototypes and behavior are unverified; these declarations throw through NotImplemented_nid_no_patch and implement no runtime functionality.
Name NID
sceSlimglCompositorSetInvisibleCanvasCommand DN8v2xNOyjg
sceSlimglCompositorSetMemoryCommand aswH9c+RN0E
sceSlimglCompositorSetPostEventCommand WvuRaahcTfA
sceSlimglCompositorWaitEndOfRendering lcaik1AxwEY
sceSlimglCompositorWaitPostEvent HwBlC8TLKHQ
sceSlimglIPCEnd Fa0atOcWPaI
sceSlimglIPCSetup F4pQ5tsDo74
  • scePigletSetConfigurationVSH (M9RtXpjSYtE) is listed in the same 3.20 catalogue and is declared as a no-parameter throwing placeholder; its prototype and behavior are unverified.

Additional unidentified exports

  • Seven callable exports are declared as throwing placeholders. Their names, signatures and behavior are unverified. The same module and library identities occur in two version-labelled images; those labels are not authenticated.
Name NID
Unknown 9iW854bwvmc
Unknown DVNKmWX1jOU
Unknown JjyNMbSAgLk
Unknown LLDLZ-mQK+Q
Unknown Yf0LATiXPsg
Unknown ZLvm5korFRA
Unknown qSuVNKHENqs

Functional

  • The host implementation is not a conformant GLES2 renderer. The single pbuffer configuration advertises EGL_NON_CONFORMANT_CONFIG and no EGL_CONFORMANT bits. Native window/pixmap integration, OpenVG client-buffer import, GLSL ES compilation, program linking/reflection and rasterization are absent. The 35 standard exports below still call NotImplemented_nid_no_patch; no shader or program can acquire a successful compile/link status. Uniform locations and storage require linked shader reflection and remain unavailable.

    • eglCreatePbufferFromClientBuffer
    • glCompileShader
    • glDrawElements
    • glGetShaderPrecisionFormat
    • glGetUniformfv
    • glGetUniformiv
    • glUniform1fv
    • glUniform1iv
    • glUniform2f
    • glUniform2fv
    • glUniform2i
    • glUniform2iv
    • glUniform3f
    • glUniform3fv
    • glUniform3i
    • glUniform3iv
    • glUniform4f
    • glUniform4fv
    • glUniform4i
    • glUniform4iv
    • glUniformMatrix2fv
    • glUniformMatrix3fv
    • glValidateProgram
    • glDrawArrays
    • glLinkProgram
    • glShaderBinary
    • glGetString
    • glGetAttribLocation
    • glGetUniformLocation
    • glGetActiveAttrib
    • glGetActiveUniform
    • glUniform1f
    • glUniform1i
    • glUniformMatrix4fv
    • eglCreateWindowSurface
  • State queries: glGetBooleanv, glGetFloatv and glGetIntegerv throw for GL_SHADER_COMPILER; compiler availability cannot be advertised until a compiler is integrated. Other implemented state queries use host limits, not measured console limits. Calls requiring a GL context throw when none is current; GLES2 does not specify that case.

  • Console-specific ABI behavior and implementation-dependent limits are unmeasured. The host contracts come from EGL 1.4 sections 3.1-3.8 and OpenGL ES 2.0.25 sections 2.7-2.10, 3.7, 4 and 6. The backend has one default display, ES2 contexts, a single RGBA8/depth16/stencil8 pbuffer configuration, 2048-pixel image limits and eight vertex attributes and texture units. It supports no compressed texture formats, shader binary formats, EGL texture-binding configurations or extensions. Native-display handles other than the default do not resolve.

  • Mipmap filtering uses a CPU box filter; implementation-dependent rounding and dithering have not been compared with console output. The state/storage implementation does not establish shader execution precision or rendering capabilities; glGetString and glGetShaderPrecisionFormat remain throwing exports.