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

Changeset 238451 in webkit


Ignore:
Timestamp:
Nov 22, 2018, 1:17:41 PM (8 years ago)
Author:
dino@apple.com
Message:

Implement WebGPUQueue and device.getQueue()
https://bugs.webkit.org/show_bug.cgi?id=191911
<rdar://problem/46214871>

Reviewed by Antoine Quint.

Source/WebCore:

Implement WebGPUDevice::getQueue(), which creates a WebGPUQueue
instance if necessary. Also link WebGPUQueue to the existing
GPUQueue object, and expose the label IDL property.

This patch is based on some work from Justin Fan.

Test: webgpu/queue-creation.html

  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

New files.

  • Modules/webgpu/WebGPUCommandBuffer.h:

(WebCore::WebGPUCommandBuffer::commandBuffer const):

Expose a GPUCommandBuffer getter, used when submitting (even though
the actual GPU submission isn't implemented yet).

  • Modules/webgpu/WebGPUDevice.cpp:

(WebCore::WebGPUDevice::getQueue):

  • Modules/webgpu/WebGPUDevice.h:
  • Modules/webgpu/WebGPUDevice.idl:

Implement getQueue().

  • Modules/webgpu/WebGPUQueue.cpp:

(WebCore::WebGPUQueue::create):
(WebCore::WebGPUQueue::WebGPUQueue):
(WebCore::WebGPUQueue::submit):

  • Modules/webgpu/WebGPUQueue.h:

(WebCore::WebGPUQueue::label const):
(WebCore::WebGPUQueue::setLabel):

  • Modules/webgpu/WebGPUQueue.idl:

New class. Mostly sends stuff onto GPUQueue.

  • bindings/js/WebCoreBuiltinNames.h:

Add WebGPUQueue.

  • platform/graphics/gpu/GPUQueue.h:
  • platform/graphics/gpu/cocoa/GPUQueueMetal.mm:

(WebCore::GPUQueue::create):
(WebCore::GPUQueue::submit):
(WebCore::GPUQueue::label const):
(WebCore::GPUQueue::setLabel const):

"label" getter/setter that uses
the underlying MTLCommandQueue label property, but prefixes
it with a WebKit identifier, so it can be correctly
identified in system crash logs as coming from WebGPU.

LayoutTests:

WPT-style test for queue creation.

  • webgpu/queue-creation-expected.txt: Added.
  • webgpu/queue-creation.html: Added.
Location:
trunk
Files:
2 added
13 edited
3 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r238450 r238451  
     12018-11-22  Dean Jackson  <dino@apple.com>
     2
     3        Implement WebGPUQueue and device.getQueue()
     4        https://bugs.webkit.org/show_bug.cgi?id=191911
     5        <rdar://problem/46214871>
     6
     7        Reviewed by Antoine Quint.
     8
     9        WPT-style test for queue creation.
     10
     11        * webgpu/queue-creation-expected.txt: Added.
     12        * webgpu/queue-creation.html: Added.
     13
    1142018-11-22  Frederic Wang  <fwang@igalia.com>
    215
  • trunk/Source/WebCore/CMakeLists.txt

    r238382 r238451  
    463463    Modules/webgpu/WebGPUPipelineDescriptorBase.idl
    464464    Modules/webgpu/WebGPUPipelineStageDescriptor.idl
     465    Modules/webgpu/WebGPUQueue.idl
    465466    Modules/webgpu/WebGPURenderPipeline.idl
    466467    Modules/webgpu/WebGPURenderPipelineDescriptor.idl
  • trunk/Source/WebCore/ChangeLog

    r238449 r238451  
     12018-11-22  Dean Jackson  <dino@apple.com>
     2
     3        Implement WebGPUQueue and device.getQueue()
     4        https://bugs.webkit.org/show_bug.cgi?id=191911
     5        <rdar://problem/46214871>
     6
     7        Reviewed by Antoine Quint.
     8
     9        Implement WebGPUDevice::getQueue(), which creates a WebGPUQueue
     10        instance if necessary. Also link WebGPUQueue to the existing
     11        GPUQueue object, and expose the label IDL property.
     12
     13        This patch is based on some work from Justin Fan.
     14
     15        Test: webgpu/queue-creation.html
     16
     17        * DerivedSources.make:
     18        * Sources.txt:
     19        * WebCore.xcodeproj/project.pbxproj:
     20            New files.
     21
     22        * Modules/webgpu/WebGPUCommandBuffer.h:
     23        (WebCore::WebGPUCommandBuffer::commandBuffer const):
     24            Expose a GPUCommandBuffer getter, used when submitting (even though
     25            the actual GPU submission isn't implemented yet).
     26
     27        * Modules/webgpu/WebGPUDevice.cpp:
     28        (WebCore::WebGPUDevice::getQueue):
     29        * Modules/webgpu/WebGPUDevice.h:
     30        * Modules/webgpu/WebGPUDevice.idl:
     31            Implement getQueue().
     32
     33        * Modules/webgpu/WebGPUQueue.cpp:
     34        (WebCore::WebGPUQueue::create):
     35        (WebCore::WebGPUQueue::WebGPUQueue):
     36        (WebCore::WebGPUQueue::submit):
     37        * Modules/webgpu/WebGPUQueue.h:
     38        (WebCore::WebGPUQueue::label const):
     39        (WebCore::WebGPUQueue::setLabel):
     40        * Modules/webgpu/WebGPUQueue.idl:
     41            New class. Mostly sends stuff onto GPUQueue.
     42
     43        * bindings/js/WebCoreBuiltinNames.h:
     44            Add WebGPUQueue.
     45
     46        * platform/graphics/gpu/GPUQueue.h:
     47        * platform/graphics/gpu/cocoa/GPUQueueMetal.mm:
     48        (WebCore::GPUQueue::create):
     49        (WebCore::GPUQueue::submit):
     50        (WebCore::GPUQueue::label const):
     51        (WebCore::GPUQueue::setLabel const):
     52            "label" getter/setter that uses
     53            the underlying MTLCommandQueue label property, but prefixes
     54            it with a WebKit identifier, so it can be correctly
     55            identified in system crash logs as coming from WebGPU.
     56
    1572018-11-22  Zalan Bujtas  <zalan@apple.com>
    258
  • trunk/Source/WebCore/DerivedSources.make

    r238382 r238451  
    378378    $(WebCore)/Modules/webgpu/WebGPUCommandBuffer.idl \
    379379    $(WebCore)/Modules/webgpu/WebGPUDevice.idl \
     380    $(WebCore)/Modules/webgpu/WebGPUQueue.idl \
    380381    $(WebCore)/Modules/webgpu/WebGPUPipelineDescriptorBase.idl \
    381382    $(WebCore)/Modules/webgpu/WebGPUPipelineStageDescriptor.idl \
     
    389390    $(WebCore)/Modules/webgpu/WebGPUTexture.idl \
    390391    $(WebCore)/Modules/webgpu/WebGPUTextureFormatEnum.idl \
    391         $(WebCore)/Modules/webgpu/WebGPUTextureView.idl \
     392    $(WebCore)/Modules/webgpu/WebGPUTextureView.idl \
    392393    $(WebCore)/Modules/websockets/CloseEvent.idl \
    393394    $(WebCore)/Modules/websockets/WebSocket.idl \
  • trunk/Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.h

    r238245 r238451  
    4040    static RefPtr<WebGPUCommandBuffer> create(RefPtr<GPUCommandBuffer>&&);
    4141
     42    const GPUCommandBuffer& commandBuffer() const { return m_commandBuffer.get(); }
     43
    4244private:
    4345    WebGPUCommandBuffer(Ref<GPUCommandBuffer>&&);
  • trunk/Source/WebCore/Modules/webgpu/WebGPUDevice.cpp

    r238382 r238451  
    3636#include "WebGPUCommandBuffer.h"
    3737#include "WebGPUPipelineStageDescriptor.h"
     38#include "WebGPUQueue.h"
    3839#include "WebGPURenderPipeline.h"
    3940#include "WebGPURenderPipelineDescriptor.h"
     
    125126}
    126127
     128RefPtr<WebGPUQueue> WebGPUDevice::getQueue()
     129{
     130    if (!m_queue)
     131        m_queue = WebGPUQueue::create(m_device->getQueue());
     132
     133    return m_queue;
     134}
     135
    127136} // namespace WebCore
    128137
  • trunk/Source/WebCore/Modules/webgpu/WebGPUDevice.h

    r238245 r238451  
    3030#include "GPUDevice.h"
    3131#include "WebGPUAdapter.h"
    32 
     32#include "WebGPUQueue.h"
    3333#include <wtf/Ref.h>
    3434#include <wtf/RefCounted.h>
     
    5656
    5757    RefPtr<WebGPUCommandBuffer> createCommandBuffer() const;
     58    RefPtr<WebGPUQueue> getQueue();
    5859
    5960private:
     
    6162
    6263    Ref<WebGPUAdapter> m_adapter;
    63 
    6464    RefPtr<GPUDevice> m_device;
     65    RefPtr<WebGPUQueue> m_queue;
    6566};
    6667
  • trunk/Source/WebCore/Modules/webgpu/WebGPUDevice.idl

    r238245 r238451  
    4040    WebGPUCommandBuffer createCommandBuffer(/*WebGPUCommandBufferDescriptor descriptor*/);
    4141
    42 /* To Be Implemented:
    43     WebGPUBuffer createBuffer(WebGPUBufferDescriptor descriptor);
    44     WebGPUTexture createTexture(WebGPUTextureDescriptor descriptor);
    45     WebGPUSampler createSampler(WebGPUSamplerDescriptor descriptor);
    46 
    47     WebGPUBindGroupLayout createBindGroupLayout(WebGPUBindGroupLayoutDescriptor descriptor);
    48     WebGPUPipelineLayout createPipelineLayout(WebGPUPipelineLayoutDescriptor descriptor);
    49     WebGPUBindGroup createBindGroup(WebGPUBindGroupDescriptor descriptor);
    50 
    51     WebGPUBlendState createBlendState(WebGPUBlendStateDescriptor descriptor);
    52     WebGPUDepthStencilState createDepthStencilState(WebGPUDepthStencilStateDescriptor descriptor);
    53     WebGPUInputState createInputState(WebGPUInputStateDescriptor descriptor);
    54     WebGPUAttachmentState createAttachmentState(WebGPUAttachmentStateDescriptor descriptor);
    55     WebGPUComputePipeline createComputePipeline(WebGPUComputePipelineDescriptor descriptor);
    56     WebGPUFence createFence(WebGPUFenceDescriptor descriptor);
    57 
    5842    WebGPUQueue getQueue();
    5943
    60     attribute WebGPULogCallback onLog;
    61     WebGPUObjectStatusQuery getObjectStatus(StatusableObject statusableObject);
    62 */
     44    // FIXME: Unimplemented.
     45    // WebGPUBuffer createBuffer(WebGPUBufferDescriptor descriptor);
     46    // WebGPUTexture createTexture(WebGPUTextureDescriptor descriptor);
     47    // WebGPUSampler createSampler(WebGPUSamplerDescriptor descriptor);
     48    //
     49    // WebGPUBindGroupLayout createBindGroupLayout(WebGPUBindGroupLayoutDescriptor descriptor);
     50    // WebGPUPipelineLayout createPipelineLayout(WebGPUPipelineLayoutDescriptor descriptor);
     51    // WebGPUBindGroup createBindGroup(WebGPUBindGroupDescriptor descriptor);
     52    //
     53    // WebGPUBlendState createBlendState(WebGPUBlendStateDescriptor descriptor);
     54    // WebGPUDepthStencilState createDepthStencilState(WebGPUDepthStencilStateDescriptor descriptor);
     55    // WebGPUInputState createInputState(WebGPUInputStateDescriptor descriptor);
     56    // WebGPUAttachmentState createAttachmentState(WebGPUAttachmentStateDescriptor descriptor);
     57    // WebGPUComputePipeline createComputePipeline(WebGPUComputePipelineDescriptor descriptor);
     58    // WebGPUFence createFence(WebGPUFenceDescriptor descriptor);
     59    //
     60    // attribute WebGPULogCallback onLog;
     61    // WebGPUObjectStatusQuery getObjectStatus(StatusableObject statusableObject);
    6362};
  • trunk/Source/WebCore/Modules/webgpu/WebGPUQueue.cpp

    r238450 r238451  
    2424 */
    2525
    26 #pragma once
     26#include "config.h"
     27#include "WebGPUQueue.h"
    2728
    2829#if ENABLE(WEBGPU)
    2930
    30 #include <wtf/Ref.h>
    31 #include <wtf/RefCounted.h>
    32 #include <wtf/RefPtr.h>
     31#include "GPUCommandBuffer.h"
     32#include "GPUQueue.h"
     33#include "WebGPUCommandBuffer.h"
    3334
    3435namespace WebCore {
    3536
    36 class GPUCommandBuffer;
     37RefPtr<WebGPUQueue> WebGPUQueue::create(RefPtr<GPUQueue>&& queue)
     38{
     39    if (!queue)
     40        return nullptr;
    3741
    38 class WebGPUCommandBuffer : public RefCounted<WebGPUCommandBuffer> {
    39 public:
    40     static RefPtr<WebGPUCommandBuffer> create(RefPtr<GPUCommandBuffer>&&);
     42    return adoptRef(new WebGPUQueue(queue.releaseNonNull()));
     43}
    4144
    42 private:
    43     WebGPUCommandBuffer(Ref<GPUCommandBuffer>&&);
     45WebGPUQueue::WebGPUQueue(Ref<GPUQueue>&& queue)
     46    : m_queue(WTFMove(queue))
     47{
     48}
    4449
    45     Ref<GPUCommandBuffer> m_commandBuffer;
    46 };
     50void WebGPUQueue::submit(Vector<RefPtr<WebGPUCommandBuffer>>&& buffers)
     51{
     52    auto gpuBuffers = buffers.map([] (const auto& buffer) -> Ref<const GPUCommandBuffer> {
     53        return buffer->commandBuffer();
     54    });
     55    m_queue->submit(WTFMove(gpuBuffers));
     56}
    4757
    4858} // namespace WebCore
  • trunk/Source/WebCore/Modules/webgpu/WebGPUQueue.h

    r238450 r238451  
    2828#if ENABLE(WEBGPU)
    2929
    30 #include <wtf/Ref.h>
     30#include "GPUQueue.h"
    3131#include <wtf/RefCounted.h>
    3232#include <wtf/RefPtr.h>
     33#include <wtf/Vector.h>
    3334
    3435namespace WebCore {
    3536
    36 class GPUCommandBuffer;
     37class WebGPUCommandBuffer;
    3738
    38 class WebGPUCommandBuffer : public RefCounted<WebGPUCommandBuffer> {
     39class WebGPUQueue : public RefCounted<WebGPUQueue> {
    3940public:
    40     static RefPtr<WebGPUCommandBuffer> create(RefPtr<GPUCommandBuffer>&&);
     41    static RefPtr<WebGPUQueue> create(RefPtr<GPUQueue>&&);
     42
     43    void submit(Vector<RefPtr<WebGPUCommandBuffer>>&&);
     44
     45    String label() const { return m_queue->label(); }
     46    void setLabel(const String& label) { m_queue->setLabel(label); }
    4147
    4248private:
    43     WebGPUCommandBuffer(Ref<GPUCommandBuffer>&&);
     49    WebGPUQueue(Ref<GPUQueue>&&);
    4450
    45     Ref<GPUCommandBuffer> m_commandBuffer;
     51    Ref<GPUQueue> m_queue;
    4652};
    4753
  • trunk/Source/WebCore/Modules/webgpu/WebGPUQueue.idl

    r238450 r238451  
    2323 * THE POSSIBILITY OF SUCH DAMAGE.
    2424 */
     25// https://github.com/gpuweb/gpuweb/blob/master/design/sketch.webidl
    2526
    26 #pragma once
     27[
     28    Conditional=WEBGPU,
     29    EnabledAtRuntime=WebGPU,
     30    ImplementationLacksVTable
     31] interface WebGPUQueue {
     32    void submit(sequence<WebGPUCommandBuffer> buffers);
    2733
    28 #if ENABLE(WEBGPU)
    29 
    30 #include <wtf/Ref.h>
    31 #include <wtf/RefCounted.h>
    32 #include <wtf/RefPtr.h>
    33 
    34 namespace WebCore {
    35 
    36 class GPUCommandBuffer;
    37 
    38 class WebGPUCommandBuffer : public RefCounted<WebGPUCommandBuffer> {
    39 public:
    40     static RefPtr<WebGPUCommandBuffer> create(RefPtr<GPUCommandBuffer>&&);
    41 
    42 private:
    43     WebGPUCommandBuffer(Ref<GPUCommandBuffer>&&);
    44 
    45     Ref<GPUCommandBuffer> m_commandBuffer;
     34    // FIXME: Unimplemented.
     35    // void signal(WebGPUFence fence, u64 signalValue);
     36    // void wait(WebGPUFence fence, u64 valueToWait);
    4637};
    47 
    48 } // namespace WebCore
    49 
    50 #endif // ENABLE(WEBGPU)
  • trunk/Source/WebCore/Sources.txt

    r238419 r238451  
    306306Modules/webgpu/WebGPUCommandBuffer.cpp
    307307Modules/webgpu/WebGPUDevice.cpp
     308Modules/webgpu/WebGPUQueue.cpp
    308309Modules/webgpu/WebGPURenderingContext.cpp
    309310Modules/webgpu/WebGPURenderPipeline.cpp
     
    32153216JSWebGPUCommandBuffer.cpp
    32163217JSWebGPUDevice.cpp
     3218JSWebGPUQueue.cpp
    32173219JSWebGPUPipelineDescriptorBase.cpp
    32183220JSWebGPUPipelineStageDescriptor.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r238434 r238451  
    69416941                312FF90F21A4C33F00EB199D /* GPULegacyCommandQueue.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = GPULegacyCommandQueue.cpp; sourceTree = "<group>"; };
    69426942                312FF91021A4C33F00EB199D /* GPULegacyFunction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GPULegacyFunction.h; sourceTree = "<group>"; };
     6943                312FF93921A61C9F00EB199D /* WebGPUQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGPUQueue.h; sourceTree = "<group>"; };
     6944                312FF93B21A61CA000EB199D /* WebGPUQueue.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebGPUQueue.idl; sourceTree = "<group>"; };
     6945                312FF93C21A61CA100EB199D /* WebGPUQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebGPUQueue.cpp; sourceTree = "<group>"; };
     6946                312FF93D21A61F0700EB199D /* JSWebGPUQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPUQueue.h; path = JSWebGPUQueue.h; sourceTree = "<group>"; };
     6947                312FF93E21A61F0700EB199D /* JSWebGPUQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPUQueue.cpp; path = JSWebGPUQueue.cpp; sourceTree = "<group>"; };
    69436948                313171541FB079D1008D91FC /* CanvasBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CanvasBase.h; sourceTree = "<group>"; };
    69446949                313171571FB0969E008D91FC /* CanvasBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CanvasBase.cpp; sourceTree = "<group>"; };
     
    2273022735                                31A089301E738D59003B6609 /* JSWebGPULibrary.cpp */,
    2273122736                                31A089321E738D59003B6609 /* JSWebGPULibrary.h */,
     22737                                312FF93E21A61F0700EB199D /* JSWebGPUQueue.cpp */,
     22738                                312FF93D21A61F0700EB199D /* JSWebGPUQueue.h */,
    2273222739                                31A089331E738D59003B6609 /* JSWebGPURenderCommandEncoder.cpp */,
    2273322740                                31A089351E738D59003B6609 /* JSWebGPURenderCommandEncoder.h */,
     
    2567325680                                D0C419EB2183CFA2009EC1DE /* WebGPUPipelineStageDescriptor.h */,
    2567425681                                D0C419EC2183CFA2009EC1DE /* WebGPUPipelineStageDescriptor.idl */,
     25682                                312FF93C21A61CA100EB199D /* WebGPUQueue.cpp */,
     25683                                312FF93921A61C9F00EB199D /* WebGPUQueue.h */,
     25684                                312FF93B21A61CA000EB199D /* WebGPUQueue.idl */,
    2567525685                                D093D2292179541600329217 /* WebGPURenderingContext.cpp */,
    2567625686                                D093D225217951D400329217 /* WebGPURenderingContext.h */,
  • trunk/Source/WebCore/bindings/js/WebCoreBuiltinNames.h

    r238382 r238451  
    182182    macro(WebGPUDevice) \
    183183    macro(WebGPUCommandBuffer) \
     184    macro(WebGPUQueue) \
    184185    macro(WebGPURenderingContext) \
    185186    macro(WebGPURenderPipeline) \
  • trunk/Source/WebCore/platform/graphics/gpu/GPUQueue.h

    r238419 r238451  
    3636namespace WebCore {
    3737
    38 class GPUDevice;
    39 
    4038using PlatformQueue = MTLCommandQueue;
    4139using PlatformQueueSmartPtr = RetainPtr<MTLCommandQueue>;
     40
     41class GPUCommandBuffer;
     42class GPUDevice;
    4243
    4344class GPUQueue : public RefCounted<GPUQueue> {
     
    4647
    4748    PlatformQueue* platformQueue() const { return m_platformQueue.get(); }
     49
     50    void submit(Vector<Ref<const GPUCommandBuffer>>&&);
     51
     52    String label() const;
     53    void setLabel(const String&) const;
    4854
    4955private:
  • trunk/Source/WebCore/platform/graphics/gpu/cocoa/GPUQueueMetal.mm

    r238419 r238451  
    3434#import <Metal/Metal.h>
    3535#import <wtf/BlockObjCExceptions.h>
     36#import <wtf/text/WTFString.h>
    3637
    3738namespace WebCore {
     39
     40static NSString * const commandQueueDefaultLabel = @"com.apple.WebKit";
     41static NSString * const commandQueueLabelPrefix = @"com.apple.WebKit.";
    3842
    3943RefPtr<GPUQueue> GPUQueue::create(const GPUDevice& device)
    4044{
    4145    if (!device.platformDevice()) {
    42         LOG(WebGPU, "GPUQueue::create(): Invalid GPUDevice!");
     46        LOG(WebGPU, "GPUQueue::create(): Invalid GPUDevice.");
    4347        return nullptr;
    4448    }
     
    4953
    5054    queue = adoptNS([device.platformDevice() newCommandQueue]);
     55    [queue setLabel:commandQueueDefaultLabel];
    5156
    5257    END_BLOCK_OBJC_EXCEPTIONS;
    5358
    5459    if (!queue) {
    55         LOG(WebGPU, "GPUQueue::create(): Unable to create MTLCommandQueue!");
     60        LOG(WebGPU, "GPUQueue::create(): Unable to create MTLCommandQueue.");
    5661        return nullptr;
    5762    }
     
    6570}
    6671
     72void GPUQueue::submit(Vector<Ref<const GPUCommandBuffer>>&&)
     73{
     74    // FIXME: Missing implementation.
     75}
     76
     77String GPUQueue::label() const
     78{
     79    if (!m_platformQueue)
     80        return emptyString();
     81
     82    NSString *prefixedLabel = [m_platformQueue label];
     83
     84    if ([prefixedLabel isEqualToString:commandQueueDefaultLabel])
     85        return emptyString();
     86
     87    ASSERT(prefixedLabel.length > commandQueueLabelPrefix.length);
     88    return [prefixedLabel substringFromIndex:commandQueueLabelPrefix.length];
     89}
     90
     91void GPUQueue::setLabel(const String& label) const
     92{
     93    if (label.isEmpty())
     94        [m_platformQueue setLabel:commandQueueDefaultLabel];
     95    else
     96        [m_platformQueue setLabel:[commandQueueLabelPrefix stringByAppendingString:label]];
     97}
     98
    6799} // namespace WebCore
    68100
Note: See TracChangeset for help on using the changeset viewer.