Fix dialog box rendering - disable GL_SCISSOR before MSAA resolve blit#133
Open
matthewdotdev wants to merge 1 commit intoMorsGames:masterfrom
Open
Fix dialog box rendering - disable GL_SCISSOR before MSAA resolve blit#133matthewdotdev wants to merge 1 commit intoMorsGames:masterfrom
matthewdotdev wants to merge 1 commit intoMorsGames:masterfrom
Conversation
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.
I am definitely not a graphics programmer, so this is based on testing and debugging rather than any deep or technical understanding of OpenGL internals. I also only tested this on my Steam Deck built on a Windows machine and run using Proton.
From what I could trace, the issue seems to be in the MSAA
glBlitFramebufferpath running while scissor is still enabled. I believe that means only part of the destination framebuffer gets updated while the rest remains stale, which seems to match the weird artifacting that happens when dialog boxes render.This change disables scissor before the MSAA resolve blits.
I originally narrowed this down by noticing that disabling anti_aliasing on the current master branch, which resolves the issue.
Claude Opus helped me narrow down the likely cause in the code here, along with some Googling (specifically, this wiki) and trial and error. I have not done broad regression testing yet, just a few levels and dialog boxes.