• Peng Huang's avatar
    ExternalVkImageBacking: fix concurrent read problem · 0c9696bf
    Peng Huang authored
    Concurrent read access from both GL and Vulkan is not allowed.
    Get rid of the concurrent read problem by releasing the texture
    from GL temporarily, when a Vulkan read is requested. And resume
    GL read access, when the Vulkan read access is over.
    Current chrome GL and Vulkan concurrent read pattern is - Blink holds
    and caches read access for a backing shared image for a WebGL or
    2D canvas. SkiaOutputSurfaceImplOnGpu only requests read access just
    before playing back DDL and releases the read access after playing back
    DDL and before SwapBuffers. The GPU will not schedule other tasks
    between playing back DDL and SwapBuffers. So it should be safe to
    temporarily pause GL read access.
    
    Bug: 1104231
    Change-Id: I729eeebd5196bc5387ac148133b5926358bb4b53
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2311330Reviewed-by: default avatarVasiliy Telezhnikov <vasilyt@chromium.org>
    Commit-Queue: Peng Huang <penghuang@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#791022}
    0c9696bf
external_vk_image_backing.cc 41.4 KB