Skip to content
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

Transition the default terminal renderer to use WebGL and polish setting #106202

Closed
Tyriar opened this issue Sep 6, 2020 · 3 comments · Fixed by #120131
Closed

Transition the default terminal renderer to use WebGL and polish setting #106202

Tyriar opened this issue Sep 6, 2020 · 3 comments · Fixed by #120131
Assignees
Labels
debt Code quality issues insiders-released Patch has been released in VS Code Insiders terminal General terminal issues that don't fall under another label
Milestone

Comments

@Tyriar
Copy link
Member

Tyriar commented Sep 6, 2020

The plan is to remove the canvas renderer in favor of the basically better in every way webgl renderer, plus the plan for xterm.js is to remove the canvas renderer eventually. I think renaming the setting for this would also be a good idea, from:

terminal.integrated.rendererType: 'auto' | 'canvas' | 'dom' | 'experimentalWebgl'

To:

terminal.integrated.gpuAcceleration: 'auto' | 'on' | 'off'

This would help with discoverability of the feature and hides implementation details that don't matter for the end user like "dom" and "webgl".

Currently auto is the same as canvas and doesn't do anything in particular. For the new setting it should do something like this:

If there is an exception starting the webgl renderer:
  Use the dom renderer (cache choice)
Use the webgl renderer (cache choice)

When using the webgl renderer, fps is measured similar to the canvas renderer now and will drop down to the dom renderer (cache choice) if they are much lower than expected (indicating some chromium/gpu interaction issue).

@Tyriar Tyriar added debt Code quality issues terminal General terminal issues that don't fall under another label labels Sep 6, 2020
@Tyriar Tyriar added this to the Backlog milestone Sep 6, 2020
@Tyriar Tyriar self-assigned this Sep 6, 2020
@Tyriar
Copy link
Member Author

Tyriar commented Sep 6, 2020

Before actioning this we should make rendererType.auto do something like the above behavior while the canvas renderer is still around.

@Tyriar
Copy link
Member Author

Tyriar commented Mar 2, 2021

Let's switch the default and add webgl support detection in this iteration if we have time in debt week.

@Tyriar
Copy link
Member Author

Tyriar commented Mar 18, 2021

We may not end up removing the canvas renderer as some device (eg. iPad) don't support webgl2. Still we can keep this open and tracking finishing up the transition to the webgl renderer:

  • Changing setting to gpu acceleration, I think we can still go with the above proposal and hide whether it's canvas or webgl behind the scenes (with the ability via logs to figure it out for debugging purposes).
  • Closing out xterm.js remove canvas issue, update messaging around it.

@Tyriar Tyriar modified the milestones: March 2021, April 2021 Mar 18, 2021
@Tyriar Tyriar changed the title Remove the terminal's canvas renderer Transition the default terminal renderer to use WebGL and polish setting Mar 18, 2021
@Tyriar Tyriar assigned Tyriar and unassigned meganrogge Mar 29, 2021
Tyriar added a commit that referenced this issue Mar 29, 2021
@github-actions github-actions bot locked and limited conversation to collaborators May 13, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
debt Code quality issues insiders-released Patch has been released in VS Code Insiders terminal General terminal issues that don't fall under another label
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants
@Tyriar @meganrogge and others