Graphics Feature Status
Canvas: Software only, hardware acceleration unavailable Canvas out-of-process rasterization: Disabled
Direct Rendering Display Compositor: Disabled Compositing: Software only. Hardware acceleration disabled Multiple Raster Threads: Enabled
OpenGL: Disabled
Rasterization: Software only. Hardware acceleration disabled Raw Draw: Disabled
Skia Renderer: Enabled
Video Decode: Software only. Hardware acceleration disabled Video Encode: Software only. Hardware acceleration disabled Vulkan: Disabled
WebGL: Software only, hardware acceleration unavailable WebGL2: Software only, hardware acceleration unavailable
We’ve done some further investigation and we think it’s something in the software rendering stack that is causing ReadPixels.
Forgive my ignorance here but if “WebGL” is in software-only mode, doesn’t that mean it’s not running on a GPU?
Forgive my ignorance here but if “WebGL” is in software-only mode, doesn’t that mean it’s not running on a GPU?
On May 17, 2022, at 11:54 AM, Kyle Charbonneau <kyle...@chromium.org> wrote:
We’ve done some further investigation and we think it’s something in the software rendering stack that is causing ReadPixels.I think that is expected with software rendering. The software renderer needs pixels in main memory. WebGL rendering is typically done on the GPU in GPU memory, so WebGL commands are executed on the GPU and the results are read back into main memory to be presented via SoftwareRenderer. I think that works the same with SwiftShader WebGL. Could the GPU main thread be blocked on a SwiftShader thread doing WebGL rendering?
On Tue, May 17, 2022 at 11:46 AM Justin Novosad <ju...@chromium.org> wrote:
That trace shows a ReadPixel that is not happening in the scope of JS execution.This is surprising. Can you share a reduced test case that reproduces this?
On Tue, May 17, 2022 at 11:39 AM Shukant Pal <shu...@teamflowhq.com> wrote:
We’ve done some further investigation and we think it’s something in the software rendering stack that is causing ReadPixels. We ran a trace against the PixiJS bunnymark and we see ReadPixels calls inside DoUpdateLayers there as well. It seems as if anything rendering to a canvas is being read back when updating the canvas layer.
<Screen Shot 2022-05-17 at 11.24.59 AM.png>
On May 17, 2022, at 11:54 AM, Kyle Charbonneau <kyle...@chromium.org> wrote:
We’ve done some further investigation and we think it’s something in the software rendering stack that is causing ReadPixels.I think that is expected with software rendering. The software renderer needs pixels in main memory. WebGL rendering is typically done on the GPU in GPU memory, so WebGL commands are executed on the GPU and the results are read back into main memory to be presented via SoftwareRenderer. I think that works the same with SwiftShader WebGL. Could the GPU main thread be blocked on a SwiftShader thread doing WebGL rendering?
On Tue, May 17, 2022 at 11:46 AM Justin Novosad <ju...@chromium.org> wrote:
That trace shows a ReadPixel that is not happening in the scope of JS execution.This is surprising. Can you share a reduced test case that reproduces this?
On Tue, May 17, 2022 at 11:39 AM Shukant Pal <shu...@teamflowhq.com> wrote:
We’ve done some further investigation and we think it’s something in the software rendering stack that is causing ReadPixels. We ran a trace against the PixiJS bunnymark and we see ReadPixels calls inside DoUpdateLayers there as well. It seems as if anything rendering to a canvas is being read back when updating the canvas layer.
<Screen Shot 2022-05-17 at 11.24.59 AM.png>
LayerTreeHost::DoUpdateLayers TextureLayer::Update DrawingBuffer::PrepareTransferableResource (as TextureLayerClient) DrawingBuffer::PrepareTransferableResourceInternal DrawingBuffer::FinishPrepareTransferableResourceSoftware DrawingBuffer::ReadFramebufferIntoBitmapPixels (in !IsUsingGpuCompositing() && !force_gpu_result branch) DrawingBuffer::ReadBackFramebuffer GLES2::ReadPixels
On May 17, 2022, at 11:48 AM, Justin Novosad <ju...@chromium.org> wrote:
Actually, nevermind the reduced test case, I will investigate this using the PixiJS bunnymark.
On Tue, May 17, 2022 at 11:45 AM Justin Novosad <ju...@chromium.org> wrote:
That trace shows a ReadPixel that is not happening in the scope of JS execution.This is surprising. Can you share a reduced test case that reproduces this?
On Tue, May 17, 2022 at 11:39 AM Shukant Pal <shu...@teamflowhq.com> wrote:
We’ve done some further investigation and we think it’s something in the software rendering stack that is causing ReadPixels. We ran a trace against the PixiJS bunnymark and we see ReadPixels calls inside DoUpdateLayers there as well. It seems as if anything rendering to a canvas is being read back when updating the canvas layer.
<Screen Shot 2022-05-17 at 11.24.59 AM.png>