[webkit-changes] [WebKit/WebKit] c82e88: [WebGPU] Recycle Textures and TextureViews from th...

mwyrzykowski noreply at github.com
Tue Oct 29 14:47:21 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c82e8887fedd66de190d8bc9f75f16710f856673
      https://github.com/WebKit/WebKit/commit/c82e8887fedd66de190d8bc9f75f16710f856673
  Author: Mike Wyrzykowski <mwyrzykowski at apple.com>
  Date:   2024-10-29 (Tue, 29 Oct 2024)

  Changed paths:
    M Source/WebCore/Modules/WebGPU/GPUCompositorIntegration.cpp
    M Source/WebCore/Modules/WebGPU/GPUCompositorIntegration.h
    M Source/WebCore/Modules/WebGPU/GPUPresentationContext.cpp
    M Source/WebCore/Modules/WebGPU/GPUPresentationContext.h
    M Source/WebCore/Modules/WebGPU/Implementation/WebGPUCompositorIntegrationImpl.cpp
    M Source/WebCore/Modules/WebGPU/Implementation/WebGPUCompositorIntegrationImpl.h
    M Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.cpp
    M Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.h
    M Source/WebCore/Modules/WebGPU/Implementation/WebGPUTextureImpl.cpp
    M Source/WebCore/Modules/WebGPU/Implementation/WebGPUTextureImpl.h
    M Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUCompositorIntegration.h
    M Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUPresentationContext.h
    M Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUTexture.h
    M Source/WebCore/html/canvas/GPUCanvasContextCocoa.h
    M Source/WebCore/html/canvas/GPUCanvasContextCocoa.mm
    M Source/WebGPU/WebGPU/CommandEncoder.mm
    M Source/WebGPU/WebGPU/PresentationContext.h
    M Source/WebGPU/WebGPU/PresentationContext.mm
    M Source/WebGPU/WebGPU/PresentationContextCoreAnimation.h
    M Source/WebGPU/WebGPU/PresentationContextCoreAnimation.mm
    M Source/WebGPU/WebGPU/PresentationContextIOSurface.h
    M Source/WebGPU/WebGPU/PresentationContextIOSurface.mm
    M Source/WebGPU/WebGPU/Queue.mm
    M Source/WebGPU/WebGPU/Texture.mm
    M Source/WebGPU/WebGPU/WebGPU.h
    M Source/WebGPU/WebGPU/WebGPUExt.h
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.cpp
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.h
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.messages.in
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemotePresentationContext.cpp
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemotePresentationContext.h
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemotePresentationContext.messages.in
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteTexture.cpp
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteTexture.h
    M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteTexture.messages.in
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteCompositorIntegrationProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteCompositorIntegrationProxy.h
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteComputePassEncoderProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteComputePassEncoderProxy.h
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemotePresentationContextProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemotePresentationContextProxy.h
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteRenderPassEncoderProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteRenderPassEncoderProxy.h
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteTextureProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteTextureProxy.h
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteTextureViewProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteTextureViewProxy.h

  Log Message:
  -----------
  [WebGPU] Recycle Textures and TextureViews from the canvas context
https://bugs.webkit.org/show_bug.cgi?id=278936
rdar://135030724

Reviewed by Tadeu Zagallo.

WebGPU requires getCurrentTexture() to be called every frame, which resulted
in a new IPC received and sender being created every frame, which results
in too many objects accumulated in iOS leading to eventual jetsams.

This is not needed, we can just recycle the textures.

* Source/WebCore/Modules/WebGPU/GPUCompositorIntegration.cpp:
(WebCore::GPUCompositorIntegration::prepareForDisplay):
* Source/WebCore/Modules/WebGPU/GPUCompositorIntegration.h:
* Source/WebCore/Modules/WebGPU/GPUPresentationContext.cpp:
(WebCore::GPUPresentationContext::getCurrentTexture):
(WebCore::GPUPresentationContext::present):
* Source/WebCore/Modules/WebGPU/GPUPresentationContext.h:
* Source/WebCore/Modules/WebGPU/Implementation/WebGPUCompositorIntegrationImpl.cpp:
(WebCore::WebGPU::CompositorIntegrationImpl::prepareForDisplay):
* Source/WebCore/Modules/WebGPU/Implementation/WebGPUCompositorIntegrationImpl.h:
* Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.cpp:
(WebCore::WebGPU::PresentationContextImpl::getCurrentTexture):
(WebCore::WebGPU::PresentationContextImpl::present):
* Source/WebCore/Modules/WebGPU/Implementation/WebGPUPresentationContextImpl.h:
* Source/WebCore/Modules/WebGPU/Implementation/WebGPUTextureImpl.cpp:
(WebCore::WebGPU::TextureImpl::undestroy):
* Source/WebCore/Modules/WebGPU/Implementation/WebGPUTextureImpl.h:
* Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUCompositorIntegration.h:
* Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUPresentationContext.h:
* Source/WebCore/Modules/WebGPU/InternalAPI/WebGPUTexture.h:
* Source/WebCore/html/canvas/GPUCanvasContextCocoa.h:
* Source/WebCore/html/canvas/GPUCanvasContextCocoa.mm:
(WebCore::GPUCanvasContextCocoa::surfaceBufferToImageBuffer):
(WebCore::GPUCanvasContextCocoa::transferToImageBuffer):
(WebCore::GPUCanvasContextCocoa::getCurrentTexture):
(WebCore::GPUCanvasContextCocoa::present):
(WebCore::GPUCanvasContextCocoa::prepareForDisplay):
* Source/WebGPU/WebGPU/PresentationContext.h:
* Source/WebGPU/WebGPU/PresentationContext.mm:
(WebGPU::PresentationContext::present):
(WebGPU::PresentationContext::getCurrentTexture):
(wgpuSwapChainGetCurrentTexture):
(wgpuSwapChainPresent):
* Source/WebGPU/WebGPU/PresentationContextCoreAnimation.h:
* Source/WebGPU/WebGPU/PresentationContextCoreAnimation.mm:
(WebGPU::PresentationContextCoreAnimation::present):
(WebGPU::PresentationContextCoreAnimation::getCurrentTexture):
* Source/WebGPU/WebGPU/PresentationContextIOSurface.h:
* Source/WebGPU/WebGPU/PresentationContextIOSurface.mm:
(WebGPU::PresentationContextIOSurface::configure):
* Source/WebGPU/WebGPU/RenderPassEncoder.h:
* Source/WebGPU/WebGPU/RenderPassEncoder.mm:
(WebGPU::m_maxDrawCount):
(WebGPU::RenderPassEncoder::endPass):
* Source/WebGPU/WebGPU/Texture.mm:
(wgpuTextureUndestroy):
* Source/WebGPU/WebGPU/WebGPU.h:
* Source/WebGPU/WebGPU/WebGPUExt.h:
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.cpp:
(WebKit::RemoteCompositorIntegration::prepareForDisplay):
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.h:
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteCompositorIntegration.messages.in:
* Source/WebKit/GPUProcess/graphics/WebGPU/RemotePresentationContext.cpp:
(WebKit::RemotePresentationContext::present):
(WebKit::RemotePresentationContext::getCurrentTexture):
* Source/WebKit/GPUProcess/graphics/WebGPU/RemotePresentationContext.h:
* Source/WebKit/GPUProcess/graphics/WebGPU/RemotePresentationContext.messages.in:
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteTexture.cpp:
(WebKit::RemoteTexture::undestroy):
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteTexture.h:
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteTexture.messages.in:
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteCompositorIntegrationProxy.cpp:
(WebKit::WebGPU::RemoteCompositorIntegrationProxy::prepareForDisplay):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteCompositorIntegrationProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteComputePassEncoderProxy.cpp:
(WebKit::WebGPU::RemoteComputePassEncoderProxy::RemoteComputePassEncoderProxy):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteComputePassEncoderProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemotePresentationContextProxy.cpp:
(WebKit::WebGPU::RemotePresentationContextProxy::unconfigure):
(WebKit::WebGPU::RemotePresentationContextProxy::getCurrentTexture):
(WebKit::WebGPU::RemotePresentationContextProxy::present):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemotePresentationContextProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteRenderPassEncoderProxy.cpp:
(WebKit::WebGPU::RemoteRenderPassEncoderProxy::RemoteRenderPassEncoderProxy):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteRenderPassEncoderProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteTextureProxy.cpp:
(WebKit::WebGPU::RemoteTextureProxy::RemoteTextureProxy):
(WebKit::WebGPU::equalDescriptors):
(WebKit::WebGPU::RemoteTextureProxy::createView):
(WebKit::WebGPU::RemoteTextureProxy::undestroy):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteTextureProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteTextureViewProxy.cpp:
(WebKit::WebGPU::RemoteTextureViewProxy::RemoteTextureViewProxy):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteTextureViewProxy.h:

Canonical link: https://commits.webkit.org/285860@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list