[webkit-changes] [WebKit/WebKit] e3d86b: [WebGPU] Create and render to IOSurfaces from the ...
mwyrzykowski
noreply at github.com
Thu Nov 17 18:27:01 PST 2022
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: e3d86bfd034bfab0d444070be8e4954dca2d62c7
https://github.com/WebKit/WebKit/commit/e3d86bfd034bfab0d444070be8e4954dca2d62c7
Author: Mike Wyrzykowski <mwyrzykowski at apple.com>
Date: 2022-11-17 (Thu, 17 Nov 2022)
Changed paths:
M Source/WTF/wtf/PlatformEnable.h
M Source/WTF/wtf/PlatformEnableCocoa.h
M Source/WTF/wtf/PlatformHave.h
M Source/WebCore/Modules/WebGPU/GPUDevice.cpp
M Source/WebCore/Modules/WebGPU/GPUDevice.h
A Source/WebCore/Modules/WebGPU/GPUSurface.cpp
A Source/WebCore/Modules/WebGPU/GPUSurface.h
A Source/WebCore/Modules/WebGPU/GPUSurfaceDescriptor.h
A Source/WebCore/Modules/WebGPU/GPUSwapChain.cpp
A Source/WebCore/Modules/WebGPU/GPUSwapChain.h
A Source/WebCore/Modules/WebGPU/GPUSwapChainDescriptor.h
M Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj
M Source/WebCore/PAL/pal/CMakeLists.txt
M Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUConvertToBackingContext.h
M Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUDeviceImpl.cpp
M Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUDeviceImpl.h
M Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUDowncastConvertToBackingContext.cpp
M Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUDowncastConvertToBackingContext.h
A Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUSurfaceImpl.cpp
A Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUSurfaceImpl.h
A Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUSwapChainImpl.cpp
A Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUSwapChainImpl.h
M Source/WebCore/PAL/pal/graphics/WebGPU/WebGPUDevice.h
A Source/WebCore/PAL/pal/graphics/WebGPU/WebGPUSurface.h
A Source/WebCore/PAL/pal/graphics/WebGPU/WebGPUSurfaceDescriptor.h
A Source/WebCore/PAL/pal/graphics/WebGPU/WebGPUSwapChain.h
A Source/WebCore/PAL/pal/graphics/WebGPU/WebGPUSwapChainDescriptor.h
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/dom/Document.idl
M Source/WebCore/html/HTMLCanvasElement.cpp
M Source/WebCore/html/HTMLCanvasElement.h
M Source/WebCore/html/HTMLCanvasElement.idl
M Source/WebCore/html/canvas/GPUCanvasContext.cpp
M Source/WebCore/html/canvas/GPUCanvasContext.h
M Source/WebCore/html/canvas/GPUCanvasContext.idl
M Source/WebCore/platform/graphics/IntSize.h
M Source/WebCore/platform/graphics/cocoa/IOSurface.h
M Source/WebGPU/WebGPU/Device.h
M Source/WebGPU/WebGPU/Device.mm
M Source/WebGPU/WebGPU/Instance.mm
M Source/WebGPU/WebGPU/Surface.h
M Source/WebGPU/WebGPU/Surface.mm
M Source/WebGPU/WebGPU/SwapChain.h
M Source/WebGPU/WebGPU/SwapChain.mm
M Source/WebGPU/WebGPU/Texture.mm
M Source/WebGPU/WebGPU/WebGPUExt.h
M Source/WebKit/CMakeLists.txt
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources-output.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.cpp
M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.h
M Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.messages.in
A Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSurface.cpp
A Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSurface.h
A Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSurface.messages.in
A Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSwapChain.cpp
A Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSwapChain.h
A Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSwapChain.messages.in
M Source/WebKit/GPUProcess/graphics/WebGPU/WebGPUObjectHeap.cpp
M Source/WebKit/GPUProcess/graphics/WebGPU/WebGPUObjectHeap.h
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Shared/WebGPU/WebGPUConvertFromBackingContext.h
M Source/WebKit/Shared/WebGPU/WebGPUConvertToBackingContext.h
A Source/WebKit/Shared/WebGPU/WebGPUSurfaceDescriptor.cpp
A Source/WebKit/Shared/WebGPU/WebGPUSurfaceDescriptor.h
A Source/WebKit/Shared/WebGPU/WebGPUSurfaceDescriptor.serialization.in
A Source/WebKit/Shared/WebGPU/WebGPUSwapChainDescriptor.cpp
A Source/WebKit/Shared/WebGPU/WebGPUSwapChainDescriptor.h
A Source/WebKit/Shared/WebGPU/WebGPUSwapChainDescriptor.serialization.in
M Source/WebKit/Sources.txt
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.h
A Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteSurfaceProxy.cpp
A Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteSurfaceProxy.h
A Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteSwapChainProxy.cpp
A Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteSwapChainProxy.h
M Source/WebKit/WebProcess/GPU/graphics/WebGPU/WebGPUDowncastConvertToBackingContext.cpp
M Source/WebKit/WebProcess/GPU/graphics/WebGPU/WebGPUDowncastConvertToBackingContext.h
Log Message:
-----------
[WebGPU] Create and render to IOSurfaces from the GPU process
https://bugs.webkit.org/show_bug.cgi?id=247587
<rdar://101922518>
Reviewed by Dean Jackson.
Create and render to IOSurfaces from the GPU process.
Send them back to the web process via mach port handles.
* Source/WTF/wtf/PlatformEnable.h:
* Source/WTF/wtf/PlatformEnableCocoa.h:
* Source/WTF/wtf/PlatformHave.h:
Remove ENABLE_WEBGPU as it overlapped with HAVE_WEBGPU_IMPLEMENTATION.
* Source/WebCore/Modules/WebGPU/GPUDevice.cpp:
(WebCore::GPUDevice::createSurfaceTexture):
(WebCore::GPUDevice::createSurface):
(WebCore::GPUDevice::createSwapChain):
* Source/WebCore/Modules/WebGPU/GPUDevice.h:
* Source/WebCore/Modules/WebGPU/GPUSurface.cpp: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
(WebCore::GPUSurface::label const):
(WebCore::GPUSurface::setLabel):
(WebCore::GPUSurface::destroy):
* Source/WebCore/Modules/WebGPU/GPUSurface.h: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
(WebCore::GPUSurface::create):
(WebCore::GPUSurface::backing):
(WebCore::GPUSurface::backing const):
(WebCore::GPUSurface::GPUSurface):
* Source/WebCore/Modules/WebGPU/GPUSurface.idl: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
* Source/WebCore/Modules/WebGPU/GPUSurfaceDescriptor.h: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
(WebCore::GPUSurfaceDescriptor::convertToBacking const):
* Source/WebCore/Modules/WebGPU/GPUSwapChain.cpp: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
(WebCore::GPUSwapChain::label const):
(WebCore::GPUSwapChain::setLabel):
(WebCore::GPUSwapChain::prepareForDisplay):
(WebCore::GPUSwapChain::destroy):
* Source/WebCore/Modules/WebGPU/GPUSwapChain.h: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
(WebCore::GPUSwapChain::create):
(WebCore::GPUSwapChain::backing):
(WebCore::GPUSwapChain::backing const):
(WebCore::GPUSwapChain::GPUSwapChain):
* Source/WebCore/Modules/WebGPU/GPUSwapChainDescriptor.h: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
(WebCore::GPUSwapChainDescriptor::convertToBacking const):
Send surface and swap chain concepts from WebProcess layer to GPUProcess layer.
* Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj:
* Source/WebCore/PAL/pal/CMakeLists.txt:
* Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUConvertToBackingContext.h:
* Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUDeviceImpl.h:
* Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUDowncastConvertToBackingContext.cpp:
(PAL::WebGPU::DowncastConvertToBackingContext::convertToBacking):
* Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUDowncastConvertToBackingContext.h:
* Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUSurfaceImpl.cpp: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
(PAL::WebGPU::SurfaceImpl::SurfaceImpl):
(PAL::WebGPU::SurfaceImpl::~SurfaceImpl):
(PAL::WebGPU::SurfaceImpl::destroy):
(PAL::WebGPU::SurfaceImpl::setLabelInternal):
(PAL::WebGPU::SurfaceImpl::displayBufferHandle const):
(PAL::WebGPU::SurfaceImpl::drawingBuffer const):
* Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUSurfaceImpl.h: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
* Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUSwapChainImpl.cpp: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
(PAL::WebGPU::SwapChainImpl::SwapChainImpl):
(PAL::WebGPU::SwapChainImpl::~SwapChainImpl):
(PAL::WebGPU::SwapChainImpl::destroy):
(PAL::WebGPU::SwapChainImpl::prepareForDisplay):
(PAL::WebGPU::SwapChainImpl::setLabelInternal):
* Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUSwapChainImpl.h: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
* Source/WebCore/PAL/pal/graphics/WebGPU/WebGPUDevice.h:
* Source/WebCore/PAL/pal/graphics/WebGPU/WebGPUSurface.h: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
(PAL::WebGPU::Surface::label const):
(PAL::WebGPU::Surface::setLabel):
* Source/WebCore/PAL/pal/graphics/WebGPU/WebGPUSurfaceDescriptor.h: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
* Source/WebCore/PAL/pal/graphics/WebGPU/WebGPUSwapChain.h: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
(PAL::WebGPU::SwapChain::label const):
(PAL::WebGPU::SwapChain::setLabel):
* Source/WebCore/PAL/pal/graphics/WebGPU/WebGPUSwapChainDescriptor.h: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::getCSSCanvasContext):
Send surface and swap chain concepts from WebProcess layer to GPUProcess layer.
* Source/WebCore/dom/Document.h:
* Source/WebCore/dom/Document.idl:
* Source/WebCore/html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::getContext):
* Source/WebCore/html/HTMLCanvasElement.h:
* Source/WebCore/html/HTMLCanvasElement.idl:
Use HAVE_WEBGPU_IMPLEMENTATION instead of ENABLE_WEBGPU as the former was added earlier.
* Source/WebCore/html/canvas/GPUCanvasContext.cpp:
(WebCore::GPUCanvasContext::GPUCanvasContext):
(WebCore::GPUCanvasContext::reshape):
(WebCore::GPUCanvasContext::configure):
(WebCore::GPUCanvasContext::createSwapChainIfNeeded):
(WebCore::GPUCanvasContext::getCurrentTexture):
(WebCore::GPUCanvasContext::unconfigure):
(WebCore::GPUCanvasContext::layerContentsDisplayDelegate):
(WebCore::GPUCanvasContext::prepareForDisplay):
* Source/WebCore/html/canvas/GPUCanvasContext.h:
* Source/WebCore/html/canvas/GPUCanvasContext.idl:
* Source/WebCore/platform/graphics/IntSize.h:
* Source/WebCore/platform/graphics/cocoa/IOSurface.h:
* Source/WebGPU/WebGPU/Device.h:
* Source/WebGPU/WebGPU/Device.mm:
(wgpuDeviceCreateSwapChain):
* Source/WebGPU/WebGPU/Instance.mm:
(WebGPU::Instance::createSurface):
(wgpuGetProcAddress):
(wgpuInstanceCreateSurface): Deleted.
Moved surface creation to Surface.mm
* Source/WebGPU/WebGPU/Surface.h:
(WebGPU::Surface::create):
(WebGPU::Surface::displayBuffer const):
(WebGPU::Surface::drawingBuffer const):
* Source/WebGPU/WebGPU/Surface.mm:
(optionsFor32BitSurface):
(createIOSurface):
(createSurfaceFromDescriptor):
(wgpuSurfaceCocoaCustomSurfaceGetDisplayBuffer):
(wgpuSurfaceCocoaCustomSurfaceGetDrawingBuffer):
(wgpuInstanceCreateSurface):
(WebGPU::Device::createSurface):
(WebGPU::Surface::Surface):
(WebGPU::Surface::getPreferredFormat):
(WebGPU::Surface::nextDrawable):
Modeled after CAMetalLayer
* Source/WebGPU/WebGPU/SwapChain.h:
(WebGPU::SwapChain::create):
* Source/WebGPU/WebGPU/SwapChain.mm:
(WebGPU::Device::createSwapChain):
(WebGPU::SwapChain::SwapChain):
(WebGPU::SwapChain::present):
(wgpuSwapChainGetCurrentTextureView):
(WebGPU::SwapChain::getCurrentTextureView): Deleted.
* Source/WebGPU/WebGPU/Texture.mm:
(WebGPU::Device::createTexture):
* Source/WebGPU/WebGPU/WebGPUExt.h:
Add IOSurface functions.
* Source/WebKit/CMakeLists.txt:
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
Add new files.
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.cpp:
(WebKit::RemoteDevice::createSurface):
(WebKit::RemoteDevice::createSwapChain):
(WebKit::RemoteDevice::createSurfaceTexture):
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.h:
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteDevice.messages.in:
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSurface.cpp: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
(WebKit::RemoteSurface::RemoteSurface):
(WebKit::RemoteSurface::stopListeningForIPC):
(WebKit::RemoteSurface::destroy):
(WebKit::RemoteSurface::setLabel):
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSurface.h: Added.
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSurface.messages.in: Added.
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSwapChain.cpp: Added.
(WebKit::RemoteSwapChain::RemoteSwapChain):
(WebKit::RemoteSwapChain::stopListeningForIPC):
(WebKit::RemoteSwapChain::destroy):
(WebKit::RemoteSwapChain::setLabel):
(WebKit::RemoteSwapChain::prepareForDisplay):
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSwapChain.h: Added.
* Source/WebKit/GPUProcess/graphics/WebGPU/RemoteSwapChain.messages.in: Added.
* Source/WebKit/GPUProcess/graphics/WebGPU/WebGPUObjectHeap.cpp:
(WebKit::WebGPU::ObjectHeap::addObject):
(WebKit::WebGPU::ObjectHeap::convertSurfaceFromBacking):
(WebKit::WebGPU::ObjectHeap::convertSwapChainFromBacking):
* Source/WebKit/GPUProcess/graphics/WebGPU/WebGPUObjectHeap.h:
* Source/WebKit/Scripts/webkit/messages.py:
(headers_for_type):
* Source/WebKit/Shared/WebGPU/WebGPUConvertFromBackingContext.h:
* Source/WebKit/Shared/WebGPU/WebGPUConvertToBackingContext.h:
* Source/WebKit/Shared/WebGPU/WebGPUSurfaceDescriptor.cpp: Added.
(WebKit::WebGPU::ConvertToBackingContext::convertToBacking):
(WebKit::WebGPU::ConvertFromBackingContext::convertFromBacking):
* Source/WebKit/Shared/WebGPU/WebGPUSurfaceDescriptor.h: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
* Source/WebKit/Shared/WebGPU/WebGPUSurfaceDescriptor.serialization.in: Added.
* Source/WebKit/Shared/WebGPU/WebGPUSwapChainDescriptor.cpp: Added.
(WebKit::WebGPU::ConvertToBackingContext::convertToBacking):
(WebKit::WebGPU::ConvertFromBackingContext::convertFromBacking):
* Source/WebKit/Shared/WebGPU/WebGPUSwapChainDescriptor.h: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
* Source/WebKit/Shared/WebGPU/WebGPUSwapChainDescriptor.serialization.in: Added.
* Source/WebKit/Sources.txt:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.cpp:
(WebKit::WebGPU::RemoteDeviceProxy::createSurface):
(WebKit::WebGPU::RemoteDeviceProxy::createSwapChain):
(WebKit::WebGPU::RemoteDeviceProxy::createTexture):
(WebKit::WebGPU::RemoteDeviceProxy::createSurfaceTexture):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteDeviceProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteSurfaceProxy.cpp: Copied from Source/WebCore/html/canvas/GPUCanvasContext.idl.
(WebKit::WebGPU::RemoteSurfaceProxy::RemoteSurfaceProxy):
(WebKit::WebGPU::RemoteSurfaceProxy::~RemoteSurfaceProxy):
(WebKit::WebGPU::RemoteSurfaceProxy::destroy):
(WebKit::WebGPU::RemoteSurfaceProxy::setLabelInternal):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteSurfaceProxy.h: Added.
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteSwapChainProxy.cpp: Added.
(WebKit::WebGPU::RemoteSwapChainProxy::RemoteSwapChainProxy):
(WebKit::WebGPU::RemoteSwapChainProxy::~RemoteSwapChainProxy):
(WebKit::WebGPU::RemoteSwapChainProxy::destroy):
(WebKit::WebGPU::RemoteSwapChainProxy::setLabelInternal):
(WebKit::WebGPU::RemoteSwapChainProxy::prepareForDisplay):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/RemoteSwapChainProxy.h: Added.
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/WebGPUDowncastConvertToBackingContext.cpp:
(WebKit::WebGPU::DowncastConvertToBackingContext::convertToBacking):
* Source/WebKit/WebProcess/GPU/graphics/WebGPU/WebGPUDowncastConvertToBackingContext.h:
Send surface and swap chain concepts from WebProcess layer to GPUProcess layer.
Canonical link: https://commits.webkit.org/256817@main
More information about the webkit-changes
mailing list