Chrome GL_INVALID_OPERATION: Internal D3D9 error: HRESULT: 0x8876086C: Failed to create image surfac

Since july 2019, we have trouble on some old intel CPU + integrated GPU (for example HD 2000 in Core-i3).

The trouble is warning in JS console
GL_INVALID_OPERATION: Internal D3D9 error: HRESULT: 0x8876086C: Failed to create image surface
screenshot Screenshot by Lightshot

As a result our RenderTextures is not shown (transparent totally).

The unity’s built-in Texture2D on the Sprites on Canvas is rendered OK.
The trouble in our’s RT’s attached to Material to output to RawImage.

This bug is reproduced on my intel CPU G620 on Chrome only… since update of Chrome in july 2019.
This bug does not exist on the Firefox on the same PC with CPU 620.
This bug is dissapear when I (and our users) disable GPU acceleration on browser settings (with performance penalty, the game is not playable).


Some other debug screenshots from our users

chrome://gpu/ page screenshot Screenshot by Lightshot - some driver bug workarounds.

\ webgl 1.0 is supported

\ webgl 2.0 is Not supported

\ chrome version

\ some Problems Detected
Screenshot by Lightshot - Old Intel drivers cannot reliably support D3D11: 363721
Screenshot by Lightshot - other ref to Old driver


GPU drivers versions

Our users have tried update GPU drivers (for example https://www.intel.com/content/www/us/en/support/detect.html ) with no changes in the bug.

NOTE: on the page
https://downloadcenter.intel.com/ru/download/24970/-HD-Intel-Windows-7-8-8-1-32-?product=53426

15.28.24.4229 (9.17.10.4229) для Windows * 7/8/8.1.

i.e. users cant install the last drivers due to old GPU, as I understand… or the driver installed is the last one.


Cant see blacklisted GPUs in this lists
https://www.khronos.org/webgl/wiki/BlacklistsAndWhitelists
https://chromium.googlesource.com/chromium/src/gpu/+/master/config/software_rendering_list.json


May be related Links

exactly warning message (HRESULT: 0x8876086C)

some facebook video trouble


ANGLE source with warning message


Webgl build with asm.js or webassembly with no difference.

Build in Unity version Unity 2018.4.6f1 (stable for compare) and Unity 5.6.5 (we have developed on this) - with no difference.

This reads like a Chrome/Chromium bug. Try reporting this against Chromium bug tracker at Chromium . If you have good and bad Chrome versions marked down, that may help them debug the issue.

I have found the workaround:
Clear target texture data (all 4 channels) before copy to it

RenderTexture.active = _reusableRtForUi;
GL.Clear(true, true, new Color(0, 0, 0, 0));
RenderTexture.active = null;

Graphics.Blit(_reusableRtForRenderAsset, _reusableRtForUi);

it potentially hurts performance due to additional Clear, pixels will be ignored when next Blit will copy from src to dest

General question: Is it mandatory to Clear RT before Blit to It (as dest) with copy shader? If yes - it’s strange, because RT content will be replaced after copy (via Blit). If no - then it’s chromium bug
… or misunderstanding between unity and browser protocol


also I have Editor warning (in unity 2018.4.6)
Tiled GPU perf. warning: RenderTexture color surface (256x256) was not cleared/discarded. See TiledGPUPerformanceWarning.ColorSurface label in Profiler for info
UnityEngine.Graphics:Blit(Texture, RenderTexture)

when GL ES Emulation is enabled for android in editor test
only when I have clear RT before Blit to it (as dest)
and it’s not changes - error still exist - when I clear After Blit i.e. say the Tiled Gpu to discard and not restore
and not have this warn (Tiled GPU perf.) when not clear RT before Blit

this bug report for example states what it’s a bug

it.s reproduces very simple