Skip to content

Commit ebf8882

Browse files
committed
GPU notes
1 parent 56a216f commit ebf8882

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed
Lines changed: 3 additions & 0 deletions
Loading

release-notes/v1_96.md

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -694,9 +694,20 @@ If you notice issues with extension updates, you can disable this functionality
694694

695695
### Ground work for GPU acceleration in the editor
696696

697-
We are excited to announce that we have started work on enabling GPU acceleration in the editor, [similar to the terminal](https://code.visualstudio.com/docs/terminal/appearance#_gpu-acceleration). The goals of this effort are to reduce input latency and improve scrolling performance.
697+
We are excited to announce that we have started work on enabling GPU acceleration in the editor, [similar to the terminal](https://code.visualstudio.com/docs/terminal/appearance#_gpu-acceleration). The goals of this effort are to improve the overall coding experience primarily by reducing input latency and improving scrolling performance.
698698

699-
TODO@Tyriar
699+
This is still early and not ready to test out, but we wanted to share some details about the progress that has been made:
700+
701+
- The GPU renderer is using WebGPU behind the scenes.
702+
- We're focusing currently on feature parity and correctness over performance.
703+
- There's a fallback mechanism when GPU acceleration is enabled that allows lines to "fallback" to DOM rendering when it's not fully supported. This means that we can self-host early on and currently incompatible lines will show using the DOM approach instead. Some examples of lines that currently fallback lines over 200 characters, lines with certain monaco decorations (eg. fading unused variables), lines that wrap, and so on.
704+
- Monaco's inline decorations which allow styling the actual elements containing the charatcers posed a big challenge for this feature as they are styled using CSS. The approach we're using to support most inline decorations without breaking or changing API is to detect the CSS attached to these decorations and then support a subset of common CSS properties, falling back if not all styles are supported.
705+
706+
Here's a screenshot of the feature in action, note the yellow line in the gutter tells us what lines are using fallback rendering. This particular case uses fallback rendering due to the `dontShow` parameter having an inline decoration as it's unused:
707+
708+
![GPU rendering looks mostly the same as DOM rendering currently, a yellow line appears for lines rendered via the DOM](images/1_96/editor-gpu.png)
709+
710+
The issue tracking this work is [#221145](https://github.com/microsoft/vscode/issues/221145) which has frequent updates and more details on progress as it's made.
700711

701712
## Notable fixes
702713

0 commit comments

Comments
 (0)