feat(graphics): system-EGL OpenGL backend with NVIDIA performance tuning and uncapped vsync - #85
Conversation
|
Reminder : |
|
@RowerStudios @RobertFlexx I am looking forward to add this into my fork! <3 |
|
I still need to fix some bugs and errors on libroblox.so .. so yea it will be done in 4 or 5 hours |
strictly on Direct Vulkan and drop attempts to maintain a complex host OpenGL/EGL bridge**. these missing shaders cannot be generated on the fly—causing materials to render black/invisible and dropping framerates down to
This eliminates L1/L2 cache thrashing and thread migration jitter without requiring root access. For dynamic CPU frequency scaling, Mocktail natively communicates with |
|
most of the issues you may face I am pretty sure already dealt with pr #73 or and then |
blockers i found
what is worth keepingThe useful parts are SDL should remain the owner of the real system EGL context and surface. Set the requested GLES version with SDL attributes before context creation, then keep the existing Bionic adapter between Roblox and the host. Apply the resolved swap interval after the SDL context becomes current. This removes both preload shims and the whole re-exec path. NVIDIA hints can live in a small policy module that runs after config is loaded and only for system OpenGL. It should respect user values and avoid I would replace this PR with four smaller ones:
The payload metadata update should stay separate. Before the OpenGL PR is merged, CI needs to test the installed package, browser launch with |
|
Alright @komaruworld and @glook9001 |
b8b88f1 to
c2798c4
Compare
|
The binary works when i (my llm did some stuff) To run the built binary. Because i couldnt get past the built in webview login prompt and there are some issues with mocktail showing that its already running but its not. im not that expert on to those things but yea hopefully someone finds how to fix it! Because i couldnt get past the built in webview login prompt and there are some issues with mocktail showing that its already running but its not. im not that expert on to those things but yea hopefully someone finds how to fix it! @komaruworld @glook9001 @RobertFlexx |
…ec and driver-side NVIDIA tuning Per review of PR komaruworld#85: - Remove the EGL version/vsync preload shims and the NVIDIA re-exec path; the shims were never installed and the re-exec passed a wiped argv. - Remove the separate SystemEglBridge; SDL already owns the EGL context and surface and the existing Bionic adapter bridges Roblox's libEGL/libGLESv2 to the host. The requested GLES version now comes from graphics.gles_version via SDL_GL_SetAttribute before context creation. - Fix backend selection to use the GraphicsBackend enum; the fallback flag now only controls ANGLE fallback. - Reduce NVIDIA tuning to process-local environment hints applied after config load and only for the system OpenGL backend. Drop nvidia-settings, nvidia-smi, sysfs governor writes and automatic renicing. - Drop launch.sh and the unrelated roblox_payload.json metadata change.
c2798c4 to
e951be4
Compare
Replace the 8x8 surfaceless-pbuffer probe (which could pass while the on-screen path failed and resolved a separate EGL library) with a real hidden SDL window + OpenGL ES context created through the same host EGL driver the runtime uses. Classify acceleration via GL_RENDERER/GL_VENDOR. - SystemEglProbeOptions now carries gles_major/gles_minor instead of library paths. - Fix the probe test (it referenced the removed SystemEglBridge) and skip when no display is available. - Link SDL3 into the graphics foundation and the probe test target.
|
@komaruworld i have done some fixes and im not able to test in wayland cuz wayland is not supported on my gpu |


Summary
Add a system-EGL (OpenGL) backend that routes the guest's libEGL/libGLESv2 directly at the host GL stack, plus NVIDIA-specific tuning to remove periodic lag spikes and unlock the frame rate.
Test plan
Notes
Shader cache confirmed filling (~65 MB in ~/.nv/GLCache on driver 390.x). TextureFilteringQuality=0 trades some sharpness for speed (opt-out MOCKTAIL_DISABLE_NVIDIA_TEXTURE_PERF=1).
Running it now
The normal launch is broken at the moment because login/updater isn't wired up yet (that's being handled by other contributors), so this bypasses it and runs a cached payload directly:
Notes:
MOCKTAIL_DEBUG_SHOW_WINDOW_BEFORE_FRAME=1to force it visible../build/mocktailfalsely reports "already running" (stock-main single-instance lock bug); run a copy of the binary from a different path (~/mocktail/run) to dodge it.Known issue: the window doesn't show the game yet — the first frame never presents, so it exits with "without a real presented frame". That's the next thing to chase.