Title: [290256] trunk/Source/WebGPU
Revision
290256
Author
[email protected]
Date
2022-02-21 11:32:30 -0800 (Mon, 21 Feb 2022)

Log Message

[WebGPU] Tracer bullet part 5: Give Metal objects to WebGPU objects
https://bugs.webkit.org/show_bug.cgi?id=236898

Reviewed by Dean Jackson.

Each WebGPU object gets its own backing Metal object.

* WebGPU/Adapter.h:
(WebGPU::Adapter::create):
* WebGPU/Adapter.mm:
(WebGPU::Adapter::Adapter):
* WebGPU/BindGroup.h:
(WebGPU::BindGroup::create):
* WebGPU/BindGroup.mm:
(WebGPU::Device::createBindGroup):
(WebGPU::BindGroup::BindGroup):
* WebGPU/BindGroupLayout.h:
(WebGPU::BindGroupLayout::create):
* WebGPU/BindGroupLayout.mm:
(WebGPU::Device::createBindGroupLayout):
(WebGPU::BindGroupLayout::BindGroupLayout):
* WebGPU/Buffer.h:
(WebGPU::Buffer::create):
* WebGPU/Buffer.mm:
(WebGPU::Device::createBuffer):
(WebGPU::Buffer::Buffer):
* WebGPU/CommandBuffer.h:
(WebGPU::CommandBuffer::create):
* WebGPU/CommandBuffer.mm:
(WebGPU::CommandBuffer::CommandBuffer):
* WebGPU/CommandEncoder.h:
(WebGPU::CommandEncoder::create):
* WebGPU/CommandEncoder.mm:
(WebGPU::Device::createCommandEncoder):
(WebGPU::CommandEncoder::CommandEncoder):
(WebGPU::CommandEncoder::beginComputePass):
(WebGPU::CommandEncoder::beginRenderPass):
(WebGPU::CommandEncoder::finish):
* WebGPU/ComputePassEncoder.h:
(WebGPU::ComputePassEncoder::create):
* WebGPU/ComputePassEncoder.mm:
(WebGPU::ComputePassEncoder::ComputePassEncoder):
* WebGPU/ComputePipeline.h:
(WebGPU::ComputePipeline::create):
* WebGPU/ComputePipeline.mm:
(WebGPU::Device::createComputePipeline):
(WebGPU::ComputePipeline::ComputePipeline):
(WebGPU::ComputePipeline::getBindGroupLayout):
* WebGPU/Device.h:
(WebGPU::Device::create): Deleted.
* WebGPU/Device.mm:
(WebGPU::Device::create):
(WebGPU::Device::Device):
(WebGPU::Device::getQueue):
* WebGPU/Instance.h:
* WebGPU/Instance.mm:
(WebGPU::Instance::requestAdapter):
(wgpuInstanceRequestAdapter):
* WebGPU/QuerySet.h:
(WebGPU::QuerySet::create):
* WebGPU/QuerySet.mm:
(WebGPU::Device::createQuerySet):
(WebGPU::QuerySet::QuerySet):
* WebGPU/Queue.h:
(WebGPU::Queue::create):
* WebGPU/Queue.mm:
(WebGPU::Queue::Queue):
* WebGPU/RenderBundle.h:
(WebGPU::RenderBundle::create):
* WebGPU/RenderBundle.mm:
(WebGPU::RenderBundle::RenderBundle):
* WebGPU/RenderBundleEncoder.h:
(WebGPU::RenderBundleEncoder::create):
* WebGPU/RenderBundleEncoder.mm:
(WebGPU::Device::createRenderBundleEncoder):
(WebGPU::RenderBundleEncoder::RenderBundleEncoder):
(WebGPU::RenderBundleEncoder::finish):
* WebGPU/RenderPassEncoder.h:
(WebGPU::RenderPassEncoder::create):
* WebGPU/RenderPassEncoder.mm:
(WebGPU::RenderPassEncoder::RenderPassEncoder):
* WebGPU/RenderPipeline.h:
(WebGPU::RenderPipeline::create):
* WebGPU/RenderPipeline.mm:
(WebGPU::Device::createRenderPipeline):
(WebGPU::RenderPipeline::RenderPipeline):
(WebGPU::RenderPipeline::getBindGroupLayout):
* WebGPU/Sampler.h:
(WebGPU::Sampler::create):
* WebGPU/Sampler.mm:
(WebGPU::Device::createSampler):
(WebGPU::Sampler::Sampler):
* WebGPU/ShaderModule.h:
(WebGPU::ShaderModule::create):
* WebGPU/ShaderModule.mm:
(WebGPU::Device::createShaderModule):
(WebGPU::ShaderModule::ShaderModule):
* WebGPU/SwapChain.mm:
(WebGPU::SwapChain::getCurrentTextureView):
* WebGPU/Texture.h:
(WebGPU::Texture::create):
* WebGPU/Texture.mm:
(WebGPU::Device::createTexture):
(WebGPU::Texture::Texture):
(WebGPU::Texture::createView):
* WebGPU/TextureView.h:
(WebGPU::TextureView::create):
* WebGPU/TextureView.mm:
(WebGPU::TextureView::TextureView):
* WebGPU/config.h:

Modified Paths

Diff

Modified: trunk/Source/WebGPU/ChangeLog (290255 => 290256)


--- trunk/Source/WebGPU/ChangeLog	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/ChangeLog	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,118 @@
 2022-02-21  Myles C. Maxfield  <[email protected]>
 
+        [WebGPU] Tracer bullet part 5: Give Metal objects to WebGPU objects
+        https://bugs.webkit.org/show_bug.cgi?id=236898
+
+        Reviewed by Dean Jackson.
+
+        Each WebGPU object gets its own backing Metal object.
+
+        * WebGPU/Adapter.h:
+        (WebGPU::Adapter::create):
+        * WebGPU/Adapter.mm:
+        (WebGPU::Adapter::Adapter):
+        * WebGPU/BindGroup.h:
+        (WebGPU::BindGroup::create):
+        * WebGPU/BindGroup.mm:
+        (WebGPU::Device::createBindGroup):
+        (WebGPU::BindGroup::BindGroup):
+        * WebGPU/BindGroupLayout.h:
+        (WebGPU::BindGroupLayout::create):
+        * WebGPU/BindGroupLayout.mm:
+        (WebGPU::Device::createBindGroupLayout):
+        (WebGPU::BindGroupLayout::BindGroupLayout):
+        * WebGPU/Buffer.h:
+        (WebGPU::Buffer::create):
+        * WebGPU/Buffer.mm:
+        (WebGPU::Device::createBuffer):
+        (WebGPU::Buffer::Buffer):
+        * WebGPU/CommandBuffer.h:
+        (WebGPU::CommandBuffer::create):
+        * WebGPU/CommandBuffer.mm:
+        (WebGPU::CommandBuffer::CommandBuffer):
+        * WebGPU/CommandEncoder.h:
+        (WebGPU::CommandEncoder::create):
+        * WebGPU/CommandEncoder.mm:
+        (WebGPU::Device::createCommandEncoder):
+        (WebGPU::CommandEncoder::CommandEncoder):
+        (WebGPU::CommandEncoder::beginComputePass):
+        (WebGPU::CommandEncoder::beginRenderPass):
+        (WebGPU::CommandEncoder::finish):
+        * WebGPU/ComputePassEncoder.h:
+        (WebGPU::ComputePassEncoder::create):
+        * WebGPU/ComputePassEncoder.mm:
+        (WebGPU::ComputePassEncoder::ComputePassEncoder):
+        * WebGPU/ComputePipeline.h:
+        (WebGPU::ComputePipeline::create):
+        * WebGPU/ComputePipeline.mm:
+        (WebGPU::Device::createComputePipeline):
+        (WebGPU::ComputePipeline::ComputePipeline):
+        (WebGPU::ComputePipeline::getBindGroupLayout):
+        * WebGPU/Device.h:
+        (WebGPU::Device::create): Deleted.
+        * WebGPU/Device.mm:
+        (WebGPU::Device::create):
+        (WebGPU::Device::Device):
+        (WebGPU::Device::getQueue):
+        * WebGPU/Instance.h:
+        * WebGPU/Instance.mm:
+        (WebGPU::Instance::requestAdapter):
+        (wgpuInstanceRequestAdapter):
+        * WebGPU/QuerySet.h:
+        (WebGPU::QuerySet::create):
+        * WebGPU/QuerySet.mm:
+        (WebGPU::Device::createQuerySet):
+        (WebGPU::QuerySet::QuerySet):
+        * WebGPU/Queue.h:
+        (WebGPU::Queue::create):
+        * WebGPU/Queue.mm:
+        (WebGPU::Queue::Queue):
+        * WebGPU/RenderBundle.h:
+        (WebGPU::RenderBundle::create):
+        * WebGPU/RenderBundle.mm:
+        (WebGPU::RenderBundle::RenderBundle):
+        * WebGPU/RenderBundleEncoder.h:
+        (WebGPU::RenderBundleEncoder::create):
+        * WebGPU/RenderBundleEncoder.mm:
+        (WebGPU::Device::createRenderBundleEncoder):
+        (WebGPU::RenderBundleEncoder::RenderBundleEncoder):
+        (WebGPU::RenderBundleEncoder::finish):
+        * WebGPU/RenderPassEncoder.h:
+        (WebGPU::RenderPassEncoder::create):
+        * WebGPU/RenderPassEncoder.mm:
+        (WebGPU::RenderPassEncoder::RenderPassEncoder):
+        * WebGPU/RenderPipeline.h:
+        (WebGPU::RenderPipeline::create):
+        * WebGPU/RenderPipeline.mm:
+        (WebGPU::Device::createRenderPipeline):
+        (WebGPU::RenderPipeline::RenderPipeline):
+        (WebGPU::RenderPipeline::getBindGroupLayout):
+        * WebGPU/Sampler.h:
+        (WebGPU::Sampler::create):
+        * WebGPU/Sampler.mm:
+        (WebGPU::Device::createSampler):
+        (WebGPU::Sampler::Sampler):
+        * WebGPU/ShaderModule.h:
+        (WebGPU::ShaderModule::create):
+        * WebGPU/ShaderModule.mm:
+        (WebGPU::Device::createShaderModule):
+        (WebGPU::ShaderModule::ShaderModule):
+        * WebGPU/SwapChain.mm:
+        (WebGPU::SwapChain::getCurrentTextureView):
+        * WebGPU/Texture.h:
+        (WebGPU::Texture::create):
+        * WebGPU/Texture.mm:
+        (WebGPU::Device::createTexture):
+        (WebGPU::Texture::Texture):
+        (WebGPU::Texture::createView):
+        * WebGPU/TextureView.h:
+        (WebGPU::TextureView::create):
+        * WebGPU/TextureView.mm:
+        (WebGPU::TextureView::TextureView):
+        * WebGPU/config.h:
+
+2022-02-21  Myles C. Maxfield  <[email protected]>
+
         [WebGPU] Tracer bullet part 4: Move Device's construction methods to the files of the things they create
         https://bugs.webkit.org/show_bug.cgi?id=236891
 

Modified: trunk/Source/WebGPU/WebGPU/Adapter.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Adapter.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Adapter.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -39,9 +39,9 @@
 class Adapter : public RefCounted<Adapter> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<Adapter> create()
+    static Ref<Adapter> create(id <MTLDevice> device)
     {
-        return adoptRef(*new Adapter());
+        return adoptRef(*new Adapter(device));
     }
 
     ~Adapter();
@@ -53,7 +53,9 @@
     void requestDevice(const WGPUDeviceDescriptor*, WTF::Function<void(WGPURequestDeviceStatus, RefPtr<Device>&&, const char*)>&& callback);
 
 private:
-    Adapter();
+    Adapter(id <MTLDevice>);
+
+    id <MTLDevice> m_device { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/Adapter.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Adapter.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Adapter.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -32,7 +32,11 @@
 
 namespace WebGPU {
 
-Adapter::Adapter() = default;
+Adapter::Adapter(id <MTLDevice> device)
+    : m_device(device)
+{
+    UNUSED_VARIABLE(m_device);
+}
 
 Adapter::~Adapter() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/BindGroup.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/BindGroup.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/BindGroup.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -35,9 +35,9 @@
 class BindGroup : public RefCounted<BindGroup> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<BindGroup> create()
+    static Ref<BindGroup> create(id <MTLBuffer> vertexArgumentBuffer, id <MTLBuffer> fragmentArgumentBuffer, id <MTLBuffer> computeArgumentBuffer)
     {
-        return adoptRef(*new BindGroup());
+        return adoptRef(*new BindGroup(vertexArgumentBuffer, fragmentArgumentBuffer, computeArgumentBuffer));
     }
 
     ~BindGroup();
@@ -45,7 +45,11 @@
     void setLabel(const char*);
 
 private:
-    BindGroup();
+    BindGroup(id <MTLBuffer> vertexArgumentBuffer, id <MTLBuffer> fragmentArgumentBuffer, id <MTLBuffer> computeArgumentBuffer);
+
+    id <MTLBuffer> m_vertexArgumentBuffer { nil };
+    id <MTLBuffer> m_fragmentArgumentBuffer { nil };
+    id <MTLBuffer> m_computeArgumentBuffer { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/BindGroup.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/BindGroup.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/BindGroup.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -34,10 +34,18 @@
 RefPtr<BindGroup> Device::createBindGroup(const WGPUBindGroupDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return BindGroup::create();
+    return BindGroup::create(nil, nil, nil);
 }
 
-BindGroup::BindGroup() = default;
+BindGroup::BindGroup(id <MTLBuffer> vertexArgumentBuffer, id <MTLBuffer> fragmentArgumentBuffer, id <MTLBuffer> computeArgumentBuffer)
+    : m_vertexArgumentBuffer(vertexArgumentBuffer)
+    , m_fragmentArgumentBuffer(fragmentArgumentBuffer)
+    , m_computeArgumentBuffer(computeArgumentBuffer)
+{
+    UNUSED_VARIABLE(m_vertexArgumentBuffer);
+    UNUSED_VARIABLE(m_fragmentArgumentBuffer);
+    UNUSED_VARIABLE(m_computeArgumentBuffer);
+}
 
 BindGroup::~BindGroup() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/BindGroupLayout.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/BindGroupLayout.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/BindGroupLayout.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -35,9 +35,9 @@
 class BindGroupLayout : public RefCounted<BindGroupLayout> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<BindGroupLayout> create()
+    static Ref<BindGroupLayout> create(id <MTLArgumentEncoder> vertexArgumentEncoder, id <MTLArgumentEncoder> fragmentArgumentEncoder, id <MTLArgumentEncoder> computeArgumentEncoder)
     {
-        return adoptRef(*new BindGroupLayout());
+        return adoptRef(*new BindGroupLayout(vertexArgumentEncoder, fragmentArgumentEncoder, computeArgumentEncoder));
     }
 
     ~BindGroupLayout();
@@ -45,7 +45,11 @@
     void setLabel(const char*);
 
 private:
-    BindGroupLayout();
+    BindGroupLayout(id <MTLArgumentEncoder> vertexArgumentEncoder, id <MTLArgumentEncoder> fragmentArgumentEncoder, id <MTLArgumentEncoder> computeArgumentEncoder);
+
+    id <MTLArgumentEncoder> m_vertexArgumentEncoder { nil };
+    id <MTLArgumentEncoder> m_fragmentArgumentEncoder { nil };
+    id <MTLArgumentEncoder> m_computeArgumentEncoder { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/BindGroupLayout.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/BindGroupLayout.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/BindGroupLayout.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -34,10 +34,18 @@
 RefPtr<BindGroupLayout> Device::createBindGroupLayout(const WGPUBindGroupLayoutDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return BindGroupLayout::create();
+    return BindGroupLayout::create(nil, nil, nil);
 }
 
-BindGroupLayout::BindGroupLayout() = default;
+BindGroupLayout::BindGroupLayout(id <MTLArgumentEncoder> vertexArgumentEncoder, id <MTLArgumentEncoder> fragmentArgumentEncoder, id <MTLArgumentEncoder> computeArgumentEncoder)
+    : m_vertexArgumentEncoder(vertexArgumentEncoder)
+    , m_fragmentArgumentEncoder(fragmentArgumentEncoder)
+    , m_computeArgumentEncoder(computeArgumentEncoder)
+{
+    UNUSED_VARIABLE(m_vertexArgumentEncoder);
+    UNUSED_VARIABLE(m_fragmentArgumentEncoder);
+    UNUSED_VARIABLE(m_computeArgumentEncoder);
+}
 
 BindGroupLayout::~BindGroupLayout() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/Buffer.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Buffer.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Buffer.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -36,9 +36,9 @@
 class Buffer : public RefCounted<Buffer> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<Buffer> create()
+    static Ref<Buffer> create(id <MTLBuffer> buffer)
     {
-        return adoptRef(*new Buffer());
+        return adoptRef(*new Buffer(buffer));
     }
 
     ~Buffer();
@@ -51,7 +51,9 @@
     void setLabel(const char*);
 
 private:
-    Buffer();
+    Buffer(id <MTLBuffer>);
+
+    id <MTLBuffer> m_buffer { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/Buffer.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Buffer.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Buffer.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -34,10 +34,14 @@
 RefPtr<Buffer> Device::createBuffer(const WGPUBufferDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return Buffer::create();
+    return Buffer::create(nil);
 }
 
-Buffer::Buffer() = default;
+Buffer::Buffer(id <MTLBuffer> buffer)
+    : m_buffer(buffer)
+{
+    UNUSED_VARIABLE(m_buffer);
+}
 
 Buffer::~Buffer() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/CommandBuffer.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/CommandBuffer.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/CommandBuffer.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -35,9 +35,9 @@
 class CommandBuffer : public RefCounted<CommandBuffer> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<CommandBuffer> create()
+    static Ref<CommandBuffer> create(id <MTLCommandBuffer> commandBuffer)
     {
-        return adoptRef(*new CommandBuffer());
+        return adoptRef(*new CommandBuffer(commandBuffer));
     }
 
     ~CommandBuffer();
@@ -45,7 +45,9 @@
     void setLabel(const char*);
 
 private:
-    CommandBuffer();
+    CommandBuffer(id <MTLCommandBuffer>);
+
+    id <MTLCommandBuffer> m_commandBuffer { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/CommandBuffer.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/CommandBuffer.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/CommandBuffer.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -30,7 +30,11 @@
 
 namespace WebGPU {
 
-CommandBuffer::CommandBuffer() = default;
+CommandBuffer::CommandBuffer(id <MTLCommandBuffer> commandBuffer)
+    : m_commandBuffer(commandBuffer)
+{
+    UNUSED_VARIABLE(m_commandBuffer);
+}
 
 CommandBuffer::~CommandBuffer() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/CommandEncoder.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/CommandEncoder.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/CommandEncoder.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -42,9 +42,9 @@
 class CommandEncoder : public RefCounted<CommandEncoder> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<CommandEncoder> create()
+    static Ref<CommandEncoder> create(id <MTLCommandBuffer> commandBuffer)
     {
-        return adoptRef(*new CommandEncoder());
+        return adoptRef(*new CommandEncoder(commandBuffer));
     }
 
     ~CommandEncoder();
@@ -65,7 +65,9 @@
     void setLabel(const char*);
 
 private:
-    CommandEncoder();
+    CommandEncoder(id <MTLCommandBuffer>);
+
+    id <MTLCommandBuffer> m_commandBuffer { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/CommandEncoder.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/CommandEncoder.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/CommandEncoder.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -39,10 +39,14 @@
 RefPtr<CommandEncoder> Device::createCommandEncoder(const WGPUCommandEncoderDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return CommandEncoder::create();
+    return CommandEncoder::create(nil);
 }
 
-CommandEncoder::CommandEncoder() = default;
+CommandEncoder::CommandEncoder(id <MTLCommandBuffer> commandBuffer)
+    : m_commandBuffer(commandBuffer)
+{
+    UNUSED_VARIABLE(m_commandBuffer);
+}
 
 CommandEncoder::~CommandEncoder() = default;
 
@@ -49,13 +53,13 @@
 RefPtr<ComputePassEncoder> CommandEncoder::beginComputePass(const WGPUComputePassDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return ComputePassEncoder::create();
+    return ComputePassEncoder::create(nil);
 }
 
 RefPtr<RenderPassEncoder> CommandEncoder::beginRenderPass(const WGPURenderPassDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return RenderPassEncoder::create();
+    return RenderPassEncoder::create(nil);
 }
 
 void CommandEncoder::copyBufferToBuffer(const Buffer& source, uint64_t sourceOffset, const Buffer& destination, uint64_t destinationOffset, uint64_t size)
@@ -98,7 +102,7 @@
 RefPtr<CommandBuffer> CommandEncoder::finish(const WGPUCommandBufferDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return CommandBuffer::create();
+    return CommandBuffer::create(nil);
 }
 
 void CommandEncoder::insertDebugMarker(const char* markerLabel)

Modified: trunk/Source/WebGPU/WebGPU/ComputePassEncoder.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/ComputePassEncoder.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/ComputePassEncoder.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -40,9 +40,9 @@
 class ComputePassEncoder : public RefCounted<ComputePassEncoder> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<ComputePassEncoder> create()
+    static Ref<ComputePassEncoder> create(id <MTLComputeCommandEncoder> computeCommandEncoder)
     {
-        return adoptRef(*new ComputePassEncoder());
+        return adoptRef(*new ComputePassEncoder(computeCommandEncoder));
     }
 
     ~ComputePassEncoder();
@@ -60,7 +60,9 @@
     void setLabel(const char*);
 
 private:
-    ComputePassEncoder();
+    ComputePassEncoder(id <MTLComputeCommandEncoder>);
+
+    id <MTLComputeCommandEncoder> m_computeCommandEncoder { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/ComputePassEncoder.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/ComputePassEncoder.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/ComputePassEncoder.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -34,7 +34,11 @@
 
 namespace WebGPU {
 
-ComputePassEncoder::ComputePassEncoder() = default;
+ComputePassEncoder::ComputePassEncoder(id <MTLComputeCommandEncoder> computeCommandEncoder)
+    : m_computeCommandEncoder(computeCommandEncoder)
+{
+    UNUSED_VARIABLE(m_computeCommandEncoder);
+}
 
 ComputePassEncoder::~ComputePassEncoder() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/ComputePipeline.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/ComputePipeline.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/ComputePipeline.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -37,9 +37,9 @@
 class ComputePipeline : public RefCounted<ComputePipeline> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<ComputePipeline> create()
+    static Ref<ComputePipeline> create(id <MTLComputePipelineState> computePipelineState)
     {
-        return adoptRef(*new ComputePipeline());
+        return adoptRef(*new ComputePipeline(computePipelineState));
     }
 
     ~ComputePipeline();
@@ -48,7 +48,9 @@
     void setLabel(const char*);
 
 private:
-    ComputePipeline();
+    ComputePipeline(id <MTLComputePipelineState>);
+
+    id <MTLComputePipelineState> m_computePipelineState { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/ComputePipeline.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/ComputePipeline.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/ComputePipeline.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -36,7 +36,7 @@
 RefPtr<ComputePipeline> Device::createComputePipeline(const WGPUComputePipelineDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return ComputePipeline::create();
+    return ComputePipeline::create(nil);
 }
 
 void Device::createComputePipelineAsync(const WGPUComputePipelineDescriptor* descriptor, WTF::Function<void(WGPUCreatePipelineAsyncStatus, RefPtr<ComputePipeline>&&, const char* message)>&& callback)
@@ -45,7 +45,11 @@
     UNUSED_PARAM(callback);
 }
 
-ComputePipeline::ComputePipeline() = default;
+ComputePipeline::ComputePipeline(id <MTLComputePipelineState> computePipelineState)
+    : m_computePipelineState(computePipelineState)
+{
+    UNUSED_VARIABLE(m_computePipelineState);
+}
 
 ComputePipeline::~ComputePipeline() = default;
 
@@ -52,7 +56,7 @@
 Ref<BindGroupLayout> ComputePipeline::getBindGroupLayout(uint32_t groupIndex)
 {
     UNUSED_PARAM(groupIndex);
-    return BindGroupLayout::create();
+    return BindGroupLayout::create(nil, nil, nil);
 }
 
 void ComputePipeline::setLabel(const char* label)

Modified: trunk/Source/WebGPU/WebGPU/Device.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Device.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Device.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -53,10 +53,7 @@
 class Device : public RefCounted<Device> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<Device> create()
-    {
-        return adoptRef(*new Device());
-    }
+    static RefPtr<Device> create(id <MTLDevice>);
 
     ~Device();
 
@@ -87,7 +84,9 @@
     void setLabel(const char*);
 
 private:
-    Device();
+    Device(id <MTLDevice>);
+
+    id <MTLDevice> m_device { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/Device.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Device.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Device.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -46,8 +46,17 @@
 
 namespace WebGPU {
 
-Device::Device() = default;
+RefPtr<Device> Device::create(id <MTLDevice> device)
+{
+    return adoptRef(*new Device(device));
+}
 
+Device::Device(id <MTLDevice> device)
+    : m_device(device)
+{
+    UNUSED_VARIABLE(m_device);
+}
+
 Device::~Device() = default;
 
 void Device::destroy()
@@ -68,7 +77,7 @@
 
 RefPtr<Queue> Device::getQueue()
 {
-    return Queue::create();
+    return Queue::create(nil);
 }
 
 bool Device::hasFeature(WGPUFeatureName feature)

Modified: trunk/Source/WebGPU/WebGPU/Instance.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Instance.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Instance.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -49,7 +49,7 @@
 
     RefPtr<Surface> createSurface(const WGPUSurfaceDescriptor*);
     void processEvents();
-    void requestAdapter(const WGPURequestAdapterOptions*, WTF::Function<void(WGPURequestAdapterStatus, Ref<Adapter>&&, const char*)>&& callback);
+    void requestAdapter(const WGPURequestAdapterOptions*, WTF::Function<void(WGPURequestAdapterStatus, RefPtr<Adapter>&&, const char*)>&& callback);
 
 private:
     Instance();

Modified: trunk/Source/WebGPU/WebGPU/Instance.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Instance.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Instance.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -48,11 +48,11 @@
 {
 }
 
-void Instance::requestAdapter(const WGPURequestAdapterOptions* options, WTF::Function<void(WGPURequestAdapterStatus, Ref<Adapter>&&, const char*)>&& callback)
+void Instance::requestAdapter(const WGPURequestAdapterOptions* options, WTF::Function<void(WGPURequestAdapterStatus, RefPtr<Adapter>&&, const char*)>&& callback)
 {
     UNUSED_PARAM(options);
     UNUSED_PARAM(callback);
-    callback(WGPURequestAdapterStatus_Unavailable, Adapter::create(), "Adapter");
+    callback(WGPURequestAdapterStatus_Unavailable, Adapter::create(nil), "Adapter");
 }
 
 } // namespace WebGPU
@@ -311,8 +311,8 @@
 
 void wgpuInstanceRequestAdapter(WGPUInstance instance, const WGPURequestAdapterOptions* options, WGPURequestAdapterCallback callback, void* userdata)
 {
-    instance->instance->requestAdapter(options, [callback, userdata] (WGPURequestAdapterStatus status, Ref<WebGPU::Adapter>&& adapter, const char* message) {
-        callback(status, new WGPUAdapterImpl { WTFMove(adapter) }, message, userdata);
+    instance->instance->requestAdapter(options, [callback, userdata] (WGPURequestAdapterStatus status, RefPtr<WebGPU::Adapter>&& adapter, const char* message) {
+        callback(status, adapter ? new WGPUAdapterImpl { adapter.releaseNonNull() } : nullptr, message, userdata);
     });
 }
 

Modified: trunk/Source/WebGPU/WebGPU/QuerySet.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/QuerySet.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/QuerySet.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -35,9 +35,9 @@
 class QuerySet : public RefCounted<QuerySet> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<QuerySet> create()
+    static Ref<QuerySet> create(id <MTLCounterSampleBuffer> counterSampleBuffer)
     {
-        return adoptRef(*new QuerySet());
+        return adoptRef(*new QuerySet(counterSampleBuffer));
     }
 
     ~QuerySet();
@@ -46,7 +46,9 @@
     void setLabel(const char*);
 
 private:
-    QuerySet();
+    QuerySet(id <MTLCounterSampleBuffer>);
+
+    id <MTLCounterSampleBuffer> m_counterSampleBuffer { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/QuerySet.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/QuerySet.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/QuerySet.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -34,10 +34,14 @@
 RefPtr<QuerySet> Device::createQuerySet(const WGPUQuerySetDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return QuerySet::create();
+    return QuerySet::create(nil);
 }
 
-QuerySet::QuerySet() = default;
+QuerySet::QuerySet(id <MTLCounterSampleBuffer> counterSampleBuffer)
+    : m_counterSampleBuffer(counterSampleBuffer)
+{
+    UNUSED_VARIABLE(m_counterSampleBuffer);
+}
 
 QuerySet::~QuerySet() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/Queue.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Queue.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Queue.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -40,9 +40,9 @@
 class Queue : public RefCounted<Queue> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<Queue> create()
+    static Ref<Queue> create(id <MTLCommandQueue> commandQueue)
     {
-        return adoptRef(*new Queue());
+        return adoptRef(*new Queue(commandQueue));
     }
 
     ~Queue();
@@ -54,7 +54,9 @@
     void setLabel(const char*);
 
 private:
-    Queue();
+    Queue(id <MTLCommandQueue>);
+
+    id <MTLCommandQueue> m_commandQueue { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/Queue.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Queue.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Queue.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -32,7 +32,11 @@
 
 namespace WebGPU {
 
-Queue::Queue() = default;
+Queue::Queue(id <MTLCommandQueue> commandQueue)
+    : m_commandQueue(commandQueue)
+{
+    UNUSED_VARIABLE(m_commandQueue);
+}
 
 Queue::~Queue() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/RenderBundle.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/RenderBundle.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/RenderBundle.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -35,9 +35,9 @@
 class RenderBundle : public RefCounted<RenderBundle> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<RenderBundle> create()
+    static Ref<RenderBundle> create(id <MTLIndirectCommandBuffer> indirectCommandBuffer)
     {
-        return adoptRef(*new RenderBundle());
+        return adoptRef(*new RenderBundle(indirectCommandBuffer));
     }
 
     ~RenderBundle();
@@ -45,7 +45,9 @@
     void setLabel(const char*);
 
 private:
-    RenderBundle();
+    RenderBundle(id <MTLIndirectCommandBuffer>);
+
+    id <MTLIndirectCommandBuffer> m_indirectCommandBuffer { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/RenderBundle.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/RenderBundle.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/RenderBundle.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -30,7 +30,11 @@
 
 namespace WebGPU {
 
-RenderBundle::RenderBundle() = default;
+RenderBundle::RenderBundle(id <MTLIndirectCommandBuffer> indirectCommandBuffer)
+    : m_indirectCommandBuffer(indirectCommandBuffer)
+{
+    UNUSED_VARIABLE(m_indirectCommandBuffer);
+}
 
 RenderBundle::~RenderBundle() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/RenderBundleEncoder.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/RenderBundleEncoder.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/RenderBundleEncoder.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -41,9 +41,9 @@
 class RenderBundleEncoder : public RefCounted<RenderBundleEncoder> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<RenderBundleEncoder> create()
+    static Ref<RenderBundleEncoder> create(id <MTLIndirectCommandBuffer> indirectCommandBuffer)
     {
-        return adoptRef(*new RenderBundleEncoder());
+        return adoptRef(*new RenderBundleEncoder(indirectCommandBuffer));
     }
 
     ~RenderBundleEncoder();
@@ -63,7 +63,9 @@
     void setLabel(const char*);
 
 private:
-    RenderBundleEncoder();
+    RenderBundleEncoder(id <MTLIndirectCommandBuffer>);
+
+    id <MTLIndirectCommandBuffer> m_indirectCommandBuffer { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/RenderBundleEncoder.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/RenderBundleEncoder.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/RenderBundleEncoder.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -38,10 +38,14 @@
 RefPtr<RenderBundleEncoder> Device::createRenderBundleEncoder(const WGPURenderBundleEncoderDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return RenderBundleEncoder::create();
+    return RenderBundleEncoder::create(nil);
 }
 
-RenderBundleEncoder::RenderBundleEncoder() = default;
+RenderBundleEncoder::RenderBundleEncoder(id <MTLIndirectCommandBuffer> indirectCommandBuffer)
+    : m_indirectCommandBuffer(indirectCommandBuffer)
+{
+    UNUSED_VARIABLE(m_indirectCommandBuffer);
+}
 
 RenderBundleEncoder::~RenderBundleEncoder() = default;
 
@@ -77,7 +81,7 @@
 RefPtr<RenderBundle> RenderBundleEncoder::finish(const WGPURenderBundleDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return RenderBundle::create();
+    return RenderBundle::create(nil);
 }
 
 void RenderBundleEncoder::insertDebugMarker(const char* markerLabel)

Modified: trunk/Source/WebGPU/WebGPU/RenderPassEncoder.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/RenderPassEncoder.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/RenderPassEncoder.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -43,9 +43,9 @@
 class RenderPassEncoder : public RefCounted<RenderPassEncoder> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<RenderPassEncoder> create()
+    static Ref<RenderPassEncoder> create(id <MTLRenderCommandEncoder> renderCommandEncoder)
     {
-        return adoptRef(*new RenderPassEncoder());
+        return adoptRef(*new RenderPassEncoder(renderCommandEncoder));
     }
 
     ~RenderPassEncoder();
@@ -74,7 +74,9 @@
     void setLabel(const char*);
 
 private:
-    RenderPassEncoder();
+    RenderPassEncoder(id <MTLRenderCommandEncoder>);
+
+    id <MTLRenderCommandEncoder> m_renderCommandEncoder { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/RenderPassEncoder.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/RenderPassEncoder.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/RenderPassEncoder.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -35,7 +35,11 @@
 
 namespace WebGPU {
 
-RenderPassEncoder::RenderPassEncoder() = default;
+RenderPassEncoder::RenderPassEncoder(id <MTLRenderCommandEncoder> renderCommandEncoder)
+    : m_renderCommandEncoder(renderCommandEncoder)
+{
+    UNUSED_VARIABLE(m_renderCommandEncoder);
+}
 
 RenderPassEncoder::~RenderPassEncoder() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/RenderPipeline.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/RenderPipeline.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/RenderPipeline.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -37,9 +37,9 @@
 class RenderPipeline : public RefCounted<RenderPipeline> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<RenderPipeline> create()
+    static Ref<RenderPipeline> create(id <MTLRenderPipelineState> renderPipelineState)
     {
-        return adoptRef(*new RenderPipeline());
+        return adoptRef(*new RenderPipeline(renderPipelineState));
     }
 
     ~RenderPipeline();
@@ -48,7 +48,9 @@
     void setLabel(const char*);
 
 private:
-    RenderPipeline();
+    RenderPipeline(id <MTLRenderPipelineState>);
+
+    id <MTLRenderPipelineState> m_renderPipelineState { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/RenderPipeline.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/RenderPipeline.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/RenderPipeline.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -35,7 +35,7 @@
 RefPtr<RenderPipeline> Device::createRenderPipeline(const WGPURenderPipelineDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return RenderPipeline::create();
+    return RenderPipeline::create(nil);
 }
 
 void Device::createRenderPipelineAsync(const WGPURenderPipelineDescriptor* descriptor, WTF::Function<void(WGPUCreatePipelineAsyncStatus, RefPtr<RenderPipeline>&&, const char* message)>&& callback)
@@ -44,7 +44,11 @@
     UNUSED_PARAM(callback);
 }
 
-RenderPipeline::RenderPipeline() = default;
+RenderPipeline::RenderPipeline(id <MTLRenderPipelineState> renderPipelineState)
+    : m_renderPipelineState(renderPipelineState)
+{
+    UNUSED_VARIABLE(m_renderPipelineState);
+}
 
 RenderPipeline::~RenderPipeline() = default;
 
@@ -51,7 +55,7 @@
 Ref<BindGroupLayout> RenderPipeline::getBindGroupLayout(uint32_t groupIndex)
 {
     UNUSED_PARAM(groupIndex);
-    return BindGroupLayout::create();
+    return BindGroupLayout::create(nil, nil, nil);
 }
 
 void RenderPipeline::setLabel(const char* label)

Modified: trunk/Source/WebGPU/WebGPU/Sampler.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Sampler.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Sampler.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -35,9 +35,9 @@
 class Sampler : public RefCounted<Sampler> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<Sampler> create()
+    static Ref<Sampler> create(id <MTLSamplerState> samplerState)
     {
-        return adoptRef(*new Sampler());
+        return adoptRef(*new Sampler(samplerState));
     }
 
     ~Sampler();
@@ -45,7 +45,9 @@
     void setLabel(const char*);
 
 private:
-    Sampler();
+    Sampler(id <MTLSamplerState>);
+
+    id <MTLSamplerState> m_samplerState { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/Sampler.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Sampler.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Sampler.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -34,10 +34,14 @@
 RefPtr<Sampler> Device::createSampler(const WGPUSamplerDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return Sampler::create();
+    return Sampler::create(nil);
 }
 
-Sampler::Sampler() = default;
+Sampler::Sampler(id <MTLSamplerState> samplerState)
+    : m_samplerState(samplerState)
+{
+    UNUSED_VARIABLE(m_samplerState);
+}
 
 Sampler::~Sampler() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/ShaderModule.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/ShaderModule.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/ShaderModule.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -35,9 +35,9 @@
 class ShaderModule : public RefCounted<ShaderModule> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<ShaderModule> create()
+    static Ref<ShaderModule> create(id <MTLLibrary> library)
     {
-        return adoptRef(*new ShaderModule());
+        return adoptRef(*new ShaderModule(library));
     }
 
     ~ShaderModule();
@@ -46,7 +46,9 @@
     void setLabel(const char*);
 
 private:
-    ShaderModule();
+    ShaderModule(id <MTLLibrary>);
+
+    id <MTLLibrary> m_library { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/ShaderModule.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/ShaderModule.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/ShaderModule.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -34,10 +34,14 @@
 RefPtr<ShaderModule> Device::createShaderModule(const WGPUShaderModuleDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return ShaderModule::create();
+    return ShaderModule::create(nil);
 }
 
-ShaderModule::ShaderModule() = default;
+ShaderModule::ShaderModule(id <MTLLibrary> library)
+    : m_library(library)
+{
+    UNUSED_VARIABLE(m_library);
+}
 
 ShaderModule::~ShaderModule() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/SwapChain.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/SwapChain.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/SwapChain.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -45,7 +45,7 @@
 
 Ref<TextureView> SwapChain::getCurrentTextureView()
 {
-    return TextureView::create();
+    return TextureView::create(nil);
 }
 
 void SwapChain::present()

Modified: trunk/Source/WebGPU/WebGPU/Texture.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Texture.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Texture.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -38,9 +38,9 @@
 class Texture : public RefCounted<Texture> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<Texture> create()
+    static Ref<Texture> create(id <MTLTexture> texture)
     {
-        return adoptRef(*new Texture());
+        return adoptRef(*new Texture(texture));
     }
 
     ~Texture();
@@ -50,7 +50,9 @@
     void setLabel(const char*);
 
 private:
-    Texture();
+    Texture(id <MTLTexture>);
+
+    id <MTLTexture> m_texture { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/Texture.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/Texture.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/Texture.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -35,10 +35,14 @@
 RefPtr<Texture> Device::createTexture(const WGPUTextureDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return Texture::create();
+    return Texture::create(nil);
 }
 
-Texture::Texture() = default;
+Texture::Texture(id <MTLTexture> texture)
+    : m_texture(texture)
+{
+    UNUSED_VARIABLE(m_texture);
+}
 
 Texture::~Texture() = default;
 
@@ -45,7 +49,7 @@
 RefPtr<TextureView> Texture::createView(const WGPUTextureViewDescriptor* descriptor)
 {
     UNUSED_PARAM(descriptor);
-    return TextureView::create();
+    return TextureView::create(nil);
 }
 
 void Texture::destroy()

Modified: trunk/Source/WebGPU/WebGPU/TextureView.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/TextureView.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/TextureView.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -35,9 +35,9 @@
 class TextureView : public RefCounted<TextureView> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    static Ref<TextureView> create()
+    static Ref<TextureView> create(id <MTLTexture> texture)
     {
-        return adoptRef(*new TextureView());
+        return adoptRef(*new TextureView(texture));
     }
 
     ~TextureView();
@@ -45,7 +45,9 @@
     void setLabel(const char*);
 
 private:
-    TextureView();
+    TextureView(id <MTLTexture>);
+
+    id <MTLTexture> m_texture { nil };
 };
 
 } // namespace WebGPU

Modified: trunk/Source/WebGPU/WebGPU/TextureView.mm (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/TextureView.mm	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/TextureView.mm	2022-02-21 19:32:30 UTC (rev 290256)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Apple Inc. All rights reserved.
+ * Copyright (c) 2021-2022 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -30,7 +30,11 @@
 
 namespace WebGPU {
 
-TextureView::TextureView() = default;
+TextureView::TextureView(id <MTLTexture> texture)
+    : m_texture(texture)
+{
+    UNUSED_VARIABLE(m_texture);
+}
 
 TextureView::~TextureView() = default;
 

Modified: trunk/Source/WebGPU/WebGPU/config.h (290255 => 290256)


--- trunk/Source/WebGPU/WebGPU/config.h	2022-02-21 19:23:34 UTC (rev 290255)
+++ trunk/Source/WebGPU/WebGPU/config.h	2022-02-21 19:32:30 UTC (rev 290256)
@@ -25,6 +25,8 @@
 
 #include "ExportMacros.h"
 
+#include <Metal/Metal.h>
+
 #include <wtf/Assertions.h>
 
 #include <wtf/DisallowCType.h>
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to