-
Notifications
You must be signed in to change notification settings - Fork 8.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
EndPaint outside of lock for DxEngine #6523
Comments
🤔 Why did we never do this? This might have just sorted out like, a bunch of the miscellaneous deadlocks we're tracking (ala #12607) |
@lhecker tell me why this wouldn't work: |
D2D has an internal batch size limit for draw commands, so given enough text on the screen, it'll try to call D3D functions potentially many times before |
Note to future self: this seemingly did not noticeably improve Terminal perf. Maybe it helps conhost perf, but I didn't have the cycles to further sanity check if this wouldn't just explode (esp. over RDP). I'm closing this tab out now, see y'all in two more years when I reopen this 😜 |
Oh, we do this now in AtlasEngine! |
The EndPaint command will naturally send all the queued drawing commands onto the underlying rendering target/bitmap/surface. Since all the data has already been captured and queued, there's no real sense in holding the lock on the I/O thread while the draw commands are performed. So this should probably move into the
Present
phase. But it will have to be reconciled with the invalid rectangle/scroll things that are usually done atEndPaint
time.The text was updated successfully, but these errors were encountered: