[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