⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 293106 in webkit


Ignore:
Timestamp:
Apr 20, 2022, 10:43:39 AM (4 years ago)
Author:
mmaxfield@apple.com
Message:

[WebGPU] WebKit and WebKitLegacy shouldn't need to know about WebGPU.framework
https://bugs.webkit.org/show_bug.cgi?id=239528
<rdar://problem/91740931>

Unreviewed build fix.

Source/WebCore/PAL:

WebKit and WebKitLegacy create a WebGPU implementation from pal/graphics/WebGPU/Impl. This implementation
knows about WebGPU.framework. However, the create() function doesn't need to know about WebGPU.framework,
and its header doesn't need to include <WebGPU/WebGPU.h>. Only the .cpp files need to know about
<WebGPU/WebGPU.h>, and those .cpp files are invisible from WebKit and WebKitLegacy's points of view. So,
this patch splits the PAL header into:

  1. A header which includes a creation function, but doesn't know about WebGPU.framework, and
  2. A header which knows about WebGPU.framework, but doesn't hold the creation function used by WebKit or

WebKitLegacy.

This fixes one of Apple's internal builds.

  • PAL.xcodeproj/project.pbxproj:
  • pal/graphics/WebGPU/Impl/WebGPUCreateImpl.cpp: Copied from Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUImpl.cpp.

(PAL::WebGPU::create):

  • pal/graphics/WebGPU/Impl/WebGPUCreateImpl.h: Copied from Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUImpl.h.
  • pal/graphics/WebGPU/Impl/WebGPUImpl.cpp:

(PAL::WebGPU::GPUImpl::create): Deleted.

  • pal/graphics/WebGPU/Impl/WebGPUImpl.h:

Source/WebKit:

  • GPUProcess/graphics/WebGPU/RemoteGPU.cpp:

(WebKit::RemoteGPU::workQueueInitialize):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createGPUForWebGPU const):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::createGPUForWebGPU const):

Location:
trunk/Source
Files:
9 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/PAL/ChangeLog

    r293096 r293106  
     12022-04-20  Myles C. Maxfield  <mmaxfield@apple.com>
     2
     3        [WebGPU] WebKit and WebKitLegacy shouldn't need to know about WebGPU.framework
     4        https://bugs.webkit.org/show_bug.cgi?id=239528
     5        <rdar://problem/91740931>
     6
     7        Unreviewed build fix.
     8
     9        WebKit and WebKitLegacy create a WebGPU implementation from pal/graphics/WebGPU/Impl. This implementation
     10        knows about WebGPU.framework. However, the create() function doesn't need to know about WebGPU.framework,
     11        and its header doesn't need to include <WebGPU/WebGPU.h>. Only the .cpp files need to know about
     12        <WebGPU/WebGPU.h>, and those .cpp files are invisible from WebKit and WebKitLegacy's points of view. So,
     13        this patch splits the PAL header into:
     14        1. A header which includes a creation function, but doesn't know about WebGPU.framework, and
     15        2. A header which knows about WebGPU.framework, but doesn't hold the creation function used by WebKit or
     16               WebKitLegacy.
     17
     18        This fixes one of Apple's internal builds.
     19
     20        * PAL.xcodeproj/project.pbxproj:
     21        * pal/graphics/WebGPU/Impl/WebGPUCreateImpl.cpp: Copied from Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUImpl.cpp.
     22        (PAL::WebGPU::create):
     23        * pal/graphics/WebGPU/Impl/WebGPUCreateImpl.h: Copied from Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUImpl.h.
     24        * pal/graphics/WebGPU/Impl/WebGPUImpl.cpp:
     25        (PAL::WebGPU::GPUImpl::create): Deleted.
     26        * pal/graphics/WebGPU/Impl/WebGPUImpl.h:
     27
    1282022-04-20  Myles C. Maxfield  <mmaxfield@apple.com>
    229
  • trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj

    r292742 r293106  
    6363                1CB709FC28034EDF00A3A637 /* WebGPUDeviceHolderImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1CB709FA28034EDF00A3A637 /* WebGPUDeviceHolderImpl.cpp */; };
    6464                1CB709FD28034EDF00A3A637 /* WebGPUDeviceHolderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CB709FB28034EDF00A3A637 /* WebGPUDeviceHolderImpl.h */; };
     65                1CCA5EFF280FABB4008A6F78 /* WebGPUCreateImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1CCA5EFD280FABB4008A6F78 /* WebGPUCreateImpl.cpp */; };
     66                1CCA5F00280FABB4008A6F78 /* WebGPUCreateImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CCA5EFE280FABB4008A6F78 /* WebGPUCreateImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    6567                1D2B413425F05E3500A3F70A /* ClockGeneric.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1D2B413225F05E3400A3F70A /* ClockGeneric.cpp */; };
    6668                293EE4A824154F8F0047493D /* AccessibilitySupportSoftLink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 293EE4A624154F8F0047493D /* AccessibilitySupportSoftLink.cpp */; };
     
    115117                DD20DD2627BC90D60093D175 /* VisionKitCoreSoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = F46B8C4B267408FA007A6554 /* VisionKitCoreSoftLink.h */; settings = {ATTRIBUTES = (Private, ); }; };
    116118                DD20DD2727BC90D60093D175 /* CryptoDigest.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C09D0521E31C44100725F18 /* CryptoDigest.h */; settings = {ATTRIBUTES = (Private, ); }; };
    117                 DD20DD2827BC90D60093D175 /* WebGPUAdapterImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6AE273F4245004B17B0 /* WebGPUAdapterImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    118                 DD20DD2927BC90D60093D175 /* WebGPUBindGroupImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A1273F4243004B17B0 /* WebGPUBindGroupImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    119                 DD20DD2A27BC90D60093D175 /* WebGPUBindGroupLayoutImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E69C273F4243004B17B0 /* WebGPUBindGroupLayoutImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    120                 DD20DD2B27BC90D60093D175 /* WebGPUBufferImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A2273F4243004B17B0 /* WebGPUBufferImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    121                 DD20DD2C27BC90D60093D175 /* WebGPUCommandBufferImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A4273F4244004B17B0 /* WebGPUCommandBufferImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    122                 DD20DD2D27BC90D60093D175 /* WebGPUCommandEncoderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6AB273F4245004B17B0 /* WebGPUCommandEncoderImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    123                 DD20DD2E27BC90D60093D175 /* WebGPUComputePassEncoderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E69E273F4243004B17B0 /* WebGPUComputePassEncoderImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    124                 DD20DD2F27BC90D60093D175 /* WebGPUComputePipelineImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6AF273F4245004B17B0 /* WebGPUComputePipelineImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    125                 DD20DD3027BC90D60093D175 /* WebGPUConvertToBackingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6B6273F85BC004B17B0 /* WebGPUConvertToBackingContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
    126                 DD20DD3127BC90D60093D175 /* WebGPUDeviceImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6AD273F4245004B17B0 /* WebGPUDeviceImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    127                 DD20DD3227BC90D60093D175 /* WebGPUDowncastConvertToBackingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C36C52D2743011A006DA4C1 /* WebGPUDowncastConvertToBackingContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
    128                 DD20DD3327BC90D60093D175 /* WebGPUExternalTextureImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6BB27405E3C004B17B0 /* WebGPUExternalTextureImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    129                 DD20DD3427BC90D60093D175 /* WebGPUImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E69B273F4242004B17B0 /* WebGPUImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    130                 DD20DD3527BC90D60093D175 /* WebGPUPipelineLayoutImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E69D273F4243004B17B0 /* WebGPUPipelineLayoutImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    131                 DD20DD3627BC90D60093D175 /* WebGPUQuerySetImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A8273F4244004B17B0 /* WebGPUQuerySetImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    132                 DD20DD3727BC90D60093D175 /* WebGPUQueueImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A5273F4244004B17B0 /* WebGPUQueueImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    133                 DD20DD3827BC90D60093D175 /* WebGPURenderBundleEncoderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E69A273F4242004B17B0 /* WebGPURenderBundleEncoderImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    134                 DD20DD3927BC90D60093D175 /* WebGPURenderBundleImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A6273F4244004B17B0 /* WebGPURenderBundleImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    135                 DD20DD3A27BC90D60093D175 /* WebGPURenderPassEncoderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A3273F4244004B17B0 /* WebGPURenderPassEncoderImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    136                 DD20DD3B27BC90D60093D175 /* WebGPURenderPipelineImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A9273F4244004B17B0 /* WebGPURenderPipelineImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    137                 DD20DD3C27BC90D60093D175 /* WebGPUSamplerImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A7273F4244004B17B0 /* WebGPUSamplerImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    138                 DD20DD3D27BC90D60093D175 /* WebGPUShaderModuleImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6AA273F4245004B17B0 /* WebGPUShaderModuleImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    139                 DD20DD3E27BC90D60093D175 /* WebGPUTextureImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E69F273F4243004B17B0 /* WebGPUTextureImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
    140                 DD20DD3F27BC90D70093D175 /* WebGPUTextureViewImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6AC273F4245004B17B0 /* WebGPUTextureViewImpl.h */; settings = {ATTRIBUTES = (Private, ); }; };
     119                DD20DD2827BC90D60093D175 /* WebGPUAdapterImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6AE273F4245004B17B0 /* WebGPUAdapterImpl.h */; };
     120                DD20DD2927BC90D60093D175 /* WebGPUBindGroupImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A1273F4243004B17B0 /* WebGPUBindGroupImpl.h */; };
     121                DD20DD2A27BC90D60093D175 /* WebGPUBindGroupLayoutImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E69C273F4243004B17B0 /* WebGPUBindGroupLayoutImpl.h */; };
     122                DD20DD2B27BC90D60093D175 /* WebGPUBufferImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A2273F4243004B17B0 /* WebGPUBufferImpl.h */; };
     123                DD20DD2C27BC90D60093D175 /* WebGPUCommandBufferImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A4273F4244004B17B0 /* WebGPUCommandBufferImpl.h */; };
     124                DD20DD2D27BC90D60093D175 /* WebGPUCommandEncoderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6AB273F4245004B17B0 /* WebGPUCommandEncoderImpl.h */; };
     125                DD20DD2E27BC90D60093D175 /* WebGPUComputePassEncoderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E69E273F4243004B17B0 /* WebGPUComputePassEncoderImpl.h */; };
     126                DD20DD2F27BC90D60093D175 /* WebGPUComputePipelineImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6AF273F4245004B17B0 /* WebGPUComputePipelineImpl.h */; };
     127                DD20DD3027BC90D60093D175 /* WebGPUConvertToBackingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6B6273F85BC004B17B0 /* WebGPUConvertToBackingContext.h */; };
     128                DD20DD3127BC90D60093D175 /* WebGPUDeviceImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6AD273F4245004B17B0 /* WebGPUDeviceImpl.h */; };
     129                DD20DD3227BC90D60093D175 /* WebGPUDowncastConvertToBackingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C36C52D2743011A006DA4C1 /* WebGPUDowncastConvertToBackingContext.h */; };
     130                DD20DD3327BC90D60093D175 /* WebGPUExternalTextureImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6BB27405E3C004B17B0 /* WebGPUExternalTextureImpl.h */; };
     131                DD20DD3427BC90D60093D175 /* WebGPUImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E69B273F4242004B17B0 /* WebGPUImpl.h */; };
     132                DD20DD3527BC90D60093D175 /* WebGPUPipelineLayoutImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E69D273F4243004B17B0 /* WebGPUPipelineLayoutImpl.h */; };
     133                DD20DD3627BC90D60093D175 /* WebGPUQuerySetImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A8273F4244004B17B0 /* WebGPUQuerySetImpl.h */; };
     134                DD20DD3727BC90D60093D175 /* WebGPUQueueImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A5273F4244004B17B0 /* WebGPUQueueImpl.h */; };
     135                DD20DD3827BC90D60093D175 /* WebGPURenderBundleEncoderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E69A273F4242004B17B0 /* WebGPURenderBundleEncoderImpl.h */; };
     136                DD20DD3927BC90D60093D175 /* WebGPURenderBundleImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A6273F4244004B17B0 /* WebGPURenderBundleImpl.h */; };
     137                DD20DD3A27BC90D60093D175 /* WebGPURenderPassEncoderImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A3273F4244004B17B0 /* WebGPURenderPassEncoderImpl.h */; };
     138                DD20DD3B27BC90D60093D175 /* WebGPURenderPipelineImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A9273F4244004B17B0 /* WebGPURenderPipelineImpl.h */; };
     139                DD20DD3C27BC90D60093D175 /* WebGPUSamplerImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6A7273F4244004B17B0 /* WebGPUSamplerImpl.h */; };
     140                DD20DD3D27BC90D60093D175 /* WebGPUShaderModuleImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6AA273F4245004B17B0 /* WebGPUShaderModuleImpl.h */; };
     141                DD20DD3E27BC90D60093D175 /* WebGPUTextureImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E69F273F4243004B17B0 /* WebGPUTextureImpl.h */; };
     142                DD20DD3F27BC90D70093D175 /* WebGPUTextureViewImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C19E6AC273F4245004B17B0 /* WebGPUTextureViewImpl.h */; };
    141143                DD20DD4027BC90D70093D175 /* WebGPU.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CC5E47127374948006F6FF4 /* WebGPU.h */; settings = {ATTRIBUTES = (Private, ); }; };
    142144                DD20DD4127BC90D70093D175 /* WebGPUAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CC5E47F27374949006F6FF4 /* WebGPUAdapter.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    832834                1CC5E4922737494A006F6FF4 /* WebGPURenderBundle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebGPURenderBundle.h; sourceTree = "<group>"; };
    833835                1CC5E4932737494A006F6FF4 /* WebGPUCanvasCompositingAlphaMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebGPUCanvasCompositingAlphaMode.h; sourceTree = "<group>"; };
     836                1CCA5EFD280FABB4008A6F78 /* WebGPUCreateImpl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebGPUCreateImpl.cpp; sourceTree = "<group>"; };
     837                1CCA5EFE280FABB4008A6F78 /* WebGPUCreateImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebGPUCreateImpl.h; sourceTree = "<group>"; };
    834838                1CCEE4F420D871930047B097 /* CoreUISPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CoreUISPI.h; sourceTree = "<group>"; };
    835839                1CCEE4F620D8743F0047B097 /* NSAppearanceSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSAppearanceSPI.h; sourceTree = "<group>"; };
     
    12701274                                1C19E6B4273F85AF004B17B0 /* WebGPUConvertToBackingContext.cpp */,
    12711275                                1C19E6B6273F85BC004B17B0 /* WebGPUConvertToBackingContext.h */,
     1276                                1CCA5EFD280FABB4008A6F78 /* WebGPUCreateImpl.cpp */,
     1277                                1CCA5EFE280FABB4008A6F78 /* WebGPUCreateImpl.h */,
    12721278                                1CB709FA28034EDF00A3A637 /* WebGPUDeviceHolderImpl.cpp */,
    12731279                                1CB709FB28034EDF00A3A637 /* WebGPUDeviceHolderImpl.h */,
     
    18681874                                DD20DD2F27BC90D60093D175 /* WebGPUComputePipelineImpl.h in Headers */,
    18691875                                DD20DD3027BC90D60093D175 /* WebGPUConvertToBackingContext.h in Headers */,
     1876                                1CCA5F00280FABB4008A6F78 /* WebGPUCreateImpl.h in Headers */,
    18701877                                DD20DD6627BC90D70093D175 /* WebGPUCullMode.h in Headers */,
    18711878                                DD20DD6727BC90D70093D175 /* WebGPUDepthStencilState.h in Headers */,
     
    21412148                                1C19E664273F3FEE004B17B0 /* WebGPUComputePipelineImpl.cpp in Sources */,
    21422149                                1C19E6B5273F85AF004B17B0 /* WebGPUConvertToBackingContext.cpp in Sources */,
     2150                                1CCA5EFF280FABB4008A6F78 /* WebGPUCreateImpl.cpp in Sources */,
    21432151                                1CB709FC28034EDF00A3A637 /* WebGPUDeviceHolderImpl.cpp in Sources */,
    21442152                                1C19E668273F3FFA004B17B0 /* WebGPUDeviceImpl.cpp in Sources */,
  • trunk/Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUCreateImpl.cpp

    r293105 r293106  
    2525
    2626#include "config.h"
    27 #include "WebGPUImpl.h"
     27#include "WebGPUCreateImpl.h"
    2828
    2929#if HAVE(WEBGPU_IMPLEMENTATION)
     
    3131#include "WebGPUAdapterImpl.h"
    3232#include "WebGPUDowncastConvertToBackingContext.h"
     33#include "WebGPUImpl.h"
    3334#include <WebGPU/WebGPUExt.h>
    3435#include <wtf/BlockPtr.h>
     
    4243namespace PAL::WebGPU {
    4344
    44 RefPtr<GPUImpl> GPUImpl::create(ScheduleWorkFunction&& scheduleWorkFunction)
     45RefPtr<GPU> create(ScheduleWorkFunction&& scheduleWorkFunction)
    4546{
    4647    auto scheduleWorkBlock = makeBlockPtr([scheduleWorkFunction = WTFMove(scheduleWorkFunction)](WGPUWorkItem workItem)
     
    6364        return nullptr;
    6465    auto convertToBackingContext = DowncastConvertToBackingContext::create();
    65     return create(instance, convertToBackingContext);
    66 }
    67 
    68 GPUImpl::GPUImpl(WGPUInstance instance, ConvertToBackingContext& convertToBackingContext)
    69     : m_backing(instance)
    70     , m_convertToBackingContext(convertToBackingContext)
    71 {
    72 }
    73 
    74 GPUImpl::~GPUImpl()
    75 {
    76     wgpuInstanceRelease(m_backing);
    77 }
    78 
    79 void GPUImpl::requestAdapter(const RequestAdapterOptions& options, CompletionHandler<void(RefPtr<Adapter>&&)>&& callback)
    80 {
    81     WGPURequestAdapterOptions backingOptions {
    82         nullptr,
    83         nullptr,
    84         options.powerPreference ? m_convertToBackingContext->convertToBacking(*options.powerPreference) : static_cast<WGPUPowerPreference>(WGPUPowerPreference_Undefined),
    85         options.forceFallbackAdapter,
    86     };
    87 
    88     wgpuInstanceRequestAdapterWithBlock(m_backing, &backingOptions, makeBlockPtr([convertToBackingContext = m_convertToBackingContext.copyRef(), callback = WTFMove(callback)](WGPURequestAdapterStatus, WGPUAdapter adapter, const char*) mutable {
    89         callback(AdapterImpl::create(adapter, convertToBackingContext));
    90     }).get());
     66    return GPUImpl::create(instance, convertToBackingContext);
    9167}
    9268
  • trunk/Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUCreateImpl.h

    r293105 r293106  
    2929
    3030#include "WebGPU.h"
    31 #include <WebGPU/WebGPU.h>
    3231#include <wtf/CompletionHandler.h>
    33 #include <wtf/Deque.h>
    3432#include <wtf/Function.h>
     33#include <wtf/RefPtr.h>
    3534
    3635namespace PAL::WebGPU {
    3736
    38 class ConvertToBackingContext;
    39 
    40 class GPUImpl final : public GPU {
    41     WTF_MAKE_FAST_ALLOCATED;
    42 public:
    43     using WorkItem = CompletionHandler<void(void)>;
    44     using ScheduleWorkFunction = Function<void(WorkItem&&)>;
    45     PAL_EXPORT static RefPtr<GPUImpl> create(ScheduleWorkFunction&&);
    46 
    47     static Ref<GPUImpl> create(WGPUInstance instance, ConvertToBackingContext& convertToBackingContext)
    48     {
    49         return adoptRef(*new GPUImpl(instance, convertToBackingContext));
    50     }
    51 
    52     virtual ~GPUImpl();
    53 
    54 private:
    55     friend class DowncastConvertToBackingContext;
    56 
    57     GPUImpl(WGPUInstance, ConvertToBackingContext&);
    58 
    59     GPUImpl(const GPUImpl&) = delete;
    60     GPUImpl(GPUImpl&&) = delete;
    61     GPUImpl& operator=(const GPUImpl&) = delete;
    62     GPUImpl& operator=(GPUImpl&&) = delete;
    63 
    64     WGPUInstance backing() const { return m_backing; }
    65 
    66     void requestAdapter(const RequestAdapterOptions&, CompletionHandler<void(RefPtr<Adapter>&&)>&&) final;
    67 
    68     WGPUInstance m_backing { nullptr };
    69     Ref<ConvertToBackingContext> m_convertToBackingContext;
    70 };
     37using WorkItem = CompletionHandler<void(void)>;
     38using ScheduleWorkFunction = Function<void(WorkItem&&)>;
     39PAL_EXPORT RefPtr<GPU> create(ScheduleWorkFunction&&);
    7140
    7241} // namespace PAL::WebGPU
  • trunk/Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUImpl.cpp

    r291384 r293106  
    3434#include <wtf/BlockPtr.h>
    3535
    36 #if PLATFORM(COCOA)
    37 #include <wtf/darwin/WeakLinking.h>
    38 
    39 WTF_WEAK_LINK_FORCE_IMPORT(wgpuCreateInstance);
    40 #endif
    41 
    4236namespace PAL::WebGPU {
    43 
    44 RefPtr<GPUImpl> GPUImpl::create(ScheduleWorkFunction&& scheduleWorkFunction)
    45 {
    46     auto scheduleWorkBlock = makeBlockPtr([scheduleWorkFunction = WTFMove(scheduleWorkFunction)](WGPUWorkItem workItem)
    47     {
    48         scheduleWorkFunction(makeBlockPtr(WTFMove(workItem)));
    49     });
    50     WGPUInstanceCocoaDescriptor cocoaDescriptor {
    51         {
    52             nullptr,
    53             static_cast<WGPUSType>(WGPUSTypeExtended_InstanceCocoaDescriptor),
    54         },
    55         scheduleWorkBlock.get(),
    56     };
    57     WGPUInstanceDescriptor descriptor = { &cocoaDescriptor.chain };
    58 
    59     if (!&wgpuCreateInstance)
    60         return nullptr;
    61     auto instance = wgpuCreateInstance(&descriptor);
    62     if (!instance)
    63         return nullptr;
    64     auto convertToBackingContext = DowncastConvertToBackingContext::create();
    65     return create(instance, convertToBackingContext);
    66 }
    6737
    6838GPUImpl::GPUImpl(WGPUInstance instance, ConvertToBackingContext& convertToBackingContext)
  • trunk/Source/WebCore/PAL/pal/graphics/WebGPU/Impl/WebGPUImpl.h

    r291384 r293106  
    4141    WTF_MAKE_FAST_ALLOCATED;
    4242public:
    43     using WorkItem = CompletionHandler<void(void)>;
    44     using ScheduleWorkFunction = Function<void(WorkItem&&)>;
    45     PAL_EXPORT static RefPtr<GPUImpl> create(ScheduleWorkFunction&&);
    46 
    4743    static Ref<GPUImpl> create(WGPUInstance instance, ConvertToBackingContext& convertToBackingContext)
    4844    {
  • trunk/Source/WebKit/ChangeLog

    r293086 r293106  
     12022-04-20  Myles C. Maxfield  <mmaxfield@apple.com>
     2
     3        [WebGPU] WebKit and WebKitLegacy shouldn't need to know about WebGPU.framework
     4        https://bugs.webkit.org/show_bug.cgi?id=239528
     5        <rdar://problem/91740931>
     6
     7        Unreviewed build fix.
     8
     9        * GPUProcess/graphics/WebGPU/RemoteGPU.cpp:
     10        (WebKit::RemoteGPU::workQueueInitialize):
     11        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
     12        (WebKit::WebChromeClient::createGPUForWebGPU const):
     13
    1142022-04-20  Diego Pino Garcia  <dpino@igalia.com>
    215
  • trunk/Source/WebKit/GPUProcess/graphics/WebGPU/RemoteGPU.cpp

    r292803 r293106  
    4040
    4141#if HAVE(WEBGPU_IMPLEMENTATION)
    42 #import <pal/graphics/WebGPU/Impl/WebGPUImpl.h>
     42#import <pal/graphics/WebGPU/Impl/WebGPUCreateImpl.h>
    4343#endif
    4444
     
    8787    // (because the callbacks handle resource cleanup, etc.).
    8888    // The retain cycle is broken in workQueueUninitialize().
    89     auto backing = PAL::WebGPU::GPUImpl::create([protectedThis = Ref { *this }](PAL::WebGPU::GPUImpl::WorkItem&& workItem) {
     89    auto backing = PAL::WebGPU::create([protectedThis = Ref { *this }](PAL::WebGPU::WorkItem&& workItem) {
    9090        protectedThis->workQueue().dispatch(WTFMove(workItem));
    9191    });
  • trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp

    r292903 r293106  
    9595
    9696#if HAVE(WEBGPU_IMPLEMENTATION)
    97 #import <pal/graphics/WebGPU/Impl/WebGPUImpl.h>
     97#import <pal/graphics/WebGPU/Impl/WebGPUCreateImpl.h>
    9898#endif
    9999
     
    963963    return RemoteGPUProxy::create(WebProcess::singleton().ensureGPUProcessConnection(), WebGPU::DowncastConvertToBackingContext::create(), WebGPUIdentifier::generate(), m_page.ensureRemoteRenderingBackendProxy().ensureBackendCreated());
    964964#else
    965     return PAL::WebGPU::GPUImpl::create([](PAL::WebGPU::GPUImpl::WorkItem&& workItem) {
     965    return PAL::WebGPU::create([](PAL::WebGPU::WorkItem&& workItem) {
    966966        callOnMainRunLoop(WTFMove(workItem));
    967967    });
  • trunk/Source/WebKitLegacy/mac/ChangeLog

    r292951 r293106  
     12022-04-20  Myles C. Maxfield  <mmaxfield@apple.com>
     2
     3        [WebGPU] WebKit and WebKitLegacy shouldn't need to know about WebGPU.framework
     4        https://bugs.webkit.org/show_bug.cgi?id=239528
     5        <rdar://problem/91740931>
     6
     7        Unreviewed build fix.
     8
     9        * WebCoreSupport/WebChromeClient.mm:
     10        (WebChromeClient::createGPUForWebGPU const):
     11
    1122022-04-17  Chris Dumez  <cdumez@apple.com>
    213
  • trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebChromeClient.mm

    r291501 r293106  
    9797
    9898#if HAVE(WEBGPU_IMPLEMENTATION)
    99 #import <pal/graphics/WebGPU/Impl/WebGPUImpl.h>
     99#import <pal/graphics/WebGPU/Impl/WebGPUCreateImpl.h>
    100100#endif
    101101
     
    11651165{
    11661166#if HAVE(WEBGPU_IMPLEMENTATION)
    1167     return PAL::WebGPU::GPUImpl::create([](PAL::WebGPU::GPUImpl::WorkItem&& workItem) {
     1167    return PAL::WebGPU::create([](PAL::WebGPU::WorkItem&& workItem) {
    11681168        callOnMainRunLoop(WTFMove(workItem));
    11691169    });
Note: See TracChangeset for help on using the changeset viewer.