microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
164.95k stars 29.53k forks source link

[mitigated] macOS: background artifacts in editor #48043

Closed gusbemacbe closed 6 years ago

gusbemacbe commented 6 years ago

Steps to Reproduce:

Observe the background in the screenshot. Compare two colours in the same background. I also changed to default theme and it still occurs the same too.

Does this issue occur when all extensions are disabled?: Yes/No Yes, it still occurs the same thing.

Screenshot bug

With all extensions disabled, check:

Screenshot bug with disabled extensions

ramya-rao-a commented 6 years ago

Does this happen only in the Insiders and not in stable?

alexdima commented 6 years ago

This looks like a bug in the way Chromium does tiling when rendering using the GPU.

@bpasero @Tyriar Have you seen this before ?

gusbemacbe commented 6 years ago

Only in Insiders on macOS.

On Linux, it is all OK. In spite of it, on LInux, using an Apple keyboard, Insiders suffers of another bug: when you press fn + F6 to wrap line, wrap and unwraping automatically line doesn't stop. I had to hold to cancel, using esc.

alexdima commented 6 years ago

@gusbemacbe let's track one issue per issue. Open another issue if you have trouble with the Apple keyboard and please add as many details as possible regarding the keyboard layout and be sure to follow the trouboleshooting guide from https://github.com/Microsoft/vscode/wiki/Keybinding-Issues.

bpasero commented 6 years ago

@gusbemacbe I assume the artifacts go away when you run "code --disable-gpu"?

gusbemacbe commented 6 years ago

I runned code-insiders --disable-gpu in both all enabled and disabled extensions and it is still the same bug. I also have just updated today and it is still the same bug, disabling both extensions and GPU.

I will give you all details:

Mac mini mid 2011, 2,3 GHz Intel Core i5, 8 GB 1333 MHz DDR3, Intel HD Graphics 3000 512 MB and macOS High Sierra 10.13.4

code-insiders --list-extensions
DotJoshJohnson.xml
PKief.material-icon-theme
Tyriar.sort-lines
Zignd.html-css-class-completion
abusaidm.html-snippets
alexdima.copy-relative-path
bajdzis.vscode-database
be5invis.vscode-custom-css
bradgashler.htmltagwrap
brapifra.phpserver
brunnerh.file-properties-viewer
castwide.solargraph
cstrap.python-snippets
dbaeumer.vscode-eslint
donjayamanne.jupyter
donjayamanne.python-extension-pack
dustinsanders.an-old-hope-theme-vscode
ecmel.vscode-html-css
eg2.tslint
eiminsasete.apacheconf-snippets
idleberg.emoji-code
felixfbecker.php-debug
felixfbecker.php-intellisense
felixfbecker.php-pack
formulahendry.auto-close-tag
formulahendry.code-runner
formulahendry.vscode-mysql
goessner.mdmath
heberalmeida.php-snippets
hwencc.html-tag-wrapper
jakebathman.mysql-syntax
jakeboone02.cypher-query-language
jakelucas.code-select-until
jerriepelser.copy-markdown-as-html
jithurjacob.nbpreviewer
jmredfern.sort-selection
jock.svg
junstyle.php-cs-fixer
kamikillerto.vscode-colorize
konstantin.wrapSelection
magicstack.MagicPython
mdickin.markdown-shortcuts
mrmlnc.vscode-apache
mrmlnc.vscode-attrs-sorter
mrmlnc.vscode-duplicate
ms-python.python
ms-vscode.atom-keybindings
ms-vscode.cpptools
ms-vscode.csharp
naumovs.color-highlight
ohansemmanuel.css-grid-snippets
pranaygp.vscode-css-peek
rasmus.al-formatter
rebornix.Ruby
robinbentley.sass-indented
searKing.preview-vscode
sensourceinc.vscode-sql-beautify
yzhang.markdown-all-in-one
{
    "atomKeymap.promptV3Features": true,
    "auto-close-tag.SublimeText3Mode": true,
    "colorize.activate_variables_support_beta": true,
    "colorize.languages": [ "css", "html", "php", "svg"],
    "css.validate": false,
    "editor.autoIndent": false,
    "editor.colorDecorators": false,
    "editor.fontFamily": "Everson Mono Bold, Menlo, Monaco, Courier New, Aegean, monospace",
    "editor.fontLigatures": true,
    "editor.fontSize": 12,
    "editor.minimap.enabled": false,
    "editor.minimap.renderCharacters": false,
    "editor.multiCursorModifier": "ctrlCmd",
    "editor.quickSuggestions": 
    {
        "comments": true,
        "other": true,
        "strings": true
    },
    "editor.renderLineHighlight": "none",
    "editor.selectionHighlight": false,
    "editor.smoothScrolling": true,
    "editor.tabCompletion": true,
    "editor.tabSize": 2,
    "emmet.excludeLanguages": [""],
    "emmet.includeLanguages": { "vue-html": "html", "markdown": "html" },
    "emmet.showSuggestionsAsSnippets": true,
    "explorer.autoReveal": false,
    "explorer.confirmDelete": false,
    "explorer.confirmDragAndDrop": false,
    "files.autoSave": "onFocusChange",
    "files.exclude": 
    {
        "**/.DS_Store": false
    },
    "git.autofetch": true,
    "git.confirmSync": true,
    "git.enableSmartCommit": true,
    "html-css-class-completion.enableEmmetSupport": true,
    "html.format.indentInnerHtml": true,
    "material-icon-theme.files.associations": 
    {
        "changelog.php": "changelog"
    },
    "material-icon-theme.folders.associations": 
    {
        "fontes": "font",
        "idiomas": "i18n",
        "imagens": "images",
        "javascript": "javascript",
        "language": "i18n",
        "teste": "test"
    },
    "material-icon-theme.folders.color": "#E5CD52",
    "phpserver.browser": "firefox",
    "phpserver.port": 8200,
    "php-cs-fixer.formatHtml": true,
    "search.location": "panel",
    "terminal.integrated.fontFamily": "Everson Mono",
    "terminal.integrated.fontSize": 16,
    "workbench.activityBar.visible": true,
    "workbench.colorCustomizations": 
    {
        "activityBarBadge.background": "#E5CD52",
        "activityBar.border": "#E5CD52",
        "activityBar.foreground": "#A9B8BA",
        "scrollbarSlider.background": "#E5CD52",
        "scrollbarSlider.hoverBackground": "#4FB4D7"
    },
    "workbench.editor.enablePreview": false,
    "workbench.fontAliasing": "antialiased",
    "workbench.iconTheme": "material-icon-theme",
    "workbench.startupEditor": "none",
    "window.zoomLevel": 1,
    "workbench.colorTheme": "An Old Hope"
}
bpasero commented 6 years ago

@gusbemacbe and you are not seeing this in stable version right?

gusbemacbe commented 6 years ago

@bpasero

Yes, VSCode stable doesn't have this bug on macOS.

On Linux, both VSCode stable and Insiders do not have this bug.

Only on macOS and on VSCode Insiders, it does have this bug.

bpasero commented 6 years ago

@gusbemacbe what Mac hardware do you run with? Is it a Mac with NVIDIA discrete GPU?

gusbemacbe commented 6 years ago

No, it is an Intel hardware. Here are the details in German (as you are a German-speaking Swiss):

https://support.apple.com/kb/SP632?viewlocale=de_DE

bpasero commented 6 years ago

@gusbemacbe does it reproduce if you run "code --disable-gpu-blacklist" from the command line?

gusbemacbe commented 6 years ago

No, it doesn't. I ran it and it appears still with this same bug.

bpasero commented 6 years ago

@gusbemacbe I am a bit confused by that answer, does it reproduce when you use that flag or does it not reproduce?

bpasero commented 6 years ago

@gusbemacbe this issue seems to be the same as https://github.com/Microsoft/vscode/issues/12473 which for some reason comes back with the new Electron. There are more workarounds described in that issue that you could try out:

Also interesting, are you running with a custom color profile? I came across that via the comment in https://github.com/Microsoft/vscode/issues/12473#issuecomment-294588097

gusbemacbe commented 6 years ago

@gusbemacbe I am a bit confused by that answer, does it reproduce when you use that flag or does it not reproduce?

I ran all these commands you suggested, in both integrated terminal and external terminal, nothing happened, no flags, no verbose, no reproductions. The editor is like Ahch-To.

change the zoom level (View > Zoom In) run with code --force-gpu-rasterization

I ran this command in both integral and external terminals, nothing happened. The bug is still:

This bugs never dies

Also interesting, are you running with a custom color profile? I came across that via the comment in #12473 (comment)

I have already changed all colour profiles and the bug is still there. But when I changed the colour profile, the background changed and glitched and you can see two animated gIFs:

Color profile

Glitched background I

Glitched background

gusbemacbe commented 6 years ago

Yes, I restarted to update and the bug is still.

gusbemacbe commented 6 years ago

I have received the warning as I have read one of suggestions in https://github.com/Microsoft/vscode/issues/12473#issuecomment-249162278.

$ '/Applications/My apps/Visual Studio Code - Insiders.app/Contents/MacOS/Electron' --force-gpu-rasterization
[main 05:31:58] update#setState idle
2018-04-20 05:31:58.891 Electron[1195:30076] *** WARNING: Textured window <AtomNSWindow: 0x7fd8125b2ea0> is getting an implicitly transparent titlebar. This will break when linking against newer SDKs. Use NSWindow's -titlebarAppearsTransparent=YES instead.
gusbemacbe commented 6 years ago

Applying this path, running all the commands you suggested, it is the same warning and the bug is still there.

gusbemacbe commented 6 years ago

I have calibrated the colour profile and it almost or quite seemed to work, but the bug appeared by surprise:

screen shot 2018-04-20 at 05 45 52

Tyriar commented 6 years ago

I believe this is happening because the GPU blacklist entry for macOS was reverted in v2 https://github.com/electron/libchromiumcontent/pull/489. This was done to try to help with https://github.com/electron/electron/issues/12042, we're fixing this for real by not requiring canvas for the terminal with https://github.com/Microsoft/vscode/issues/46954 (the minimap still uses it but it's much smaller and doesn't update as much so shouldn't be too noticeable).

bpasero commented 6 years ago

@Tyriar good catch 🥇

gusbemacbe commented 6 years ago

I spent more time in Linux than in macOS because of this bug. But as you have updated the Insiders version, I came back to check if Insiders is OK after the update. I tested colour profile. The bug is gone. It seems the update solved it.

screen shot 2018-05-15 at 15 21 06

screen shot 2018-05-15 at 15 21 10

screen shot 2018-05-15 at 15 21 20

screen shot 2018-05-15 at 15 21 27

I switched to Nord theme...

screen shot 2018-05-15 at 15 16 56

screen shot 2018-05-15 at 15 18 11

screen shot 2018-05-15 at 15 18 17

screen shot 2018-05-15 at 15 18 37

Tyriar commented 6 years ago

@gusbemacbe Insiders is currently on Electron 1.7.12 which explains why the bug went away.

bpasero commented 6 years ago

@Tyriar let's leave it open to track the Electron 2.0.x issues. All of those I marked as electron-update, even though they do not exist in our current release.

gusbemacbe commented 6 years ago

OK, @bpasero.

bpasero commented 6 years ago

@Tyriar oh sorry, I did not see that @gusbemacbe closed it :)

bpasero commented 6 years ago

@gusbemacbe according to a Chrome issue I have read, folks are saying that this issue has been addressed by Apple in the 10.13.4 update. I see however that you are on that version, which is odd. Can you:

gusbemacbe commented 6 years ago

Hi @bpasero,

The bug is back. Here is the screenshot:

bug 1

bug 2

But if I change colour profile, here is:

image

image

They are compatible only with monitor's new colour profile (if monitor is a Samsung, it would be SM[number-serie] and with sRGB, but not with Apple RGB and Generic RGB Profile.

And here are the details of Mac mini Mid 2011, including hardware GPU in German (as you are a German-speaking Swiss): https://support.apple.com/kb/SP632?viewlocale=de_DE

If you insist, here is the quick detail of hardware GPU: https://browser.geekbench.com/macs/90

bpasero commented 6 years ago

@gusbemacbe so do you have the model with discrete GPU (AMD Radeon HD 6630M)?

They are compatible only with monitor's new colour profile (if monitor is a Samsung, it would be SM[number-serie] and with sRGB, but not with Apple RGB and Generic RGB Profile.

With "compatible", do you mean the issue goes away when you switch to SM[number-serie] or sRGB?

Are you on latest macOS 10.13.5 by now?

gusbemacbe commented 6 years ago

so do you have the model with discrete GPU (AMD Radeon HD 6630M)?

No, I ran via terminal, here is the result:

lspci -nn | grep '\[03'
00:02.0 VGA compatible controller [0300]: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0126] (rev 09)

sudo lshw -C display
  *-display                 
       description: VGA compatible controller
       product: 2nd Generation Core Processor Family Integrated Graphics Controller
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 09
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:43 memory:a0000000-a03fffff memory:90000000-9fffffff ioport:2000(size=64) memory:c0000-dffff

lspci | grep ' VGA ' | cut -d" " -f 1 | xargs -i lspci -v -s {}
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09) (prog-if 00 [VGA controller])
    Subsystem: Apple Inc. 2nd Generation Core Processor Family Integrated Graphics Controller
    Flags: bus master, fast devsel, latency 0, IRQ 43
    Memory at a0000000 (64-bit, non-prefetchable) [size=4M]
    Memory at 90000000 (64-bit, prefetchable) [size=256M]
    I/O ports at 2000 [size=64]
    [virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
    Capabilities: <access denied>
    Kernel driver in use: i915

With "compatible", do you mean the issue goes away when you switch to SM[number-serie] or sRGB?

Yes

Are you on latest macOS 10.13.5 by now?

Yes

bpasero commented 6 years ago

@gusbemacbe would you be willing and able to do a slight code modification in the code exploration build and then try again? That would be:

=> does the issue still reproduce?

gusbemacbe commented 6 years ago

Hello @bpasero

Here are the results and it is still the same bug:

Apple RGB

Generic RGB Profile

[monitor-name][model-number] or [monitor-name][number-serie]

sRGB IEC61966-21

bpasero commented 6 years ago

@gusbemacbe thanks for trying, I am a bit confused as to why that would not help because I think that is the same configuration as we run with Electron 1.7. To find this out can you:

code-exploration

image

code stable

gusbemacbe commented 6 years ago

I do not have VSCode Stable. I have only VSCode Insiders. Are VSCode Insiders and VSCode Exploration the same? If so, I will download the VSCode Stable.

gusbemacbe commented 6 years ago
code-exploration --status

Version:          Code - Exploration 1.25.0-exploration (f8edf3e79a46e49f8054e9b85a6b6acd33de58aa, 2018-06-08T12:14:44.494Z)
OS Version:       Darwin x64 17.6.0
CPUs:             Intel(R) Core(TM) i5-2415M CPU @ 2.30GHz (4 x 2300)
Memory (System):  8.00GB (1.26GB free)
Load (avg):       2, 2, 2
VM:               0%
Screen Reader:    no
Process Argv:     /Applications/My apps/Visual Studio Code - Exploration.app/Contents/MacOS/Electron
GPU Status:       2d_canvas:                    disabled_software
                  checker_imaging:              disabled_off
                  flash_3d:                     unavailable_software
                  flash_stage3d:                unavailable_software
                  flash_stage3d_baseline:       unavailable_software
                  gpu_compositing:              unavailable_software
                  multiple_raster_threads:      unavailable_off
                  native_gpu_memory_buffers:    unavailable_software
                  rasterization:                unavailable_software
                  video_decode:                 unavailable_software
                  video_encode:                 unavailable_software
                  webgl:                        unavailable_off
                  webgl2:                       unavailable_off

CPU %   Mem MB     PID  Process
    0      115    1085  code-exploration main
    0       82    1088     shared-process
code --status

Version:          Code 1.24.0 (6a6e02cef0f2122ee1469765b704faf5d0e0d859, 2018-06-06T17:30:30.113Z)
OS Version:       Darwin x64 17.6.0
CPUs:             Intel(R) Core(TM) i5-2415M CPU @ 2.30GHz (4 x 2300)
Memory (System):  8.00GB (1.02GB free)
Load (avg):       2, 2, 2
VM:               0%
Screen Reader:    no
Process Argv:     /Applications/My apps/Visual Studio Code.app/Contents/MacOS/Electron
GPU Status:       2d_canvas:                    unavailable_software
                  flash_3d:                     unavailable_software
                  flash_stage3d:                unavailable_software
                  flash_stage3d_baseline:       unavailable_software
                  gpu_compositing:              unavailable_software
                  multiple_raster_threads:      unavailable_off
                  native_gpu_memory_buffers:    unavailable_software
                  rasterization:                unavailable_software
                  video_decode:                 unavailable_software
                  video_encode:                 unavailable_software
                  vpx_decode:                   unavailable_software
                  webgl:                        unavailable_off
                  webgl2:                       unavailable_off

CPU %   Mem MB     PID  Process
    0      106    1164  code main
    0      156    1167     window (Welcome)
    0       66    1188       extensionHost
    0       82    1168     shared-process
code-insiders --status

Version:          Code - Insiders 1.25.0-insider (8f8ed32e737a7a906fac654fb0bd61b257b449b1, 2018-06-08T05:10:42.592Z)
OS Version:       Darwin x64 17.6.0
CPUs:             Intel(R) Core(TM) i5-2415M CPU @ 2.30GHz (4 x 2300)
Memory (System):  8.00GB (1.04GB free)
Load (avg):       2, 2, 2
VM:               0%
Screen Reader:    no
Process Argv:     /Applications/My apps/Visual Studio Code - Insiders.app/Contents/MacOS/Electron
GPU Status:       2d_canvas:                    unavailable_software
                  flash_3d:                     unavailable_software
                  flash_stage3d:                unavailable_software
                  flash_stage3d_baseline:       unavailable_software
                  gpu_compositing:              unavailable_software
                  multiple_raster_threads:      unavailable_off
                  native_gpu_memory_buffers:    unavailable_software
                  rasterization:                unavailable_software
                  video_decode:                 unavailable_software
                  video_encode:                 unavailable_software
                  vpx_decode:                   unavailable_software
                  webgl:                        unavailable_off
                  webgl2:                       unavailable_off

CPU %   Mem MB     PID  Process
    1      115    1211  code-insiders main
    0      115    1213     shared-process
bpasero commented 6 years ago

@gusbemacbe thanks, there seems to be a difference for 2d_canvas between insiders and exploration build. Does code-exploration --force-gpu-rasterization fixes it?

gusbemacbe commented 6 years ago

No, it is still the same bug:

screen shot 2018-06-10 at 12 33 35

screen shot 2018-06-10 at 12 34 13

gusbemacbe commented 6 years ago

@bpasero, I come to advice that since I upgraded to the latest version of VSCode Insiders, the bug affects all colour profiles, not just [monitor][number-serie]. Put it in case of emergency.

bpasero commented 6 years ago

@gusbemacbe does it reproduce if you zoom in once? I think previously we heard reports that this would resolve the issue.

gusbemacbe commented 6 years ago

Hello @bpasero

When I restored the zoom, increased or decreased the zoom, it is still the bug, using [monitor][number-serie]:

screen shot 2018-06-13 at 13 58 31

bpasero commented 6 years ago

@gusbemacbe another idea I had that is worth a try:

gusbemacbe commented 6 years ago

Hi @bpasero

Sorry, I was busy with my college. I am on holidays. I have just tested and the bugs are gone. It worked very well with all colour profiles. Then 'force-color-profile', 'srgb' is perfectly compatible with all Apple colour profiles.

bpasero commented 6 years ago

@gusbemacbe that is great to hear

gusbemacbe commented 6 years ago

@bpasero, I saw the issue of @nicmr, I ran and tested VSCode Insiders on Ubuntu 18.04 on a Mac mini and there is no colour background bug here, but I am aware that we have used the same version 7dc9539. She updated yesterday 15 and I updated today.

Please, can you send me the VSCode Exploration that I will test on Ubuntu and Manjaro?

gusbemacbe commented 6 years ago

Ah, she uses Linux x64 4.15.0-23-generic and I use 4.15.0-20-generic. Her kernel is more recent than mine.

bpasero commented 6 years ago

@gusbemacbe the current insiders build of VSCode includes Electron 2.0.x, so no need to use the exploration builds. Since you indicated that setting app.commandLine.appendSwitch('force-color-profile', 'srgb'); fixes this issue for you, we will probably use that as the workaround.

bpasero commented 6 years ago

@gusbemacbe can you try with todays insider release to see if you still get background artifacts?

gusbemacbe commented 6 years ago

@bpasero

I have just updated and tested VSCode Insider on macOS, with all colour profiles. No bugs.

applause

bpasero commented 6 years ago

@gusbemacbe thanks, yeah I think changing the color profile on your end would probably not cause any change given that the new insiders forces the color profile to be sRGB. We might end up shipping with a setting that users have to opt-in in the future, as I feel not 100% good about making it a default.

gusbemacbe commented 6 years ago

@bpasero

changing the color profile on your end would probably not cause any change given that the new insiders forces the color profile to be sRGB. We might end up shipping with a setting that users have to opt-in in the future, as I feel not 100% good about making it a default.

You should ask @nicmr and other users of macOS Sierra, High Sierra 10.13.4 and of alpha Mojave 10.14 to test for making sure that it is all OK. If it is not all OK, I suggest you to add color-profile to settings.js and offer 3 options: disable-mojo-local-storage, 'force-color-profile', 'srgb' and disable-accelerated-2d-canvas.