Search Unity

  1. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice

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

Discussion in 'WebGL' started by AlexHell, Oct 4, 2019.

  1. AlexHell


    Oct 2, 2014
    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

    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 - some driver bug workarounds.

    \ webgl 1.0 is supported

    \ webgl 2.0 is Not supported

    \ chrome version

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

    GPU drivers versions
    - 1st user
    2011 year version, version number 8.882...

    - 2nd user
    version number

    Our users have tried update GPU drivers (for example ) with no changes in the bug.

    NOTE: on the page
    >> ( для 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

    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.
    Last edited: Oct 4, 2019
  2. jukka_j


    Unity Technologies

    May 4, 2018
  3. AlexHell


    Oct 2, 2014
    I have found the workaround:
    Clear target texture data (all 4 channels) before copy to it = _reusableRtForUi;
    GL.Clear(true, true, new Color(0, 0, 0, 0)); = 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