Repository navigation
Make the F2 UI usable on ultrawide screens - #945
Merged
Merged
Conversation
TiltedUI's D3D11 overlay handler copied and uploaded the whole CEF view on every paint, through a deferred context. At 5120x1440 that is about 30 MB per paint, and paints pile up in each game frame when the game runs below the UI's 60 fps, so the menu barely rendered and ignored clicks, worst outdoors. The client now uses its own OverlayTextureRenderHandler: CEF paints are merged into a CPU copy of the view, and the render thread uploads only the repainted area with UpdateSubresource, at most once per frame. The cursor is also scaled by the screen height instead of the width, so it no longer grows on wide screens. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With only the texture upload fixed, the F2 UI still showed up half drawn
outdoors at 5120x1440. cef_debug.log shows CEF dropping UI frames
("Client rejects proposal to capture frame") right when the UI changes.
CEF rasterizes the UI on the GPU and copies each frame back to memory for
OnPaint, and that work waits behind Skyrim's frames when the game keeps
the GPU busy.
The client now creates CEF through CpuRenderedOverlayApp, which adds
disable-gpu and disable-gpu-compositing, so the UI (plain HTML and CSS)
is drawn on the CPU straight into the memory OnPaint reads.
The CEF view is also sized after the swap chain's back buffer instead of
the render target bound when the UI is drawn, which was 512x512 for a
moment while loading and made CEF lay out and repaint the whole UI twice.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jotagalindo
marked this pull request as ready for review
November 5, 2026 10:54
Collaborator
|
Please PR to TiltedUI instead. I know, dealing with submodules is a bit annoying, but it is what it is |
Contributor
Author
|
@miredirex I'll close the PR then, and open one in TiltedUI. Thanks! |
jotagalindo
added a commit
to jotagalindo/TiltedEvolution
that referenced
this pull request
Nov 5, 2026
TiltedUI no longer adds disable-gpu and disable-gpu-compositing for every OverlayApp, so the client opts in with CpuRenderedOverlayApp, as in tiltedphoques#945. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The view upload fix now lives in TiltedUI (tiltedphoques/TiltedUI#20), so the client goes back to OverlayRenderHandlerD3D11 and only opts in to CPU drawing with CpuRenderedOverlayApp. TiltedUI points to the head of that PR, which ends up in TiltedUI's master when the PR is merged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
|
TiltedUI should point at c7789de2, please double check |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
Thanks a lot to both of you @Force67 and @miredirex, for the review and for all the help with this! |
miredirex
approved these changes
Nov 5, 2026
absol89
pushed a commit
to absol89/TiltedEvolutionScriptFixes
that referenced
this pull request
Nov 5, 2026
* Make the F2 UI usable on ultrawide screens TiltedUI's D3D11 overlay handler copied and uploaded the whole CEF view on every paint, through a deferred context. At 5120x1440 that is about 30 MB per paint, and paints pile up in each game frame when the game runs below the UI's 60 fps, so the menu barely rendered and ignored clicks, worst outdoors. Details in tiltedphoques/TiltedUI#20 --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit ed46728)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Update: the fix moved to tiltedphoques/TiltedUI#20, which has the explanation, the measurements and the videos. I've left the original description struck through below.
tiltedphoques/TiltedUI#20 should be merged before this PR.
Hi!I play on a 5120x1440 monitor and the F2 menu was almost impossible to use: it showed up in pieces and clicks didn't respond, especially outdoors. At 1920x1080 it worked perfectly. My intention is to contribute a small fix that can help more people with big screens.I used AI to make this fix, Claude specifically. I tested it myself in game.What was happeningView upload: TiltedUI's D3D11 handler uploaded the whole view to the GPU on every CEF paint. At this resolution that is about 30 MB each time, and with low FPS several paints pile up per frame.CEF waiting on Skyrim: CEF draws the UI on the GPU and copies each frame back to memory. Outdoors Skyrim keeps the GPU maxed out, so CEF ends up waiting and drops frames:cef_debug.logshowsClient rejects proposal to capture frame.What changes (client only, TiltedUI untouched)NewOverlayTextureRenderHandler: uploads to the GPU only the area that changed, at most once per frame.CEF starts withdisable-gpuanddisable-gpu-compositing: the UI is simple HTML and CSS, so drawing it on the CPU is cheap.View size: taken from the swap chain. Before, it came from the bound render target, which can be 512x512 while loading.Cursor: scaled by height instead of width; before, it was huge on ultrawide screens.Testing: built onwindows-2022and tested at 5120x1440 indoors and outdoors. The menu shows up complete and responds well. Not retested yet on other GPUs than 2080 Super.Before and after (5120x1440, outdoors in Whiterun)Before (currentdev): the menu shows up half drawn, parts of it come and go, and the cursor is huge.https://github.com/user-attachments/assets/a8e6c51d-4dfa-46fd-9d1f-721ed32318e6After (this PR): the connect dialog and the settings show up complete right away, and the cursor has its normal size.https://github.com/user-attachments/assets/6cf61edc-8e51-4022-853a-d565c4450a6cIf you'd rather have any of this in TiltedUI, I'll move it there.What this PR changes now
CpuRenderedOverlayApp: anOverlayAppsubclass that starts CEF withdisable-gpuanddisable-gpu-compositing, so it draws the UI on the CPU. In TiltedUI these flags are opt-in, so the client turns them on here.OverlayTextureRenderHandleris removed, since that fix now lives in TiltedUI.Closes #940