<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[213780] trunk/Source/WebCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/213780">213780</a></dd>
<dt>Author</dt> <dd>jonlee@apple.com</dd>
<dt>Date</dt> <dd>2017-03-12 20:40:55 -0700 (Sun, 12 Mar 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>WebGPU Backend
https://bugs.webkit.org/show_bug.cgi?id=169535
&lt;rdar://problem/31002364&gt;

Patch by Dean Jackson &lt;dino@apple.com&gt; on 2017-03-12
Reviewed by Jon Lee.

Fill in the remainder of the WebGPU backend. This is effectively
a C++ representation of the Metal API.

* WebCore.xcodeproj/project.pbxproj:
* html/canvas/WebGPUDrawable.cpp:
(WebCore::WebGPUDrawable::WebGPUDrawable):
* html/canvas/WebGPUDrawable.h:
(WebCore::GPUDrawable::texture): Deleted.
* platform/graphics/cocoa/GPUBufferMetal.mm:
(WebCore::GPUBuffer::GPUBuffer):
(WebCore::GPUBuffer::platformBuffer):
* platform/graphics/cocoa/GPUCommandBufferMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm.
(WebCore::GPUCommandBuffer::GPUCommandBuffer):
(WebCore::GPUCommandBuffer::platformCommandBuffer):
(WebCore::GPUCommandBuffer::presentDrawable):
* platform/graphics/cocoa/GPUCommandQueueMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm.
(WebCore::GPUCommandQueue::GPUCommandQueue):
(WebCore::GPUCommandQueue::label):
(WebCore::GPUCommandQueue::setLabel):
(WebCore::GPUCommandQueue::platformCommandQueue):
* platform/graphics/cocoa/GPUDepthStencilDescriptorMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUTextureMetal.mm.
(WebCore::GPUDepthStencilDescriptor::GPUDepthStencilDescriptor):
(WebCore::GPUDepthStencilDescriptor::depthWriteEnabled):
(WebCore::GPUDepthStencilDescriptor::setDepthWriteEnabled):
(WebCore::GPUDepthStencilDescriptor::depthCompareFunction):
(WebCore::GPUDepthStencilDescriptor::setDepthCompareFunction):
(WebCore::GPUDepthStencilDescriptor::platformDepthStencilDescriptor):
* platform/graphics/cocoa/GPUDepthStencilStateMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm.
(WebCore::GPUDepthStencilState::GPUDepthStencilState):
(WebCore::GPUDepthStencilState::label):
(WebCore::GPUDepthStencilState::setLabel):
(WebCore::GPUDepthStencilState::platformDepthStencilState):
* platform/graphics/cocoa/GPUDrawableMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm.
(WebCore::GPUDrawable::GPUDrawable):
(WebCore::GPUDrawable::release):
(WebCore::GPUDrawable::platformDrawable):
(WebCore::GPUDrawable::platformTexture):
* platform/graphics/cocoa/GPUFunctionMetal.mm:
(WebCore::GPUFunction::GPUFunction):
(WebCore::GPUFunction::platformFunction):
* platform/graphics/cocoa/GPULibraryMetal.mm:
(WebCore::GPULibrary::GPULibrary):
(WebCore::GPULibrary::setLabel):
(WebCore::GPULibrary::platformLibrary):
* platform/graphics/cocoa/GPURenderCommandEncoderMetal.mm: Added.
(WebCore::GPURenderCommandEncoder::GPURenderCommandEncoder):
(WebCore::GPURenderCommandEncoder::setRenderPipelineState):
(WebCore::GPURenderCommandEncoder::setDepthStencilState):
(WebCore::GPURenderCommandEncoder::setVertexBuffer):
(WebCore::GPURenderCommandEncoder::setFragmentBuffer):
(WebCore::GPURenderCommandEncoder::drawPrimitives):
(WebCore::GPURenderCommandEncoder::endEncoding):
(WebCore::GPURenderCommandEncoder::platformRenderCommandEncoder):
* platform/graphics/cocoa/GPURenderPassAttachmentDescriptorMetal.mm: Added.
(WebCore::GPURenderPassAttachmentDescriptor::GPURenderPassAttachmentDescriptor):
(WebCore::GPURenderPassAttachmentDescriptor::loadAction):
(WebCore::GPURenderPassAttachmentDescriptor::setLoadAction):
(WebCore::GPURenderPassAttachmentDescriptor::storeAction):
(WebCore::GPURenderPassAttachmentDescriptor::setStoreAction):
(WebCore::GPURenderPassAttachmentDescriptor::setTexture):
(WebCore::GPURenderPassAttachmentDescriptor::platformRenderPassAttachmentDescriptor):
* platform/graphics/cocoa/GPURenderPassColorAttachmentDescriptorMetal.mm: Added.
(WebCore::GPURenderPassColorAttachmentDescriptor::create):
(WebCore::GPURenderPassColorAttachmentDescriptor::GPURenderPassColorAttachmentDescriptor):
(WebCore::GPURenderPassColorAttachmentDescriptor::clearColor):
(WebCore::GPURenderPassColorAttachmentDescriptor::setClearColor):
(WebCore::GPURenderPassColorAttachmentDescriptor::platformRenderPassColorAttachmentDescriptor):
* platform/graphics/cocoa/GPURenderPassDepthAttachmentDescriptorMetal.mm: Added.
(WebCore::GPURenderPassDepthAttachmentDescriptor::create):
(WebCore::GPURenderPassDepthAttachmentDescriptor::GPURenderPassDepthAttachmentDescriptor):
(WebCore::GPURenderPassDepthAttachmentDescriptor::clearDepth):
(WebCore::GPURenderPassDepthAttachmentDescriptor::setClearDepth):
(WebCore::GPURenderPassDepthAttachmentDescriptor::platformRenderPassDepthAttachmentDescriptor):
* platform/graphics/cocoa/GPURenderPassDescriptorMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUBufferMetal.mm.
(WebCore::GPURenderPassDescriptor::GPURenderPassDescriptor):
(WebCore::GPURenderPassDescriptor::colorAttachments):
(WebCore::GPURenderPassDescriptor::depthAttachment):
(WebCore::GPURenderPassDescriptor::platformRenderPassDescriptor):
* platform/graphics/cocoa/GPURenderPipelineColorAttachmentDescriptorMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPULibraryMetal.mm.
(WebCore::GPURenderPipelineColorAttachmentDescriptor::create):
(WebCore::GPURenderPipelineColorAttachmentDescriptor::GPURenderPipelineColorAttachmentDescriptor):
(WebCore::GPURenderPipelineColorAttachmentDescriptor::pixelFormat):
(WebCore::GPURenderPipelineColorAttachmentDescriptor::setPixelFormat):
(WebCore::GPURenderPipelineColorAttachmentDescriptor::platformRenderPipelineColorAttachmentDescriptor):
* platform/graphics/cocoa/GPURenderPipelineDescriptorMetal.mm: Added.
(WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor):
(WebCore::GPURenderPipelineDescriptor::depthAttachmentPixelFormat):
(WebCore::GPURenderPipelineDescriptor::setDepthAttachmentPixelFormat):
(WebCore::GPURenderPipelineDescriptor::setVertexFunction):
(WebCore::GPURenderPipelineDescriptor::setFragmentFunction):
(WebCore::GPURenderPipelineDescriptor::colorAttachments):
(WebCore::GPURenderPipelineDescriptor::reset):
(WebCore::GPURenderPipelineDescriptor::platformRenderPipelineDescriptor):
* platform/graphics/cocoa/GPURenderPipelineStateMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUTextureMetal.mm.
(WebCore::GPURenderPipelineState::GPURenderPipelineState):
(WebCore::GPURenderPipelineState::label):
(WebCore::GPURenderPipelineState::setLabel):
(WebCore::GPURenderPipelineState::platformRenderPipelineState):
* platform/graphics/cocoa/GPUTextureDescriptorMetal.mm:
(WebCore::GPUTextureDescriptor::GPUTextureDescriptor):
(WebCore::GPUTextureDescriptor::platformTextureDescriptor):
* platform/graphics/cocoa/GPUTextureMetal.mm:
(WebCore::GPUTexture::GPUTexture):
(WebCore::GPUTexture::platformTexture):
* platform/graphics/gpu/GPUBuffer.cpp:
* platform/graphics/gpu/GPUBuffer.h:
* platform/graphics/gpu/GPUCommandBuffer.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp.
(WebCore::GPUCommandBuffer::create):
(WebCore::GPUCommandBuffer::~GPUCommandBuffer):
(WebCore::GPUCommandBuffer::commit):
(WebCore::GPUCommandBuffer::createRenderCommandEncoder):
(WebCore::GPUCommandBuffer::presentDrawable):
* platform/graphics/gpu/GPUCommandBuffer.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
* platform/graphics/gpu/GPUCommandQueue.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp.
(WebCore::GPUCommandQueue::create):
(WebCore::GPUCommandQueue::~GPUCommandQueue):
(WebCore::GPUCommandQueue::createCommandBuffer):
(WebCore::GPUCommandQueue::label):
(WebCore::GPUCommandQueue::setLabel):
* platform/graphics/gpu/GPUCommandQueue.h: Copied from Source/WebCore/platform/graphics/gpu/GPULibrary.h.
* platform/graphics/gpu/GPUDepthStencilDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.cpp.
(WebCore::GPUDepthStencilDescriptor::create):
(WebCore::GPUDepthStencilDescriptor::~GPUDepthStencilDescriptor):
(WebCore::GPUDepthStencilDescriptor::depthWriteEnabled):
(WebCore::GPUDepthStencilDescriptor::setDepthWriteEnabled):
(WebCore::GPUDepthStencilDescriptor::depthCompareFunction):
(WebCore::GPUDepthStencilDescriptor::setDepthCompareFunction):
* platform/graphics/gpu/GPUDepthStencilDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
* platform/graphics/gpu/GPUDepthStencilState.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp.
(WebCore::GPUDepthStencilState::create):
(WebCore::GPUDepthStencilState::~GPUDepthStencilState):
(WebCore::GPUDepthStencilState::label):
(WebCore::GPUDepthStencilState::setLabel):
* platform/graphics/gpu/GPUDepthStencilState.h: Copied from Source/WebCore/platform/graphics/gpu/GPULibrary.h.
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::createCommandQueue):
(WebCore::GPUDevice::getFramebuffer):
* platform/graphics/gpu/GPUDevice.h:
(WebCore::GPUDevice::markLayerComposited):
(WebCore::GPUDevice::createCommandQueue): Deleted.
(WebCore::GPUDevice::getFramebuffer): Deleted.
* platform/graphics/gpu/GPUDrawable.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp.
(WebCore::GPUDrawable::create):
(WebCore::GPUDrawable::~GPUDrawable):
(WebCore::GPUDrawable::release):
* platform/graphics/gpu/GPUDrawable.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
* platform/graphics/gpu/GPUEnums.h: Copied from Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm.
* platform/graphics/gpu/GPUFunction.h:
* platform/graphics/gpu/GPULibrary.cpp:
* platform/graphics/gpu/GPULibrary.h:
* platform/graphics/gpu/GPURenderCommandEncoder.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPULibrary.cpp.
(WebCore::GPURenderCommandEncoder::create):
(WebCore::GPURenderCommandEncoder::~GPURenderCommandEncoder):
(WebCore::GPURenderCommandEncoder::setRenderPipelineState):
(WebCore::GPURenderCommandEncoder::setDepthStencilState):
(WebCore::GPURenderCommandEncoder::setVertexBuffer):
(WebCore::GPURenderCommandEncoder::setFragmentBuffer):
(WebCore::GPURenderCommandEncoder::drawPrimitives):
(WebCore::GPURenderCommandEncoder::endEncoding):
* platform/graphics/gpu/GPURenderCommandEncoder.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
* platform/graphics/gpu/GPURenderPassAttachmentDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.cpp.
(WebCore::GPURenderPassAttachmentDescriptor::~GPURenderPassAttachmentDescriptor):
(WebCore::GPURenderPassAttachmentDescriptor::GPURenderPassAttachmentDescriptor):
(WebCore::GPURenderPassAttachmentDescriptor::loadAction):
(WebCore::GPURenderPassAttachmentDescriptor::setLoadAction):
(WebCore::GPURenderPassAttachmentDescriptor::storeAction):
(WebCore::GPURenderPassAttachmentDescriptor::setStoreAction):
(WebCore::GPURenderPassAttachmentDescriptor::setTexture):
* platform/graphics/gpu/GPURenderPassAttachmentDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
* platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUDevice.cpp.
(WebCore::GPURenderPassColorAttachmentDescriptor::create):
(WebCore::GPURenderPassColorAttachmentDescriptor::GPURenderPassColorAttachmentDescriptor):
(WebCore::GPURenderPassColorAttachmentDescriptor::~GPURenderPassColorAttachmentDescriptor):
(WebCore::GPURenderPassColorAttachmentDescriptor::clearColor):
(WebCore::GPURenderPassColorAttachmentDescriptor::setClearColor):
* platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
* platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.cpp.
(WebCore::GPURenderPassDepthAttachmentDescriptor::create):
(WebCore::GPURenderPassDepthAttachmentDescriptor::GPURenderPassDepthAttachmentDescriptor):
(WebCore::GPURenderPassDepthAttachmentDescriptor::~GPURenderPassDepthAttachmentDescriptor):
(WebCore::GPURenderPassDepthAttachmentDescriptor::clearDepth):
(WebCore::GPURenderPassDepthAttachmentDescriptor::setClearDepth):
* platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
* platform/graphics/gpu/GPURenderPassDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp.
(WebCore::GPURenderPassDescriptor::create):
(WebCore::GPURenderPassDescriptor::~GPURenderPassDescriptor):
(WebCore::GPURenderPassDescriptor::depthAttachment):
* platform/graphics/gpu/GPURenderPassDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
* platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.cpp.
(WebCore::GPURenderPipelineColorAttachmentDescriptor::~GPURenderPipelineColorAttachmentDescriptor):
(WebCore::GPURenderPipelineColorAttachmentDescriptor::GPURenderPipelineColorAttachmentDescriptor):
(WebCore::GPURenderPipelineColorAttachmentDescriptor::pixelFormat):
(WebCore::GPURenderPipelineColorAttachmentDescriptor::setPixelFormat):
* platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
* platform/graphics/gpu/GPURenderPipelineDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUDevice.cpp.
(WebCore::GPURenderPipelineDescriptor::create):
(WebCore::GPURenderPipelineDescriptor::~GPURenderPipelineDescriptor):
(WebCore::GPURenderPipelineDescriptor::depthAttachmentPixelFormat):
(WebCore::GPURenderPipelineDescriptor::setDepthAttachmentPixelFormat):
(WebCore::GPURenderPipelineDescriptor::setVertexFunction):
(WebCore::GPURenderPipelineDescriptor::setFragmentFunction):
(WebCore::GPURenderPipelineDescriptor::colorAttachments):
* platform/graphics/gpu/GPURenderPipelineDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPULibrary.h.
* platform/graphics/gpu/GPURenderPipelineState.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPULibrary.cpp.
(WebCore::GPURenderPipelineState::create):
(WebCore::GPURenderPipelineState::~GPURenderPipelineState):
(WebCore::GPURenderPipelineState::label):
(WebCore::GPURenderPipelineState::setLabel):
* platform/graphics/gpu/GPURenderPipelineState.h: Copied from Source/WebCore/platform/graphics/gpu/GPULibrary.h.
* platform/graphics/gpu/GPUTexture.cpp:
(WebCore::GPUTexture::createFromDrawable):
(WebCore::GPUTexture::createFromExistingTexture): Deleted.
* platform/graphics/gpu/GPUTexture.h:
* platform/graphics/gpu/GPUTextureDescriptor.cpp:
* platform/graphics/gpu/GPUTextureDescriptor.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGPUDrawablecpp">trunk/Source/WebCore/html/canvas/WebGPUDrawable.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGPUDrawableh">trunk/Source/WebCore/html/canvas/WebGPUDrawable.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPUBufferMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPUBufferMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPUFunctionMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPULibraryMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPULibraryMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPUTextureDescriptorMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPUTextureDescriptorMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPUTextureMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPUTextureMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUBuffercpp">trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUBufferh">trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUDevicecpp">trunk/Source/WebCore/platform/graphics/gpu/GPUDevice.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUDeviceh">trunk/Source/WebCore/platform/graphics/gpu/GPUDevice.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUFunctionh">trunk/Source/WebCore/platform/graphics/gpu/GPUFunction.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPULibrarycpp">trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPULibraryh">trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUTexturecpp">trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUTextureh">trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUTextureDescriptorcpp">trunk/Source/WebCore/platform/graphics/gpu/GPUTextureDescriptor.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUTextureDescriptorh">trunk/Source/WebCore/platform/graphics/gpu/GPUTextureDescriptor.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPUCommandBufferMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPUCommandBufferMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPUCommandQueueMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPUCommandQueueMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPUDepthStencilDescriptorMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPUDepthStencilDescriptorMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPUDepthStencilStateMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPUDepthStencilStateMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPUDrawableMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPUDrawableMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPURenderCommandEncoderMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPURenderCommandEncoderMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPURenderPassAttachmentDescriptorMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassAttachmentDescriptorMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPURenderPassColorAttachmentDescriptorMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassColorAttachmentDescriptorMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPURenderPassDepthAttachmentDescriptorMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassDepthAttachmentDescriptorMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPURenderPassDescriptorMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassDescriptorMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPURenderPipelineColorAttachmentDescriptorMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPipelineColorAttachmentDescriptorMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPURenderPipelineDescriptorMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPipelineDescriptorMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscocoaGPURenderPipelineStateMetalmm">trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPipelineStateMetal.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUCommandBuffercpp">trunk/Source/WebCore/platform/graphics/gpu/GPUCommandBuffer.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUCommandBufferh">trunk/Source/WebCore/platform/graphics/gpu/GPUCommandBuffer.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUCommandQueuecpp">trunk/Source/WebCore/platform/graphics/gpu/GPUCommandQueue.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUCommandQueueh">trunk/Source/WebCore/platform/graphics/gpu/GPUCommandQueue.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUDepthStencilDescriptorcpp">trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilDescriptor.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUDepthStencilDescriptorh">trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilDescriptor.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUDepthStencilStatecpp">trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilState.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUDepthStencilStateh">trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilState.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUDrawablecpp">trunk/Source/WebCore/platform/graphics/gpu/GPUDrawable.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUDrawableh">trunk/Source/WebCore/platform/graphics/gpu/GPUDrawable.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPUEnumsh">trunk/Source/WebCore/platform/graphics/gpu/GPUEnums.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderCommandEncodercpp">trunk/Source/WebCore/platform/graphics/gpu/GPURenderCommandEncoder.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderCommandEncoderh">trunk/Source/WebCore/platform/graphics/gpu/GPURenderCommandEncoder.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPassAttachmentDescriptorcpp">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassAttachmentDescriptor.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPassAttachmentDescriptorh">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassAttachmentDescriptor.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPassColorAttachmentDescriptorcpp">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPassColorAttachmentDescriptorh">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPassDepthAttachmentDescriptorcpp">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPassDepthAttachmentDescriptorh">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPassDescriptorcpp">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDescriptor.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPassDescriptorh">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDescriptor.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPipelineColorAttachmentDescriptorcpp">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPipelineColorAttachmentDescriptorh">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPipelineDescriptorcpp">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineDescriptor.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPipelineDescriptorh">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineDescriptor.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPipelineStatecpp">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineState.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicsgpuGPURenderPipelineStateh">trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineState.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/ChangeLog        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -1,3 +1,227 @@
</span><ins>+2017-03-12  Dean Jackson  &lt;dino@apple.com&gt;
+
+        WebGPU Backend
+        https://bugs.webkit.org/show_bug.cgi?id=169535
+        &lt;rdar://problem/31002364&gt;
+
+        Reviewed by Jon Lee.
+
+        Fill in the remainder of the WebGPU backend. This is effectively
+        a C++ representation of the Metal API.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * html/canvas/WebGPUDrawable.cpp:
+        (WebCore::WebGPUDrawable::WebGPUDrawable):
+        * html/canvas/WebGPUDrawable.h:
+        (WebCore::GPUDrawable::texture): Deleted.
+        * platform/graphics/cocoa/GPUBufferMetal.mm:
+        (WebCore::GPUBuffer::GPUBuffer):
+        (WebCore::GPUBuffer::platformBuffer):
+        * platform/graphics/cocoa/GPUCommandBufferMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm.
+        (WebCore::GPUCommandBuffer::GPUCommandBuffer):
+        (WebCore::GPUCommandBuffer::platformCommandBuffer):
+        (WebCore::GPUCommandBuffer::presentDrawable):
+        * platform/graphics/cocoa/GPUCommandQueueMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm.
+        (WebCore::GPUCommandQueue::GPUCommandQueue):
+        (WebCore::GPUCommandQueue::label):
+        (WebCore::GPUCommandQueue::setLabel):
+        (WebCore::GPUCommandQueue::platformCommandQueue):
+        * platform/graphics/cocoa/GPUDepthStencilDescriptorMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUTextureMetal.mm.
+        (WebCore::GPUDepthStencilDescriptor::GPUDepthStencilDescriptor):
+        (WebCore::GPUDepthStencilDescriptor::depthWriteEnabled):
+        (WebCore::GPUDepthStencilDescriptor::setDepthWriteEnabled):
+        (WebCore::GPUDepthStencilDescriptor::depthCompareFunction):
+        (WebCore::GPUDepthStencilDescriptor::setDepthCompareFunction):
+        (WebCore::GPUDepthStencilDescriptor::platformDepthStencilDescriptor):
+        * platform/graphics/cocoa/GPUDepthStencilStateMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm.
+        (WebCore::GPUDepthStencilState::GPUDepthStencilState):
+        (WebCore::GPUDepthStencilState::label):
+        (WebCore::GPUDepthStencilState::setLabel):
+        (WebCore::GPUDepthStencilState::platformDepthStencilState):
+        * platform/graphics/cocoa/GPUDrawableMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm.
+        (WebCore::GPUDrawable::GPUDrawable):
+        (WebCore::GPUDrawable::release):
+        (WebCore::GPUDrawable::platformDrawable):
+        (WebCore::GPUDrawable::platformTexture):
+        * platform/graphics/cocoa/GPUFunctionMetal.mm:
+        (WebCore::GPUFunction::GPUFunction):
+        (WebCore::GPUFunction::platformFunction):
+        * platform/graphics/cocoa/GPULibraryMetal.mm:
+        (WebCore::GPULibrary::GPULibrary):
+        (WebCore::GPULibrary::setLabel):
+        (WebCore::GPULibrary::platformLibrary):
+        * platform/graphics/cocoa/GPURenderCommandEncoderMetal.mm: Added.
+        (WebCore::GPURenderCommandEncoder::GPURenderCommandEncoder):
+        (WebCore::GPURenderCommandEncoder::setRenderPipelineState):
+        (WebCore::GPURenderCommandEncoder::setDepthStencilState):
+        (WebCore::GPURenderCommandEncoder::setVertexBuffer):
+        (WebCore::GPURenderCommandEncoder::setFragmentBuffer):
+        (WebCore::GPURenderCommandEncoder::drawPrimitives):
+        (WebCore::GPURenderCommandEncoder::endEncoding):
+        (WebCore::GPURenderCommandEncoder::platformRenderCommandEncoder):
+        * platform/graphics/cocoa/GPURenderPassAttachmentDescriptorMetal.mm: Added.
+        (WebCore::GPURenderPassAttachmentDescriptor::GPURenderPassAttachmentDescriptor):
+        (WebCore::GPURenderPassAttachmentDescriptor::loadAction):
+        (WebCore::GPURenderPassAttachmentDescriptor::setLoadAction):
+        (WebCore::GPURenderPassAttachmentDescriptor::storeAction):
+        (WebCore::GPURenderPassAttachmentDescriptor::setStoreAction):
+        (WebCore::GPURenderPassAttachmentDescriptor::setTexture):
+        (WebCore::GPURenderPassAttachmentDescriptor::platformRenderPassAttachmentDescriptor):
+        * platform/graphics/cocoa/GPURenderPassColorAttachmentDescriptorMetal.mm: Added.
+        (WebCore::GPURenderPassColorAttachmentDescriptor::create):
+        (WebCore::GPURenderPassColorAttachmentDescriptor::GPURenderPassColorAttachmentDescriptor):
+        (WebCore::GPURenderPassColorAttachmentDescriptor::clearColor):
+        (WebCore::GPURenderPassColorAttachmentDescriptor::setClearColor):
+        (WebCore::GPURenderPassColorAttachmentDescriptor::platformRenderPassColorAttachmentDescriptor):
+        * platform/graphics/cocoa/GPURenderPassDepthAttachmentDescriptorMetal.mm: Added.
+        (WebCore::GPURenderPassDepthAttachmentDescriptor::create):
+        (WebCore::GPURenderPassDepthAttachmentDescriptor::GPURenderPassDepthAttachmentDescriptor):
+        (WebCore::GPURenderPassDepthAttachmentDescriptor::clearDepth):
+        (WebCore::GPURenderPassDepthAttachmentDescriptor::setClearDepth):
+        (WebCore::GPURenderPassDepthAttachmentDescriptor::platformRenderPassDepthAttachmentDescriptor):
+        * platform/graphics/cocoa/GPURenderPassDescriptorMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUBufferMetal.mm.
+        (WebCore::GPURenderPassDescriptor::GPURenderPassDescriptor):
+        (WebCore::GPURenderPassDescriptor::colorAttachments):
+        (WebCore::GPURenderPassDescriptor::depthAttachment):
+        (WebCore::GPURenderPassDescriptor::platformRenderPassDescriptor):
+        * platform/graphics/cocoa/GPURenderPipelineColorAttachmentDescriptorMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPULibraryMetal.mm.
+        (WebCore::GPURenderPipelineColorAttachmentDescriptor::create):
+        (WebCore::GPURenderPipelineColorAttachmentDescriptor::GPURenderPipelineColorAttachmentDescriptor):
+        (WebCore::GPURenderPipelineColorAttachmentDescriptor::pixelFormat):
+        (WebCore::GPURenderPipelineColorAttachmentDescriptor::setPixelFormat):
+        (WebCore::GPURenderPipelineColorAttachmentDescriptor::platformRenderPipelineColorAttachmentDescriptor):
+        * platform/graphics/cocoa/GPURenderPipelineDescriptorMetal.mm: Added.
+        (WebCore::GPURenderPipelineDescriptor::GPURenderPipelineDescriptor):
+        (WebCore::GPURenderPipelineDescriptor::depthAttachmentPixelFormat):
+        (WebCore::GPURenderPipelineDescriptor::setDepthAttachmentPixelFormat):
+        (WebCore::GPURenderPipelineDescriptor::setVertexFunction):
+        (WebCore::GPURenderPipelineDescriptor::setFragmentFunction):
+        (WebCore::GPURenderPipelineDescriptor::colorAttachments):
+        (WebCore::GPURenderPipelineDescriptor::reset):
+        (WebCore::GPURenderPipelineDescriptor::platformRenderPipelineDescriptor):
+        * platform/graphics/cocoa/GPURenderPipelineStateMetal.mm: Copied from Source/WebCore/platform/graphics/cocoa/GPUTextureMetal.mm.
+        (WebCore::GPURenderPipelineState::GPURenderPipelineState):
+        (WebCore::GPURenderPipelineState::label):
+        (WebCore::GPURenderPipelineState::setLabel):
+        (WebCore::GPURenderPipelineState::platformRenderPipelineState):
+        * platform/graphics/cocoa/GPUTextureDescriptorMetal.mm:
+        (WebCore::GPUTextureDescriptor::GPUTextureDescriptor):
+        (WebCore::GPUTextureDescriptor::platformTextureDescriptor):
+        * platform/graphics/cocoa/GPUTextureMetal.mm:
+        (WebCore::GPUTexture::GPUTexture):
+        (WebCore::GPUTexture::platformTexture):
+        * platform/graphics/gpu/GPUBuffer.cpp:
+        * platform/graphics/gpu/GPUBuffer.h:
+        * platform/graphics/gpu/GPUCommandBuffer.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp.
+        (WebCore::GPUCommandBuffer::create):
+        (WebCore::GPUCommandBuffer::~GPUCommandBuffer):
+        (WebCore::GPUCommandBuffer::commit):
+        (WebCore::GPUCommandBuffer::createRenderCommandEncoder):
+        (WebCore::GPUCommandBuffer::presentDrawable):
+        * platform/graphics/gpu/GPUCommandBuffer.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
+        * platform/graphics/gpu/GPUCommandQueue.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp.
+        (WebCore::GPUCommandQueue::create):
+        (WebCore::GPUCommandQueue::~GPUCommandQueue):
+        (WebCore::GPUCommandQueue::createCommandBuffer):
+        (WebCore::GPUCommandQueue::label):
+        (WebCore::GPUCommandQueue::setLabel):
+        * platform/graphics/gpu/GPUCommandQueue.h: Copied from Source/WebCore/platform/graphics/gpu/GPULibrary.h.
+        * platform/graphics/gpu/GPUDepthStencilDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.cpp.
+        (WebCore::GPUDepthStencilDescriptor::create):
+        (WebCore::GPUDepthStencilDescriptor::~GPUDepthStencilDescriptor):
+        (WebCore::GPUDepthStencilDescriptor::depthWriteEnabled):
+        (WebCore::GPUDepthStencilDescriptor::setDepthWriteEnabled):
+        (WebCore::GPUDepthStencilDescriptor::depthCompareFunction):
+        (WebCore::GPUDepthStencilDescriptor::setDepthCompareFunction):
+        * platform/graphics/gpu/GPUDepthStencilDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
+        * platform/graphics/gpu/GPUDepthStencilState.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp.
+        (WebCore::GPUDepthStencilState::create):
+        (WebCore::GPUDepthStencilState::~GPUDepthStencilState):
+        (WebCore::GPUDepthStencilState::label):
+        (WebCore::GPUDepthStencilState::setLabel):
+        * platform/graphics/gpu/GPUDepthStencilState.h: Copied from Source/WebCore/platform/graphics/gpu/GPULibrary.h.
+        * platform/graphics/gpu/GPUDevice.cpp:
+        (WebCore::GPUDevice::createCommandQueue):
+        (WebCore::GPUDevice::getFramebuffer):
+        * platform/graphics/gpu/GPUDevice.h:
+        (WebCore::GPUDevice::markLayerComposited):
+        (WebCore::GPUDevice::createCommandQueue): Deleted.
+        (WebCore::GPUDevice::getFramebuffer): Deleted.
+        * platform/graphics/gpu/GPUDrawable.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp.
+        (WebCore::GPUDrawable::create):
+        (WebCore::GPUDrawable::~GPUDrawable):
+        (WebCore::GPUDrawable::release):
+        * platform/graphics/gpu/GPUDrawable.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
+        * platform/graphics/gpu/GPUEnums.h: Copied from Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm.
+        * platform/graphics/gpu/GPUFunction.h:
+        * platform/graphics/gpu/GPULibrary.cpp:
+        * platform/graphics/gpu/GPULibrary.h:
+        * platform/graphics/gpu/GPURenderCommandEncoder.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPULibrary.cpp.
+        (WebCore::GPURenderCommandEncoder::create):
+        (WebCore::GPURenderCommandEncoder::~GPURenderCommandEncoder):
+        (WebCore::GPURenderCommandEncoder::setRenderPipelineState):
+        (WebCore::GPURenderCommandEncoder::setDepthStencilState):
+        (WebCore::GPURenderCommandEncoder::setVertexBuffer):
+        (WebCore::GPURenderCommandEncoder::setFragmentBuffer):
+        (WebCore::GPURenderCommandEncoder::drawPrimitives):
+        (WebCore::GPURenderCommandEncoder::endEncoding):
+        * platform/graphics/gpu/GPURenderCommandEncoder.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
+        * platform/graphics/gpu/GPURenderPassAttachmentDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.cpp.
+        (WebCore::GPURenderPassAttachmentDescriptor::~GPURenderPassAttachmentDescriptor):
+        (WebCore::GPURenderPassAttachmentDescriptor::GPURenderPassAttachmentDescriptor):
+        (WebCore::GPURenderPassAttachmentDescriptor::loadAction):
+        (WebCore::GPURenderPassAttachmentDescriptor::setLoadAction):
+        (WebCore::GPURenderPassAttachmentDescriptor::storeAction):
+        (WebCore::GPURenderPassAttachmentDescriptor::setStoreAction):
+        (WebCore::GPURenderPassAttachmentDescriptor::setTexture):
+        * platform/graphics/gpu/GPURenderPassAttachmentDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
+        * platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUDevice.cpp.
+        (WebCore::GPURenderPassColorAttachmentDescriptor::create):
+        (WebCore::GPURenderPassColorAttachmentDescriptor::GPURenderPassColorAttachmentDescriptor):
+        (WebCore::GPURenderPassColorAttachmentDescriptor::~GPURenderPassColorAttachmentDescriptor):
+        (WebCore::GPURenderPassColorAttachmentDescriptor::clearColor):
+        (WebCore::GPURenderPassColorAttachmentDescriptor::setClearColor):
+        * platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
+        * platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.cpp.
+        (WebCore::GPURenderPassDepthAttachmentDescriptor::create):
+        (WebCore::GPURenderPassDepthAttachmentDescriptor::GPURenderPassDepthAttachmentDescriptor):
+        (WebCore::GPURenderPassDepthAttachmentDescriptor::~GPURenderPassDepthAttachmentDescriptor):
+        (WebCore::GPURenderPassDepthAttachmentDescriptor::clearDepth):
+        (WebCore::GPURenderPassDepthAttachmentDescriptor::setClearDepth):
+        * platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
+        * platform/graphics/gpu/GPURenderPassDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp.
+        (WebCore::GPURenderPassDescriptor::create):
+        (WebCore::GPURenderPassDescriptor::~GPURenderPassDescriptor):
+        (WebCore::GPURenderPassDescriptor::depthAttachment):
+        * platform/graphics/gpu/GPURenderPassDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
+        * platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.cpp.
+        (WebCore::GPURenderPipelineColorAttachmentDescriptor::~GPURenderPipelineColorAttachmentDescriptor):
+        (WebCore::GPURenderPipelineColorAttachmentDescriptor::GPURenderPipelineColorAttachmentDescriptor):
+        (WebCore::GPURenderPipelineColorAttachmentDescriptor::pixelFormat):
+        (WebCore::GPURenderPipelineColorAttachmentDescriptor::setPixelFormat):
+        * platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPUTexture.h.
+        * platform/graphics/gpu/GPURenderPipelineDescriptor.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPUDevice.cpp.
+        (WebCore::GPURenderPipelineDescriptor::create):
+        (WebCore::GPURenderPipelineDescriptor::~GPURenderPipelineDescriptor):
+        (WebCore::GPURenderPipelineDescriptor::depthAttachmentPixelFormat):
+        (WebCore::GPURenderPipelineDescriptor::setDepthAttachmentPixelFormat):
+        (WebCore::GPURenderPipelineDescriptor::setVertexFunction):
+        (WebCore::GPURenderPipelineDescriptor::setFragmentFunction):
+        (WebCore::GPURenderPipelineDescriptor::colorAttachments):
+        * platform/graphics/gpu/GPURenderPipelineDescriptor.h: Copied from Source/WebCore/platform/graphics/gpu/GPULibrary.h.
+        * platform/graphics/gpu/GPURenderPipelineState.cpp: Copied from Source/WebCore/platform/graphics/gpu/GPULibrary.cpp.
+        (WebCore::GPURenderPipelineState::create):
+        (WebCore::GPURenderPipelineState::~GPURenderPipelineState):
+        (WebCore::GPURenderPipelineState::label):
+        (WebCore::GPURenderPipelineState::setLabel):
+        * platform/graphics/gpu/GPURenderPipelineState.h: Copied from Source/WebCore/platform/graphics/gpu/GPULibrary.h.
+        * platform/graphics/gpu/GPUTexture.cpp:
+        (WebCore::GPUTexture::createFromDrawable):
+        (WebCore::GPUTexture::createFromExistingTexture): Deleted.
+        * platform/graphics/gpu/GPUTexture.h:
+        * platform/graphics/gpu/GPUTextureDescriptor.cpp:
+        * platform/graphics/gpu/GPUTextureDescriptor.h:
+
</ins><span class="cx"> 2017-03-12  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Simple line layout: Paginated content is not painted properly when font overflows line height.
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -1380,6 +1380,46 @@
</span><span class="cx">                 316BDBB41E7357B000DE0D5A /* GPUTextureDescriptorMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBB31E7357B000DE0D5A /* GPUTextureDescriptorMetal.mm */; };
</span><span class="cx">                 316BDBB71E7357CB00DE0D5A /* GPUTextureDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBB51E7357CB00DE0D5A /* GPUTextureDescriptor.cpp */; };
</span><span class="cx">                 316BDBB81E7357CB00DE0D5A /* GPUTextureDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBB61E7357CB00DE0D5A /* GPUTextureDescriptor.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                316BDBBB1E73880600DE0D5A /* GPUCommandQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBB91E73880600DE0D5A /* GPUCommandQueue.cpp */; };
+                316BDBBC1E73880600DE0D5A /* GPUCommandQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBBA1E73880600DE0D5A /* GPUCommandQueue.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                316BDBBE1E73881300DE0D5A /* GPUCommandQueueMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBBD1E73881300DE0D5A /* GPUCommandQueueMetal.mm */; };
+                316BDBC71E75F08200DE0D5A /* GPUCommandBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBC41E75EE2400DE0D5A /* GPUCommandBuffer.cpp */; };
+                316BDBC81E75F08D00DE0D5A /* GPUCommandBufferMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBC61E75EE3D00DE0D5A /* GPUCommandBufferMetal.mm */; };
+                316BDBCC1E75F17B00DE0D5A /* GPUDrawable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBCA1E75F17600DE0D5A /* GPUDrawable.cpp */; };
+                316BDBCD1E75F18400DE0D5A /* GPUDrawable.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBCB1E75F17600DE0D5A /* GPUDrawable.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                316BDBCE1E75F18A00DE0D5A /* GPUCommandBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBC51E75EE2400DE0D5A /* GPUCommandBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                316BDBCF1E75F19900DE0D5A /* GPUDrawableMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBC91E75F16200DE0D5A /* GPUDrawableMetal.mm */; };
+                316BDBD21E75F7B200DE0D5A /* GPURenderPassDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBD01E75F7AE00DE0D5A /* GPURenderPassDescriptor.cpp */; };
+                316BDBD31E75F7B600DE0D5A /* GPURenderPassDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBD11E75F7AE00DE0D5A /* GPURenderPassDescriptor.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                316BDBD51E75F7CF00DE0D5A /* GPURenderPassDescriptorMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBD41E75F7CA00DE0D5A /* GPURenderPassDescriptorMetal.mm */; };
+                316BDBD71E7612C800DE0D5A /* GPURenderPassColorAttachmentDescriptorMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBD61E7612C400DE0D5A /* GPURenderPassColorAttachmentDescriptorMetal.mm */; };
+                316BDBDA1E7612E000DE0D5A /* GPURenderPassColorAttachmentDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBD81E7612DB00DE0D5A /* GPURenderPassColorAttachmentDescriptor.cpp */; };
+                316BDBDB1E7612E200DE0D5A /* GPURenderPassColorAttachmentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBD91E7612DB00DE0D5A /* GPURenderPassColorAttachmentDescriptor.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                316BDBDE1E76137200DE0D5A /* GPURenderPassAttachmentDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBDC1E76136C00DE0D5A /* GPURenderPassAttachmentDescriptor.cpp */; };
+                316BDBDF1E76137500DE0D5A /* GPURenderPassAttachmentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBDD1E76136C00DE0D5A /* GPURenderPassAttachmentDescriptor.h */; };
+                316BDBE11E761CB900DE0D5A /* GPURenderPassAttachmentDescriptorMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBE01E761CB500DE0D5A /* GPURenderPassAttachmentDescriptorMetal.mm */; };
+                316BDBE41E761F0500DE0D5A /* GPURenderPassDepthAttachmentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBE31E761EFF00DE0D5A /* GPURenderPassDepthAttachmentDescriptor.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                316BDBE51E761F0A00DE0D5A /* GPURenderPassDepthAttachmentDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBE21E761EFF00DE0D5A /* GPURenderPassDepthAttachmentDescriptor.cpp */; };
+                316BDBE71E761F2E00DE0D5A /* GPURenderPassDepthAttachmentDescriptorMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBE61E761F2700DE0D5A /* GPURenderPassDepthAttachmentDescriptorMetal.mm */; };
+                316BDBEA1E76244900DE0D5A /* GPURenderCommandEncoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBE81E76244300DE0D5A /* GPURenderCommandEncoder.cpp */; };
+                316BDBEB1E76244D00DE0D5A /* GPURenderCommandEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBE91E76244400DE0D5A /* GPURenderCommandEncoder.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                316BDBED1E76248200DE0D5A /* GPURenderCommandEncoderMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBEC1E76246B00DE0D5A /* GPURenderCommandEncoderMetal.mm */; };
+                316BDBF01E76292000DE0D5A /* GPUDepthStencilState.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBEF1E76291B00DE0D5A /* GPUDepthStencilState.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                316BDBF11E76292500DE0D5A /* GPUDepthStencilState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBEE1E76291B00DE0D5A /* GPUDepthStencilState.cpp */; };
+                316BDBF31E76293C00DE0D5A /* GPUDepthStencilStateMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBF21E76293700DE0D5A /* GPUDepthStencilStateMetal.mm */; };
+                316BDBF61E762AD100DE0D5A /* GPUDepthStencilDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBF41E762ACD00DE0D5A /* GPUDepthStencilDescriptor.cpp */; };
+                316BDBF71E762AD500DE0D5A /* GPUDepthStencilDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBF51E762ACD00DE0D5A /* GPUDepthStencilDescriptor.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                316BDBF91E762BF400DE0D5A /* GPUDepthStencilDescriptorMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBF81E762BEF00DE0D5A /* GPUDepthStencilDescriptorMetal.mm */; };
+                316BDBFB1E762D0400DE0D5A /* GPUEnums.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBFA1E762D0400DE0D5A /* GPUEnums.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                316BDC001E762F5D00DE0D5A /* GPURenderPipelineDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBFC1E762F5700DE0D5A /* GPURenderPipelineDescriptor.cpp */; };
+                316BDC011E762F6100DE0D5A /* GPURenderPipelineState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDBFE1E762F5700DE0D5A /* GPURenderPipelineState.cpp */; };
+                316BDC021E762F6400DE0D5A /* GPURenderPipelineDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBFD1E762F5700DE0D5A /* GPURenderPipelineDescriptor.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                316BDC031E762F6900DE0D5A /* GPURenderPipelineState.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDBFF1E762F5700DE0D5A /* GPURenderPipelineState.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                316BDC061E762F8300DE0D5A /* GPURenderPipelineDescriptorMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDC041E762F7E00DE0D5A /* GPURenderPipelineDescriptorMetal.mm */; };
+                316BDC071E762F8600DE0D5A /* GPURenderPipelineStateMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDC051E762F7E00DE0D5A /* GPURenderPipelineStateMetal.mm */; };
+                316BDC0B1E76344E00DE0D5A /* GPURenderPipelineColorAttachmentDescriptorMetal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 316BDC0A1E76343600DE0D5A /* GPURenderPipelineColorAttachmentDescriptorMetal.mm */; };
+                316BDC0C1E7634CF00DE0D5A /* GPURenderPipelineColorAttachmentDescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316BDC081E76342700DE0D5A /* GPURenderPipelineColorAttachmentDescriptor.cpp */; };
+                316BDC0D1E7634D200DE0D5A /* GPURenderPipelineColorAttachmentDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 316BDC091E76342700DE0D5A /* GPURenderPipelineColorAttachmentDescriptor.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 316FE0710E6CCBEE00BF6088 /* JSCSSKeyframeRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316FE06D0E6CCBEE00BF6088 /* JSCSSKeyframeRule.cpp */; };
</span><span class="cx">                 316FE0720E6CCBEE00BF6088 /* JSCSSKeyframeRule.h in Headers */ = {isa = PBXBuildFile; fileRef = 316FE06E0E6CCBEE00BF6088 /* JSCSSKeyframeRule.h */; };
</span><span class="cx">                 316FE0730E6CCBEE00BF6088 /* JSCSSKeyframesRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 316FE06F0E6CCBEE00BF6088 /* JSCSSKeyframesRule.cpp */; };
</span><span class="lines">@@ -8814,6 +8854,46 @@
</span><span class="cx">                 316BDBB31E7357B000DE0D5A /* GPUTextureDescriptorMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPUTextureDescriptorMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 316BDBB51E7357CB00DE0D5A /* GPUTextureDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPUTextureDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 316BDBB61E7357CB00DE0D5A /* GPUTextureDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUTextureDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                316BDBB91E73880600DE0D5A /* GPUCommandQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPUCommandQueue.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBBA1E73880600DE0D5A /* GPUCommandQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUCommandQueue.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBBD1E73881300DE0D5A /* GPUCommandQueueMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPUCommandQueueMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBC41E75EE2400DE0D5A /* GPUCommandBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPUCommandBuffer.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBC51E75EE2400DE0D5A /* GPUCommandBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUCommandBuffer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBC61E75EE3D00DE0D5A /* GPUCommandBufferMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPUCommandBufferMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBC91E75F16200DE0D5A /* GPUDrawableMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPUDrawableMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBCA1E75F17600DE0D5A /* GPUDrawable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPUDrawable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBCB1E75F17600DE0D5A /* GPUDrawable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUDrawable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBD01E75F7AE00DE0D5A /* GPURenderPassDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPURenderPassDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBD11E75F7AE00DE0D5A /* GPURenderPassDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPURenderPassDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBD41E75F7CA00DE0D5A /* GPURenderPassDescriptorMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPURenderPassDescriptorMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBD61E7612C400DE0D5A /* GPURenderPassColorAttachmentDescriptorMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPURenderPassColorAttachmentDescriptorMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBD81E7612DB00DE0D5A /* GPURenderPassColorAttachmentDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPURenderPassColorAttachmentDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBD91E7612DB00DE0D5A /* GPURenderPassColorAttachmentDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPURenderPassColorAttachmentDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBDC1E76136C00DE0D5A /* GPURenderPassAttachmentDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPURenderPassAttachmentDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBDD1E76136C00DE0D5A /* GPURenderPassAttachmentDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPURenderPassAttachmentDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBE01E761CB500DE0D5A /* GPURenderPassAttachmentDescriptorMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPURenderPassAttachmentDescriptorMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBE21E761EFF00DE0D5A /* GPURenderPassDepthAttachmentDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPURenderPassDepthAttachmentDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBE31E761EFF00DE0D5A /* GPURenderPassDepthAttachmentDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPURenderPassDepthAttachmentDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBE61E761F2700DE0D5A /* GPURenderPassDepthAttachmentDescriptorMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPURenderPassDepthAttachmentDescriptorMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBE81E76244300DE0D5A /* GPURenderCommandEncoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPURenderCommandEncoder.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBE91E76244400DE0D5A /* GPURenderCommandEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPURenderCommandEncoder.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBEC1E76246B00DE0D5A /* GPURenderCommandEncoderMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPURenderCommandEncoderMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBEE1E76291B00DE0D5A /* GPUDepthStencilState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPUDepthStencilState.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBEF1E76291B00DE0D5A /* GPUDepthStencilState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUDepthStencilState.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBF21E76293700DE0D5A /* GPUDepthStencilStateMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPUDepthStencilStateMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBF41E762ACD00DE0D5A /* GPUDepthStencilDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPUDepthStencilDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBF51E762ACD00DE0D5A /* GPUDepthStencilDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUDepthStencilDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBF81E762BEF00DE0D5A /* GPUDepthStencilDescriptorMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPUDepthStencilDescriptorMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBFA1E762D0400DE0D5A /* GPUEnums.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPUEnums.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBFC1E762F5700DE0D5A /* GPURenderPipelineDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPURenderPipelineDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBFD1E762F5700DE0D5A /* GPURenderPipelineDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPURenderPipelineDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBFE1E762F5700DE0D5A /* GPURenderPipelineState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPURenderPipelineState.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDBFF1E762F5700DE0D5A /* GPURenderPipelineState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPURenderPipelineState.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDC041E762F7E00DE0D5A /* GPURenderPipelineDescriptorMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPURenderPipelineDescriptorMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDC051E762F7E00DE0D5A /* GPURenderPipelineStateMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPURenderPipelineStateMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDC081E76342700DE0D5A /* GPURenderPipelineColorAttachmentDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GPURenderPipelineColorAttachmentDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDC091E76342700DE0D5A /* GPURenderPipelineColorAttachmentDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPURenderPipelineColorAttachmentDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                316BDC0A1E76343600DE0D5A /* GPURenderPipelineColorAttachmentDescriptorMetal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GPURenderPipelineColorAttachmentDescriptorMetal.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 316FE06D0E6CCBEE00BF6088 /* JSCSSKeyframeRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSKeyframeRule.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 316FE06E0E6CCBEE00BF6088 /* JSCSSKeyframeRule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCSSKeyframeRule.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 316FE06F0E6CCBEE00BF6088 /* JSCSSKeyframesRule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCSSKeyframesRule.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -8904,44 +8984,44 @@
</span><span class="cx">                 31A089011E737B4D003B6609 /* WebGPUTextureDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebGPUTextureDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 31A089021E737B4D003B6609 /* WebGPUTextureDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebGPUTextureDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 31A089031E737B4D003B6609 /* WebGPUTextureDescriptor.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebGPUTextureDescriptor.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                31A0891B1E738D59003B6609 /* JSWebGPUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPUBuffer.cpp; path = JSWebGPUBuffer.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0891D1E738D59003B6609 /* JSWebGPUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPUBuffer.h; path = JSWebGPUBuffer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0891E1E738D59003B6609 /* JSWebGPUCommandBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPUCommandBuffer.cpp; path = JSWebGPUCommandBuffer.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089201E738D59003B6609 /* JSWebGPUCommandBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPUCommandBuffer.h; path = JSWebGPUCommandBuffer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089211E738D59003B6609 /* JSWebGPUCommandQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPUCommandQueue.cpp; path = JSWebGPUCommandQueue.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089231E738D59003B6609 /* JSWebGPUCommandQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPUCommandQueue.h; path = JSWebGPUCommandQueue.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089241E738D59003B6609 /* JSWebGPUDepthStencilDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPUDepthStencilDescriptor.cpp; path = JSWebGPUDepthStencilDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089261E738D59003B6609 /* JSWebGPUDepthStencilDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPUDepthStencilDescriptor.h; path = JSWebGPUDepthStencilDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089271E738D59003B6609 /* JSWebGPUDepthStencilState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPUDepthStencilState.cpp; path = JSWebGPUDepthStencilState.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089291E738D59003B6609 /* JSWebGPUDepthStencilState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPUDepthStencilState.h; path = JSWebGPUDepthStencilState.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0892A1E738D59003B6609 /* JSWebGPUDrawable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPUDrawable.cpp; path = JSWebGPUDrawable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0892C1E738D59003B6609 /* JSWebGPUDrawable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPUDrawable.h; path = JSWebGPUDrawable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0892D1E738D59003B6609 /* JSWebGPUFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPUFunction.cpp; path = JSWebGPUFunction.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0892F1E738D59003B6609 /* JSWebGPUFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPUFunction.h; path = JSWebGPUFunction.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089301E738D59003B6609 /* JSWebGPULibrary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPULibrary.cpp; path = JSWebGPULibrary.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089321E738D59003B6609 /* JSWebGPULibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPULibrary.h; path = JSWebGPULibrary.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089331E738D59003B6609 /* JSWebGPURenderCommandEncoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPURenderCommandEncoder.cpp; path = JSWebGPURenderCommandEncoder.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089351E738D59003B6609 /* JSWebGPURenderCommandEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPURenderCommandEncoder.h; path = JSWebGPURenderCommandEncoder.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089361E738D59003B6609 /* JSWebGPURenderingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPURenderingContext.cpp; path = JSWebGPURenderingContext.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089381E738D59003B6609 /* JSWebGPURenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPURenderingContext.h; path = JSWebGPURenderingContext.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089391E738D59003B6609 /* JSWebGPURenderPassAttachmentDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPURenderPassAttachmentDescriptor.cpp; path = JSWebGPURenderPassAttachmentDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0893B1E738D59003B6609 /* JSWebGPURenderPassAttachmentDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPURenderPassAttachmentDescriptor.h; path = JSWebGPURenderPassAttachmentDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0893C1E738D59003B6609 /* JSWebGPURenderPassColorAttachmentDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPURenderPassColorAttachmentDescriptor.cpp; path = JSWebGPURenderPassColorAttachmentDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0893E1E738D59003B6609 /* JSWebGPURenderPassColorAttachmentDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPURenderPassColorAttachmentDescriptor.h; path = JSWebGPURenderPassColorAttachmentDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0893F1E738D59003B6609 /* JSWebGPURenderPassDepthAttachmentDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPURenderPassDepthAttachmentDescriptor.cpp; path = JSWebGPURenderPassDepthAttachmentDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089411E738D59003B6609 /* JSWebGPURenderPassDepthAttachmentDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPURenderPassDepthAttachmentDescriptor.h; path = JSWebGPURenderPassDepthAttachmentDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089421E738D59003B6609 /* JSWebGPURenderPassDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPURenderPassDescriptor.cpp; path = JSWebGPURenderPassDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089441E738D59003B6609 /* JSWebGPURenderPassDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPURenderPassDescriptor.h; path = JSWebGPURenderPassDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089451E738D59003B6609 /* JSWebGPURenderPipelineColorAttachmentDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPURenderPipelineColorAttachmentDescriptor.cpp; path = JSWebGPURenderPipelineColorAttachmentDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089471E738D59003B6609 /* JSWebGPURenderPipelineColorAttachmentDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPURenderPipelineColorAttachmentDescriptor.h; path = JSWebGPURenderPipelineColorAttachmentDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089481E738D59003B6609 /* JSWebGPURenderPipelineDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPURenderPipelineDescriptor.cpp; path = JSWebGPURenderPipelineDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0894A1E738D59003B6609 /* JSWebGPURenderPipelineDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPURenderPipelineDescriptor.h; path = JSWebGPURenderPipelineDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0894B1E738D59003B6609 /* JSWebGPURenderPipelineState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPURenderPipelineState.cpp; path = JSWebGPURenderPipelineState.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0894D1E738D59003B6609 /* JSWebGPURenderPipelineState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPURenderPipelineState.h; path = JSWebGPURenderPipelineState.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A0894E1E738D59003B6609 /* JSWebGPUTexture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPUTexture.cpp; path = JSWebGPUTexture.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089501E738D59003B6609 /* JSWebGPUTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPUTexture.h; path = JSWebGPUTexture.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089511E738D59003B6609 /* JSWebGPUTextureDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSWebGPUTextureDescriptor.cpp; path = JSWebGPUTextureDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                31A089531E738D59003B6609 /* JSWebGPUTextureDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSWebGPUTextureDescriptor.h; path = JSWebGPUTextureDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                31A0891B1E738D59003B6609 /* JSWebGPUBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPUBuffer.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0891D1E738D59003B6609 /* JSWebGPUBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPUBuffer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0891E1E738D59003B6609 /* JSWebGPUCommandBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPUCommandBuffer.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089201E738D59003B6609 /* JSWebGPUCommandBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPUCommandBuffer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089211E738D59003B6609 /* JSWebGPUCommandQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPUCommandQueue.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089231E738D59003B6609 /* JSWebGPUCommandQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPUCommandQueue.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089241E738D59003B6609 /* JSWebGPUDepthStencilDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPUDepthStencilDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089261E738D59003B6609 /* JSWebGPUDepthStencilDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPUDepthStencilDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089271E738D59003B6609 /* JSWebGPUDepthStencilState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPUDepthStencilState.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089291E738D59003B6609 /* JSWebGPUDepthStencilState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPUDepthStencilState.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0892A1E738D59003B6609 /* JSWebGPUDrawable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPUDrawable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0892C1E738D59003B6609 /* JSWebGPUDrawable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPUDrawable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0892D1E738D59003B6609 /* JSWebGPUFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPUFunction.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0892F1E738D59003B6609 /* JSWebGPUFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPUFunction.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089301E738D59003B6609 /* JSWebGPULibrary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPULibrary.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089321E738D59003B6609 /* JSWebGPULibrary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPULibrary.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089331E738D59003B6609 /* JSWebGPURenderCommandEncoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPURenderCommandEncoder.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089351E738D59003B6609 /* JSWebGPURenderCommandEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPURenderCommandEncoder.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089361E738D59003B6609 /* JSWebGPURenderingContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPURenderingContext.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089381E738D59003B6609 /* JSWebGPURenderingContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPURenderingContext.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089391E738D59003B6609 /* JSWebGPURenderPassAttachmentDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPURenderPassAttachmentDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0893B1E738D59003B6609 /* JSWebGPURenderPassAttachmentDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPURenderPassAttachmentDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0893C1E738D59003B6609 /* JSWebGPURenderPassColorAttachmentDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPURenderPassColorAttachmentDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0893E1E738D59003B6609 /* JSWebGPURenderPassColorAttachmentDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPURenderPassColorAttachmentDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0893F1E738D59003B6609 /* JSWebGPURenderPassDepthAttachmentDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPURenderPassDepthAttachmentDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089411E738D59003B6609 /* JSWebGPURenderPassDepthAttachmentDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPURenderPassDepthAttachmentDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089421E738D59003B6609 /* JSWebGPURenderPassDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPURenderPassDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089441E738D59003B6609 /* JSWebGPURenderPassDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPURenderPassDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089451E738D59003B6609 /* JSWebGPURenderPipelineColorAttachmentDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPURenderPipelineColorAttachmentDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089471E738D59003B6609 /* JSWebGPURenderPipelineColorAttachmentDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPURenderPipelineColorAttachmentDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089481E738D59003B6609 /* JSWebGPURenderPipelineDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPURenderPipelineDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0894A1E738D59003B6609 /* JSWebGPURenderPipelineDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPURenderPipelineDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0894B1E738D59003B6609 /* JSWebGPURenderPipelineState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPURenderPipelineState.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0894D1E738D59003B6609 /* JSWebGPURenderPipelineState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPURenderPipelineState.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A0894E1E738D59003B6609 /* JSWebGPUTexture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPUTexture.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089501E738D59003B6609 /* JSWebGPUTexture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPUTexture.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089511E738D59003B6609 /* JSWebGPUTextureDescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebGPUTextureDescriptor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                31A089531E738D59003B6609 /* JSWebGPUTextureDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebGPUTextureDescriptor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 31A795C11888B72400382F90 /* ANGLEInstancedArrays.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ANGLEInstancedArrays.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 31A795C21888B72400382F90 /* ANGLEInstancedArrays.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANGLEInstancedArrays.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 31A795C31888B72400382F90 /* ANGLEInstancedArrays.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ANGLEInstancedArrays.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -17798,16 +17878,43 @@
</span><span class="cx">                         children = (
</span><span class="cx">                                 316BDBA71E71FA9300DE0D5A /* GPUBuffer.cpp */,
</span><span class="cx">                                 316BDBA81E71FA9300DE0D5A /* GPUBuffer.h */,
</span><ins>+                                316BDBC41E75EE2400DE0D5A /* GPUCommandBuffer.cpp */,
+                                316BDBC51E75EE2400DE0D5A /* GPUCommandBuffer.h */,
+                                316BDBB91E73880600DE0D5A /* GPUCommandQueue.cpp */,
+                                316BDBBA1E73880600DE0D5A /* GPUCommandQueue.h */,
+                                316BDBF41E762ACD00DE0D5A /* GPUDepthStencilDescriptor.cpp */,
+                                316BDBF51E762ACD00DE0D5A /* GPUDepthStencilDescriptor.h */,
+                                316BDBEE1E76291B00DE0D5A /* GPUDepthStencilState.cpp */,
+                                316BDBEF1E76291B00DE0D5A /* GPUDepthStencilState.h */,
</ins><span class="cx">                                 316BDB841E6E0A2100DE0D5A /* GPUDevice.cpp */,
</span><span class="cx">                                 316BDB851E6E0A2100DE0D5A /* GPUDevice.h */,
</span><ins>+                                316BDBCA1E75F17600DE0D5A /* GPUDrawable.cpp */,
+                                316BDBCB1E75F17600DE0D5A /* GPUDrawable.h */,
+                                316BDBFA1E762D0400DE0D5A /* GPUEnums.h */,
</ins><span class="cx">                                 316BDB921E70C89700DE0D5A /* GPUFunction.cpp */,
</span><span class="cx">                                 316BDB931E70C89700DE0D5A /* GPUFunction.h */,
</span><span class="cx">                                 316BDB981E70CBBF00DE0D5A /* GPULibrary.cpp */,
</span><span class="cx">                                 316BDB991E70CBBF00DE0D5A /* GPULibrary.h */,
</span><ins>+                                316BDBE81E76244300DE0D5A /* GPURenderCommandEncoder.cpp */,
+                                316BDBE91E76244400DE0D5A /* GPURenderCommandEncoder.h */,
+                                316BDBDC1E76136C00DE0D5A /* GPURenderPassAttachmentDescriptor.cpp */,
+                                316BDBDD1E76136C00DE0D5A /* GPURenderPassAttachmentDescriptor.h */,
+                                316BDBD81E7612DB00DE0D5A /* GPURenderPassColorAttachmentDescriptor.cpp */,
+                                316BDBD91E7612DB00DE0D5A /* GPURenderPassColorAttachmentDescriptor.h */,
+                                316BDBE21E761EFF00DE0D5A /* GPURenderPassDepthAttachmentDescriptor.cpp */,
+                                316BDBE31E761EFF00DE0D5A /* GPURenderPassDepthAttachmentDescriptor.h */,
+                                316BDBD01E75F7AE00DE0D5A /* GPURenderPassDescriptor.cpp */,
+                                316BDBD11E75F7AE00DE0D5A /* GPURenderPassDescriptor.h */,
+                                316BDC081E76342700DE0D5A /* GPURenderPipelineColorAttachmentDescriptor.cpp */,
+                                316BDC091E76342700DE0D5A /* GPURenderPipelineColorAttachmentDescriptor.h */,
+                                316BDBFC1E762F5700DE0D5A /* GPURenderPipelineDescriptor.cpp */,
+                                316BDBFD1E762F5700DE0D5A /* GPURenderPipelineDescriptor.h */,
+                                316BDBFE1E762F5700DE0D5A /* GPURenderPipelineState.cpp */,
+                                316BDBFF1E762F5700DE0D5A /* GPURenderPipelineState.h */,
+                                316BDBAF1E7354BB00DE0D5A /* GPUTexture.cpp */,
+                                316BDBB01E7354BB00DE0D5A /* GPUTexture.h */,
</ins><span class="cx">                                 316BDBB51E7357CB00DE0D5A /* GPUTextureDescriptor.cpp */,
</span><span class="cx">                                 316BDBB61E7357CB00DE0D5A /* GPUTextureDescriptor.h */,
</span><del>-                                316BDBAF1E7354BB00DE0D5A /* GPUTexture.cpp */,
-                                316BDBB01E7354BB00DE0D5A /* GPUTexture.h */,
</del><span class="cx">                                 498770D71242C535002226BA /* Texture.cpp */,
</span><span class="cx">                                 498770D81242C535002226BA /* Texture.h */,
</span><span class="cx">                                 498770D91242C535002226BA /* TilingData.cpp */,
</span><span class="lines">@@ -22940,9 +23047,22 @@
</span><span class="cx">                                 7C4EDD731A7B607800198C4D /* FontCocoa.mm */,
</span><span class="cx">                                 B5320D6A122A24E9002D1440 /* FontPlatformDataCocoa.mm */,
</span><span class="cx">                                 316BDBA51E71FA6F00DE0D5A /* GPUBufferMetal.mm */,
</span><ins>+                                316BDBC61E75EE3D00DE0D5A /* GPUCommandBufferMetal.mm */,
+                                316BDBBD1E73881300DE0D5A /* GPUCommandQueueMetal.mm */,
</ins><span class="cx">                                 316BDB881E6E141C00DE0D5A /* GPUDeviceMetal.mm */,
</span><ins>+                                316BDBF81E762BEF00DE0D5A /* GPUDepthStencilDescriptorMetal.mm */,
+                                316BDBF21E76293700DE0D5A /* GPUDepthStencilStateMetal.mm */,
+                                316BDBC91E75F16200DE0D5A /* GPUDrawableMetal.mm */,
</ins><span class="cx">                                 316BDB961E70CA2400DE0D5A /* GPUFunctionMetal.mm */,
</span><span class="cx">                                 316BDB9C1E70CD9000DE0D5A /* GPULibraryMetal.mm */,
</span><ins>+                                316BDBEC1E76246B00DE0D5A /* GPURenderCommandEncoderMetal.mm */,
+                                316BDBE01E761CB500DE0D5A /* GPURenderPassAttachmentDescriptorMetal.mm */,
+                                316BDBD61E7612C400DE0D5A /* GPURenderPassColorAttachmentDescriptorMetal.mm */,
+                                316BDBE61E761F2700DE0D5A /* GPURenderPassDepthAttachmentDescriptorMetal.mm */,
+                                316BDBD41E75F7CA00DE0D5A /* GPURenderPassDescriptorMetal.mm */,
+                                316BDC0A1E76343600DE0D5A /* GPURenderPipelineColorAttachmentDescriptorMetal.mm */,
+                                316BDC041E762F7E00DE0D5A /* GPURenderPipelineDescriptorMetal.mm */,
+                                316BDC051E762F7E00DE0D5A /* GPURenderPipelineStateMetal.mm */,
</ins><span class="cx">                                 316BDBB31E7357B000DE0D5A /* GPUTextureDescriptorMetal.mm */,
</span><span class="cx">                                 316BDBAD1E73549C00DE0D5A /* GPUTextureMetal.mm */,
</span><span class="cx">                                 2D0B4AA918DA1CCD00434DE1 /* IOSurface.h */,
</span><span class="lines">@@ -22954,8 +23074,8 @@
</span><span class="cx">                                 2D3EF4451917915C00034184 /* WebActionDisablingCALayerDelegate.mm */,
</span><span class="cx">                                 2D3EF4461917915C00034184 /* WebCoreCALayerExtras.h */,
</span><span class="cx">                                 2D3EF4471917915C00034184 /* WebCoreCALayerExtras.mm */,
</span><ins>+                                316BDB8A1E6E153000DE0D5A /* WebGPULayer.h */,
</ins><span class="cx">                                 316BDB891E6E153000DE0D5A /* WebGPULayer.mm */,
</span><del>-                                316BDB8A1E6E153000DE0D5A /* WebGPULayer.h */,
</del><span class="cx">                         );
</span><span class="cx">                         path = cocoa;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -26143,6 +26263,7 @@
</span><span class="cx">                                 079D086B162F21F900DB8658 /* CaptionUserPreferencesMediaAF.h in Headers */,
</span><span class="cx">                                 07B7116D1D899E63009F0FFB /* CaptureDevice.h in Headers */,
</span><span class="cx">                                 07B7116F1D899E63009F0FFB /* CaptureDeviceManager.h in Headers */,
</span><ins>+                                316BDBE41E761F0500DE0D5A /* GPURenderPassDepthAttachmentDescriptor.h in Headers */,
</ins><span class="cx">                                 99CC0B4F18BE9849006CEBCC /* CapturingInputCursor.h in Headers */,
</span><span class="cx">                                 CDC734151977896D0046BFC5 /* CARingBuffer.h in Headers */,
</span><span class="cx">                                 6550B69E099DF0270090D781 /* CDATASection.h in Headers */,
</span><span class="lines">@@ -26240,6 +26361,7 @@
</span><span class="cx">                                 5106D7BE18BDB76F000AB166 /* ContextMenuContext.h in Headers */,
</span><span class="cx">                                 065AD4F70B0C2EDA005A2B1D /* ContextMenuController.h in Headers */,
</span><span class="cx">                                 06027CAD0B1CBFC000884B2D /* ContextMenuItem.h in Headers */,
</span><ins>+                                316BDBCD1E75F18400DE0D5A /* GPUDrawable.h in Headers */,
</ins><span class="cx">                                 7ADE722610CBBB9B006B3B3A /* ContextMenuProvider.h in Headers */,
</span><span class="cx">                                 759CB837192DA9190012BC64 /* ControlStates.h in Headers */,
</span><span class="cx">                                 FD31602912B0267600C1A359 /* ConvolverNode.h in Headers */,
</span><span class="lines">@@ -26335,6 +26457,7 @@
</span><span class="cx">                                 94476BDB1DFCAC0300690E23 /* CSSDeferredParser.h in Headers */,
</span><span class="cx">                                 FBB0C5B817BBD629003D3677 /* CSSFilterImageValue.h in Headers */,
</span><span class="cx">                                 BC64B4D60CB4298A005F2B62 /* CSSFontFace.h in Headers */,
</span><ins>+                                316BDBD31E75F7B600DE0D5A /* GPURenderPassDescriptor.h in Headers */,
</ins><span class="cx">                                 409EBDB116B7EE7100CBA3FC /* CSSFontFaceLoadEvent.h in Headers */,
</span><span class="cx">                                 A80E6CFD0A1989CA007FB8C5 /* CSSFontFaceRule.h in Headers */,
</span><span class="cx">                                 C26017A41C72DC9900F74A16 /* CSSFontFaceSet.h in Headers */,
</span><span class="lines">@@ -26362,6 +26485,7 @@
</span><span class="cx">                                 31288E750E3005D6003619AE /* CSSKeyframesRule.h in Headers */,
</span><span class="cx">                                 BC772E131331620C001EC9CE /* CSSLineBoxContainValue.h in Headers */,
</span><span class="cx">                                 946D374A1D6D06280077084F /* CSSMarkup.h in Headers */,
</span><ins>+                                316BDBF01E76292000DE0D5A /* GPUDepthStencilState.h in Headers */,
</ins><span class="cx">                                 A80E6D030A1989CA007FB8C5 /* CSSMediaRule.h in Headers */,
</span><span class="cx">                                 314BE3A11B30F6B700141982 /* CSSNamedImageValue.h in Headers */,
</span><span class="cx">                                 94E839511DFB2A0E007BC6A7 /* CSSNamespaceRule.h in Headers */,
</span><span class="lines">@@ -26381,6 +26505,7 @@
</span><span class="cx">                                 A80E6CE60A1989CA007FB8C5 /* CSSPrimitiveValue.h in Headers */,
</span><span class="cx">                                 E1ED8AC30CC49BE000BFC557 /* CSSPrimitiveValueMappings.h in Headers */,
</span><span class="cx">                                 A80E6CFF0A1989CA007FB8C5 /* CSSProperty.h in Headers */,
</span><ins>+                                316BDBDF1E76137500DE0D5A /* GPURenderPassAttachmentDescriptor.h in Headers */,
</ins><span class="cx">                                 78D02BC6154A18DF00B62D05 /* CSSPropertyAnimation.h in Headers */,
</span><span class="cx">                                 656580F409D12B20000E61D7 /* CSSPropertyNames.h in Headers */,
</span><span class="cx">                                 946D37461D6D01D40077084F /* CSSPropertyParser.h in Headers */,
</span><span class="lines">@@ -26582,9 +26707,11 @@
</span><span class="cx">                                 97D2AD0414B823A60093DF32 /* DOMWindowProperty.h in Headers */,
</span><span class="cx">                                 89F60B11157F686E0075E157 /* DOMWindowQuota.h in Headers */,
</span><span class="cx">                                 11E067EE1E6246E500162D16 /* SimpleLineLayoutCoverage.h in Headers */,
</span><ins>+                                316BDBCE1E75F18A00DE0D5A /* GPUCommandBuffer.h in Headers */,
</ins><span class="cx">                                 AA2A5AD616A4861600975A25 /* DOMWindowSpeechSynthesis.h in Headers */,
</span><span class="cx">                                 A8CCBB49151F831600AB7CE9 /* DOMWindowWebDatabase.h in Headers */,
</span><span class="cx">                                 BC53DA2E1143121E000D817E /* DOMWrapperWorld.h in Headers */,
</span><ins>+                                316BDC031E762F6900DE0D5A /* GPURenderPipelineState.h in Headers */,
</ins><span class="cx">                                 93A806151E03B51C008A1F26 /* DoubleRange.h in Headers */,
</span><span class="cx">                                 FD1762E4176686EA00D836A8 /* DownSampler.h in Headers */,
</span><span class="cx">                                 A718760E0B2A120100A16ECE /* DragActions.h in Headers */,
</span><span class="lines">@@ -27052,6 +27179,7 @@
</span><span class="cx">                                 49291E4B134172C800E753DE /* ImageRenderingMode.h in Headers */,
</span><span class="cx">                                 B27535710B053814002CE64F /* ImageSource.h in Headers */,
</span><span class="cx">                                 4B3480940EEF50D400AC1B41 /* ImageSourceCG.h in Headers */,
</span><ins>+                                316BDBFB1E762D0400DE0D5A /* GPUEnums.h in Headers */,
</ins><span class="cx">                                 26F756B31B3B66F70005DD79 /* ImmutableNFA.h in Headers */,
</span><span class="cx">                                 26F756B51B3B68F20005DD79 /* ImmutableNFANodeBuilder.h in Headers */,
</span><span class="cx">                                 316FE1180E6E1DA700BF6088 /* ImplicitAnimation.h in Headers */,
</span><span class="lines">@@ -27224,6 +27352,7 @@
</span><span class="cx">                                 FC54D05816A7676E00575E4D /* JSCSSSupportsRule.h in Headers */,
</span><span class="cx">                                 9BD4E9171C462872005065BC /* JSCustomElementInterface.h in Headers */,
</span><span class="cx">                                 9BE6710C1D5AEB2500345514 /* JSCustomElementRegistry.h in Headers */,
</span><ins>+                                316BDBF71E762AD500DE0D5A /* GPUDepthStencilDescriptor.h in Headers */,
</ins><span class="cx">                                 E4778B80115A581A00B5D372 /* JSCustomEvent.h in Headers */,
</span><span class="cx">                                 E10B937C0B73C00A003ED890 /* JSCustomXPathNSResolver.h in Headers */,
</span><span class="cx">                                 1AE82F900CAAFA9D002237AE /* JSDatabase.h in Headers */,
</span><span class="lines">@@ -27327,6 +27456,7 @@
</span><span class="cx">                                 93B70D6A09EB0C7C009D8468 /* JSEventListener.h in Headers */,
</span><span class="cx">                                 E0FEF372B37C53EAC1C1FBEE /* JSEventSource.h in Headers */,
</span><span class="cx">                                 5FC7DC26CFE2563200B85AE4 /* JSEventTarget.h in Headers */,
</span><ins>+                                316BDC021E762F6400DE0D5A /* GPURenderPipelineDescriptor.h in Headers */,
</ins><span class="cx">                                 46B63F6C1C6E8D19002E914B /* JSEventTargetCustom.h in Headers */,
</span><span class="cx">                                 3314ACEC10892086000F0E56 /* JSExceptionBase.h in Headers */,
</span><span class="cx">                                 724ED3321A3A8B2300F5F13C /* JSEXTBlendMinMax.h in Headers */,
</span><span class="lines">@@ -27696,6 +27826,7 @@
</span><span class="cx">                                 B2FA3DB10AB75A6F000E5AC4 /* JSSVGNumberList.h in Headers */,
</span><span class="cx">                                 B2FA3DB50AB75A6F000E5AC4 /* JSSVGPathElement.h in Headers */,
</span><span class="cx">                                 B2FA3DB70AB75A6F000E5AC4 /* JSSVGPathSeg.h in Headers */,
</span><ins>+                                316BDC0D1E7634D200DE0D5A /* GPURenderPipelineColorAttachmentDescriptor.h in Headers */,
</ins><span class="cx">                                 B2FA3DB90AB75A6F000E5AC4 /* JSSVGPathSegArcAbs.h in Headers */,
</span><span class="cx">                                 B2FA3DBB0AB75A6F000E5AC4 /* JSSVGPathSegArcRel.h in Headers */,
</span><span class="cx">                                 B2FA3DBD0AB75A6F000E5AC4 /* JSSVGPathSegClosePath.h in Headers */,
</span><span class="lines">@@ -28501,6 +28632,7 @@
</span><span class="cx">                                 2B365C841525119E0091D27B /* RenderSVGEllipse.h in Headers */,
</span><span class="cx">                                 43C092BC12D9E4EE00A989C3 /* RenderSVGForeignObject.h in Headers */,
</span><span class="cx">                                 436708C512D9CA4B00044234 /* RenderSVGGradientStop.h in Headers */,
</span><ins>+                                316BDBDB1E7612E200DE0D5A /* GPURenderPassColorAttachmentDescriptor.h in Headers */,
</ins><span class="cx">                                 436708C712D9CA4B00044234 /* RenderSVGHiddenContainer.h in Headers */,
</span><span class="cx">                                 436708C912D9CA4B00044234 /* RenderSVGImage.h in Headers */,
</span><span class="cx">                                 0854B0151255E4E600B9CDD0 /* RenderSVGInline.h in Headers */,
</span><span class="lines">@@ -28552,6 +28684,7 @@
</span><span class="cx">                                 BE20507E18A458C20080647E /* RenderVTTCue.h in Headers */,
</span><span class="cx">                                 A871DFE40A15376B00B12A68 /* RenderWidget.h in Headers */,
</span><span class="cx">                                 A89CCC530F44E98100B5DA10 /* ReplaceNodeWithSpanCommand.h in Headers */,
</span><ins>+                                316BDBBC1E73880600DE0D5A /* GPUCommandQueue.h in Headers */,
</ins><span class="cx">                                 2DF512CE1D873E47001D6780 /* ReplaceRangeWithTextCommand.h in Headers */,
</span><span class="cx">                                 93309E0A099E64920056E581 /* ReplaceSelectionCommand.h in Headers */,
</span><span class="cx">                                 99CC0B5418BE9849006CEBCC /* ReplayController.h in Headers */,
</span><span class="lines">@@ -28654,6 +28787,7 @@
</span><span class="cx">                                 4998AED213FB224D0090B1AA /* ScriptedAnimationController.h in Headers */,
</span><span class="cx">                                 08A484780E5272C500C3FE76 /* ScriptElement.h in Headers */,
</span><span class="cx">                                 E3E4E2A81E3B17100023BB8A /* ScriptElementCachedScriptFetcher.h in Headers */,
</span><ins>+                                316BDBEB1E76244D00DE0D5A /* GPURenderCommandEncoder.h in Headers */,
</ins><span class="cx">                                 E11C9D9B0EB3681200E409DB /* ScriptExecutionContext.h in Headers */,
</span><span class="cx">                                 41F066E40F64BCF600A07EAC /* ScriptGlobalObject.h in Headers */,
</span><span class="cx">                                 E38838991BAD145F00D62EE3 /* ScriptModuleLoader.h in Headers */,
</span><span class="lines">@@ -30108,6 +30242,7 @@
</span><span class="cx">                                 FD31608C12B026F700C1A359 /* Biquad.cpp in Sources */,
</span><span class="cx">                                 FD31602412B0267600C1A359 /* BiquadDSPKernel.cpp in Sources */,
</span><span class="cx">                                 FDC54F041399B0DA008D9117 /* BiquadFilterNode.cpp in Sources */,
</span><ins>+                                316BDBDA1E7612E000DE0D5A /* GPURenderPassColorAttachmentDescriptor.cpp in Sources */,
</ins><span class="cx">                                 FD31602612B0267600C1A359 /* BiquadProcessor.cpp in Sources */,
</span><span class="cx">                                 A89943290B42338800D7C802 /* BitmapImage.cpp in Sources */,
</span><span class="cx">                                 1AFFC4541D5E81CB00267A66 /* BlacklistUpdater.mm in Sources */,
</span><span class="lines">@@ -30178,6 +30313,7 @@
</span><span class="cx">                                 E1A8E56617552B2A007488E7 /* CFURLExtras.cpp in Sources */,
</span><span class="cx">                                 97BC69DC1505F076001B74AC /* ChangeVersionWrapper.cpp in Sources */,
</span><span class="cx">                                 FD315FFE12B0267600C1A359 /* ChannelMergerNode.cpp in Sources */,
</span><ins>+                                316BDC071E762F8600DE0D5A /* GPURenderPipelineStateMetal.mm in Sources */,
</ins><span class="cx">                                 FD31600112B0267600C1A359 /* ChannelSplitterNode.cpp in Sources */,
</span><span class="cx">                                 6550B69F099DF0270090D781 /* CharacterData.cpp in Sources */,
</span><span class="cx">                                 9326DC0C09DAD5D600AFC847 /* CharsetData.cpp in Sources */,
</span><span class="lines">@@ -30331,6 +30467,7 @@
</span><span class="cx">                                 BC02A6460E09AAE9004B6D2B /* CSSFunctionValue.cpp in Sources */,
</span><span class="cx">                                 BC23E4E10DAACE0F009FDC91 /* CSSGradientValue.cpp in Sources */,
</span><span class="cx">                                 E11003301C9AC3DE00412DD0 /* CSSGridAutoRepeatValue.cpp in Sources */,
</span><ins>+                                316BDBED1E76248200DE0D5A /* GPURenderCommandEncoderMetal.mm in Sources */,
</ins><span class="cx">                                 CD7DBB2818CA19A400C11066 /* CSSGridLineNamesValue.cpp in Sources */,
</span><span class="cx">                                 CD3E252318046BCD00E27F56 /* CSSGridTemplateAreasValue.cpp in Sources */,
</span><span class="cx">                                 FBF89045169E9F1F0052D86E /* CSSGroupingRule.cpp in Sources */,
</span><span class="lines">@@ -30540,6 +30677,7 @@
</span><span class="cx">                                 93309DE3099E64920056E581 /* EditCommand.cpp in Sources */,
</span><span class="cx">                                 9BAB6C6D12550631001626D4 /* EditingStyle.cpp in Sources */,
</span><span class="cx">                                 4B3043CC0AE0373B00A82647 /* Editor.cpp in Sources */,
</span><ins>+                                316BDBF11E76292500DE0D5A /* GPUDepthStencilState.cpp in Sources */,
</ins><span class="cx">                                 9B55EEE91B3E8898005342BC /* EditorCocoa.mm in Sources */,
</span><span class="cx">                                 93A38B4B0D0E5808006872C2 /* EditorCommand.cpp in Sources */,
</span><span class="cx">                                 FED13D3A0CEA934600D89466 /* EditorIOS.mm in Sources */,
</span><span class="lines">@@ -30577,6 +30715,7 @@
</span><span class="cx">                                 6E67D2A61280E8A4008758F7 /* Extensions3DOpenGL.cpp in Sources */,
</span><span class="cx">                                 44DAB5B115A623580097C1E4 /* Extensions3DOpenGLCommon.cpp in Sources */,
</span><span class="cx">                                 E47E276816036EDC00EE2AFB /* ExtensionStyleSheets.cpp in Sources */,
</span><ins>+                                316BDBD21E75F7B200DE0D5A /* GPURenderPassDescriptor.cpp in Sources */,
</ins><span class="cx">                                 72F1ADA21A3904DC00014E18 /* EXTFragDepth.cpp in Sources */,
</span><span class="cx">                                 5C4304B0191AC908000E2BC0 /* EXTShaderTextureLOD.cpp in Sources */,
</span><span class="cx">                                 727AFED41A2EA6AE000442E8 /* EXTsRGB.cpp in Sources */,
</span><span class="lines">@@ -30805,6 +30944,7 @@
</span><span class="cx">                                 A81369E1097374F600D74463 /* HTMLLegendElement.cpp in Sources */,
</span><span class="cx">                                 A8EA79FC0A1916DF00A8EF5F /* HTMLLIElement.cpp in Sources */,
</span><span class="cx">                                 A871DC210A15205700B12A68 /* HTMLLinkElement.cpp in Sources */,
</span><ins>+                                316BDBE11E761CB900DE0D5A /* GPURenderPassAttachmentDescriptorMetal.mm in Sources */,
</ins><span class="cx">                                 A8EA7D320A19385500A8EF5F /* HTMLMapElement.cpp in Sources */,
</span><span class="cx">                                 A8EA7CAC0A192B9C00A8EF5F /* HTMLMarqueeElement.cpp in Sources */,
</span><span class="cx">                                 E44613A40CD6331000FADA75 /* HTMLMediaElement.cpp in Sources */,
</span><span class="lines">@@ -30925,6 +31065,7 @@
</span><span class="cx">                                 1A71D57B0F33819000F9CE4E /* IdentifierRep.cpp in Sources */,
</span><span class="cx">                                 C3CF17A415B0063F00276D39 /* IdTargetObserver.cpp in Sources */,
</span><span class="cx">                                 C3CF17A615B0063F00276D39 /* IdTargetObserverRegistry.cpp in Sources */,
</span><ins>+                                316BDC001E762F5D00DE0D5A /* GPURenderPipelineDescriptor.cpp in Sources */,
</ins><span class="cx">                                 B275356F0B053814002CE64F /* Image.cpp in Sources */,
</span><span class="cx">                                 43D2597713C816F400608559 /* ImageBuffer.cpp in Sources */,
</span><span class="cx">                                 B2A10B940B3818D700099AA4 /* ImageBufferCG.cpp in Sources */,
</span><span class="lines">@@ -31039,6 +31180,7 @@
</span><span class="cx">                                 7C6523171E00DBB500677F22 /* JSApplePayPaymentMethod.cpp in Sources */,
</span><span class="cx">                                 1AE96A8C1D1A0DDD00B86768 /* JSApplePayPaymentMethodSelectedEvent.cpp in Sources */,
</span><span class="cx">                                 7C6523191E00DBB500677F22 /* JSApplePayPaymentPass.cpp in Sources */,
</span><ins>+                                316BDBCC1E75F17B00DE0D5A /* GPUDrawable.cpp in Sources */,
</ins><span class="cx">                                 7C6579F11E00856600E3A27A /* JSApplePayPaymentRequest.cpp in Sources */,
</span><span class="cx">                                 1AE96A8E1D1A0DDD00B86768 /* JSApplePaySession.cpp in Sources */,
</span><span class="cx">                                 1AE96A901D1A0DDD00B86768 /* JSApplePayShippingContactSelectedEvent.cpp in Sources */,
</span><span class="lines">@@ -31165,6 +31307,7 @@
</span><span class="cx">                                 2E0888D41148848A00AF4265 /* JSDOMFormData.cpp in Sources */,
</span><span class="cx">                                 E1C36CBD0EB08062007410BC /* JSDOMGlobalObject.cpp in Sources */,
</span><span class="cx">                                 7C2BDD3D17C7F98C0038FF15 /* JSDOMGlobalObjectTask.cpp in Sources */,
</span><ins>+                                316BDBCF1E75F19900DE0D5A /* GPUDrawableMetal.mm in Sources */,
</ins><span class="cx">                                 65DF31F709D1CC60000BE325 /* JSDOMImplementation.cpp in Sources */,
</span><span class="cx">                                 4138F8571D253F08001CB61E /* JSDOMIterator.cpp in Sources */,
</span><span class="cx">                                 A9D248060D757E7D00FDF959 /* JSDOMMimeType.cpp in Sources */,
</span><span class="lines">@@ -31199,6 +31342,7 @@
</span><span class="cx">                                 65DF31F909D1CC60000BE325 /* JSElement.cpp in Sources */,
</span><span class="cx">                                 BC2ED5550C6B9BD300920BFF /* JSElementCustom.cpp in Sources */,
</span><span class="cx">                                 2ECF7ADC10162B3800427DE7 /* JSErrorEvent.cpp in Sources */,
</span><ins>+                                316BDBF91E762BF400DE0D5A /* GPUDepthStencilDescriptorMetal.mm in Sources */,
</ins><span class="cx">                                 F3D461481161D53200CA0D09 /* JSErrorHandler.cpp in Sources */,
</span><span class="cx">                                 14E8378409F85D1C00B85AE4 /* JSEvent.cpp in Sources */,
</span><span class="cx">                                 BCEFAF4E0C317E6900FA81F6 /* JSEventCustom.cpp in Sources */,
</span><span class="lines">@@ -31383,6 +31527,7 @@
</span><span class="cx">                                 2D9BF7231DBFDACD007A7D99 /* JSMediaKeySession.cpp in Sources */,
</span><span class="cx">                                 2D9BF74A1DBFDDFF007A7D99 /* JSMediaKeySessionCustom.cpp in Sources */,
</span><span class="cx">                                 CDF4B71D1E01E11A00E235A2 /* JSMediaKeySessionType.cpp in Sources */,
</span><ins>+                                316BDBE51E761F0A00DE0D5A /* GPURenderPassDepthAttachmentDescriptor.cpp in Sources */,
</ins><span class="cx">                                 CDF4B72B1E03C63E00E235A2 /* JSMediaKeysRequirement.cpp in Sources */,
</span><span class="cx">                                 2D9BF7241DBFDAD0007A7D99 /* JSMediaKeyStatusMap.cpp in Sources */,
</span><span class="cx">                                 2D9BF7251DBFDAD3007A7D99 /* JSMediaKeySystemAccess.cpp in Sources */,
</span><span class="lines">@@ -31446,6 +31591,7 @@
</span><span class="cx">                                 0704A4151D6F39FB0086DCDB /* JSOverconstrainedErrorEvent.cpp in Sources */,
</span><span class="cx">                                 1A0D57400A5C7867007EDD4C /* JSOverflowEvent.cpp in Sources */,
</span><span class="cx">                                 E1284BB210449FFA00EAEB52 /* JSPageTransitionEvent.cpp in Sources */,
</span><ins>+                                316BDC061E762F8300DE0D5A /* GPURenderPipelineDescriptorMetal.mm in Sources */,
</ins><span class="cx">                                 FDA15EB112B03EE1003A583A /* JSPannerNode.cpp in Sources */,
</span><span class="cx">                                 E51A81DF17298D7700BFCA61 /* JSPerformance.cpp in Sources */,
</span><span class="cx">                                 CB38FD511CCF938900592A3F /* JSPerformanceEntry.cpp in Sources */,
</span><span class="lines">@@ -31835,6 +31981,7 @@
</span><span class="cx">                                 E55F497A151B888000BB67DB /* LengthFunctions.cpp in Sources */,
</span><span class="cx">                                 0F87166F1C869D83004FF0DE /* LengthPoint.cpp in Sources */,
</span><span class="cx">                                 0FEF20CE1BD4A24100128E5D /* LengthSize.cpp in Sources */,
</span><ins>+                                316BDC0B1E76344E00DE0D5A /* GPURenderPipelineColorAttachmentDescriptorMetal.mm in Sources */,
</ins><span class="cx">                                 415080361E3F00AD0051D75D /* LibWebRTCAudioModule.cpp in Sources */,
</span><span class="cx">                                 5CDD83641E4325A000621E92 /* LibWebRTCDataChannelHandler.cpp in Sources */,
</span><span class="cx">                                 417612AF1E3A994000C3D81D /* LibWebRTCMediaEndpoint.cpp in Sources */,
</span><span class="lines">@@ -31896,6 +32043,7 @@
</span><span class="cx">                                 FA654A6B1108ABED002615E0 /* MathMLTokenElement.cpp in Sources */,
</span><span class="cx">                                 FA654A6B1108ABED002626F1 /* MathMLUnderOverElement.cpp in Sources */,
</span><span class="cx">                                 439046E912DA25E812AF80AC /* MathOperator.cpp in Sources */,
</span><ins>+                                316BDBD51E75F7CF00DE0D5A /* GPURenderPassDescriptorMetal.mm in Sources */,
</ins><span class="cx">                                 49D5DC2B0F423A73008F20FD /* Matrix3DTransformOperation.cpp in Sources */,
</span><span class="cx">                                 49E911C60EF86D47009D0CAF /* MatrixTransformOperation.cpp in Sources */,
</span><span class="cx">                                 5CBC8DAC1AAA302200E1C803 /* MediaAccessibilitySoftLink.cpp in Sources */,
</span><span class="lines">@@ -32067,6 +32215,7 @@
</span><span class="cx">                                 1A569D0D0D7E2B82007C3983 /* npruntime.cpp in Sources */,
</span><span class="cx">                                 52F52E1114A0134F00ACC397 /* NSScrollerImpDetails.mm in Sources */,
</span><span class="cx">                                 F55B3DC71251F12D003EF269 /* NumberInputType.cpp in Sources */,
</span><ins>+                                316BDBE71E761F2E00DE0D5A /* GPURenderPassDepthAttachmentDescriptorMetal.mm in Sources */,
</ins><span class="cx">                                 1A569D130D7E2B82007C3983 /* objc_class.mm in Sources */,
</span><span class="cx">                                 1A569D160D7E2B82007C3983 /* objc_instance.mm in Sources */,
</span><span class="cx">                                 1A569D180D7E2B82007C3983 /* objc_runtime.mm in Sources */,
</span><span class="lines">@@ -32284,6 +32433,7 @@
</span><span class="cx">                                 0F5602900E4B76580065B038 /* RenderMarquee.cpp in Sources */,
</span><span class="cx">                                 439046D712DA25E800AF80A2 /* RenderMathMLBlock.cpp in Sources */,
</span><span class="cx">                                 439046D912DA25E800AF80A2 /* RenderMathMLFenced.cpp in Sources */,
</span><ins>+                                316BDBC81E75F08D00DE0D5A /* GPUCommandBufferMetal.mm in Sources */,
</ins><span class="cx">                                 439046D912DA25E800AF81B3 /* RenderMathMLFencedOperator.cpp in Sources */,
</span><span class="cx">                                 439046DB12DA25E800AF80A2 /* RenderMathMLFraction.cpp in Sources */,
</span><span class="cx">                                 31A0897B1E738D5A003B6609 /* JSWebGPURenderPassDescriptor.cpp in Sources */,
</span><span class="lines">@@ -32453,6 +32603,7 @@
</span><span class="cx">                                 FD31603512B0267600C1A359 /* ScriptProcessorNode.cpp in Sources */,
</span><span class="cx">                                 8A413AE11207BBA50082016E /* ScriptRunner.cpp in Sources */,
</span><span class="cx">                                 4127D5370F8AAB1D00E424F5 /* ScriptState.cpp in Sources */,
</span><ins>+                                316BDBEA1E76244900DE0D5A /* GPURenderCommandEncoder.cpp in Sources */,
</ins><span class="cx">                                 BC8AE34E12EA096A00EB3AE6 /* ScrollableArea.cpp in Sources */,
</span><span class="cx">                                 5D925B670F64D4DD00B847F0 /* ScrollAlignment.cpp in Sources */,
</span><span class="cx">                                 CA3BF67C10D99BAE00E6CE53 /* ScrollAnimator.cpp in Sources */,
</span><span class="lines">@@ -32557,6 +32708,7 @@
</span><span class="cx">                                 51327D6111A33A2B004F9D65 /* SinkDocument.cpp in Sources */,
</span><span class="cx">                                 9444CBD51D860C8B0073A074 /* SizesAttributeParser.cpp in Sources */,
</span><span class="cx">                                 9444CBD31D860C8B0073A074 /* SizesCalcParser.cpp in Sources */,
</span><ins>+                                316BDC011E762F6100DE0D5A /* GPURenderPipelineState.cpp in Sources */,
</ins><span class="cx">                                 49E911CC0EF86D47009D0CAF /* SkewTransformOperation.cpp in Sources */,
</span><span class="cx">                                 4150F9F212B6E0E70008C860 /* SliderThumbElement.cpp in Sources */,
</span><span class="cx">                                 41A1B01D1E54239E007F3769 /* JSDOMGuardedObject.cpp in Sources */,
</span><span class="lines">@@ -32570,6 +32722,7 @@
</span><span class="cx">                                 57C7A6941E578ACA00C67D71 /* BasicCredential.cpp in Sources */,
</span><span class="cx">                                 E45390470EAFD637003695C8 /* SoundIOS.mm in Sources */,
</span><span class="cx">                                 4B3043C90AE0371D00A82647 /* SoundMac.mm in Sources */,
</span><ins>+                                316BDBF31E76293C00DE0D5A /* GPUDepthStencilStateMetal.mm in Sources */,
</ins><span class="cx">                                 84A81F3D0FC7DFF000955300 /* SourceAlpha.cpp in Sources */,
</span><span class="cx">                                 CD3A496117A9D01B00274E42 /* SourceBuffer.cpp in Sources */,
</span><span class="cx">                                 CD3A496417A9D01B00274E42 /* SourceBufferList.cpp in Sources */,
</span><span class="lines">@@ -32594,6 +32747,7 @@
</span><span class="cx">                                 1A2246490CC98DDB00C05240 /* SQLiteDatabase.cpp in Sources */,
</span><span class="cx">                                 7E474E2012494DC900235364 /* SQLiteDatabaseTracker.cpp in Sources */,
</span><span class="cx">                                 B5A684240FFABEAA00D24689 /* SQLiteFileSystem.cpp in Sources */,
</span><ins>+                                316BDBDE1E76137200DE0D5A /* GPURenderPassAttachmentDescriptor.cpp in Sources */,
</ins><span class="cx">                                 512BDB4A1C456FF5006494DF /* SQLiteIDBBackingStore.cpp in Sources */,
</span><span class="cx">                                 511EC12F1C50ABF50032F983 /* SQLiteIDBCursor.cpp in Sources */,
</span><span class="cx">                                 511EC12B1C50ABBF0032F983 /* SQLiteIDBTransaction.cpp in Sources */,
</span><span class="lines">@@ -32653,6 +32807,7 @@
</span><span class="cx">                                 E4BBED4C14FCDBA1003F0B98 /* StyleRule.cpp in Sources */,
</span><span class="cx">                                 E4946EAE156E64DD00D3297F /* StyleRuleImport.cpp in Sources */,
</span><span class="cx">                                 E461D65D1BB0C7F000CB5645 /* StyleScope.cpp in Sources */,
</span><ins>+                                316BDBC71E75F08200DE0D5A /* GPUCommandBuffer.cpp in Sources */,
</ins><span class="cx">                                 F47A5E3F195B8E4800483100 /* StyleScrollSnapPoints.cpp in Sources */,
</span><span class="cx">                                 E47A3AC31C5EABBE00CCBFA7 /* StyleSharingResolver.cpp in Sources */,
</span><span class="cx">                                 A8EA800D0A19516E00A8EF5F /* StyleSheet.cpp in Sources */,
</span><span class="lines">@@ -32702,6 +32857,7 @@
</span><span class="cx">                                 B222798F0D00BF220071B782 /* SVGAnimateElement.cpp in Sources */,
</span><span class="cx">                                 832B843619D8E57400B26055 /* SVGAnimateElementBase.cpp in Sources */,
</span><span class="cx">                                 B22279920D00BF220071B782 /* SVGAnimateMotionElement.cpp in Sources */,
</span><ins>+                                316BDBD71E7612C800DE0D5A /* GPURenderPassColorAttachmentDescriptorMetal.mm in Sources */,
</ins><span class="cx">                                 B22279940D00BF220071B782 /* SVGAnimateTransformElement.cpp in Sources */,
</span><span class="cx">                                 B22279970D00BF220071B782 /* SVGAnimationElement.cpp in Sources */,
</span><span class="cx">                                 08FB17C113BC7E9100040086 /* SVGAttributeToPropertyMap.cpp in Sources */,
</span><span class="lines">@@ -32781,6 +32937,7 @@
</span><span class="cx">                                 B2227A4A0D00BF220071B782 /* SVGMetadataElement.cpp in Sources */,
</span><span class="cx">                                 B2A1F2B00CEF0ABF00442F6A /* SVGMissingGlyphElement.cpp in Sources */,
</span><span class="cx">                                 B2227A4D0D00BF220071B782 /* SVGMPathElement.cpp in Sources */,
</span><ins>+                                316BDBF61E762AD100DE0D5A /* GPUDepthStencilDescriptor.cpp in Sources */,
</ins><span class="cx">                                 A833C7CA0A2CF06B00D57664 /* SVGNames.cpp in Sources */,
</span><span class="cx">                                 7C39C3731DDBB8C100FEFB29 /* SVGNumberListValues.cpp in Sources */,
</span><span class="cx">                                 B2227A560D00BF220071B782 /* SVGParserUtilities.cpp in Sources */,
</span><span class="lines">@@ -32817,6 +32974,7 @@
</span><span class="cx">                                 7C39C3761DDBB90D00FEFB29 /* SVGStringListValues.cpp in Sources */,
</span><span class="cx">                                 B2227AB70D00BF220071B782 /* SVGStyleElement.cpp in Sources */,
</span><span class="cx">                                 B2227ABA0D00BF220071B782 /* SVGSVGElement.cpp in Sources */,
</span><ins>+                                316BDBBB1E73880600DE0D5A /* GPUCommandQueue.cpp in Sources */,
</ins><span class="cx">                                 B2227ABD0D00BF220071B782 /* SVGSwitchElement.cpp in Sources */,
</span><span class="cx">                                 B2227AC00D00BF220071B782 /* SVGSymbolElement.cpp in Sources */,
</span><span class="cx">                                 B2227AC40D00BF220071B782 /* SVGTests.cpp in Sources */,
</span><span class="lines">@@ -32847,6 +33005,7 @@
</span><span class="cx">                                 E45390AE0EAFF4B5003695C8 /* SystemMemoryIOS.cpp in Sources */,
</span><span class="cx">                                 CDA07FBD18E0A16A004699FA /* SystemSleepListener.cpp in Sources */,
</span><span class="cx">                                 CDA07FC118E0A22B004699FA /* SystemSleepListenerMac.mm in Sources */,
</span><ins>+                                316BDBBE1E73881300DE0D5A /* GPUCommandQueueMetal.mm in Sources */,
</ins><span class="cx">                                 5D5975B419635F1100D00878 /* SystemVersion.mm in Sources */,
</span><span class="cx">                                 463EB6221B8789E00096ED51 /* TagCollection.cpp in Sources */,
</span><span class="cx">                                 F55B3DD51251F12D003EF269 /* TelephoneInputType.cpp in Sources */,
</span><span class="lines">@@ -33010,6 +33169,7 @@
</span><span class="cx">                                 7AF9B20518CFB2DF00C64BEF /* VTTRegionList.cpp in Sources */,
</span><span class="cx">                                 7A93868518DCC14500B8263D /* VTTScanner.cpp in Sources */,
</span><span class="cx">                                 A14832B1187F61E100DA63A6 /* WAKAppKitStubs.m in Sources */,
</span><ins>+                                316BDC0C1E7634CF00DE0D5A /* GPURenderPipelineColorAttachmentDescriptor.cpp in Sources */,
</ins><span class="cx">                                 A14832B3187F629100DA63A6 /* WAKClipView.m in Sources */,
</span><span class="cx">                                 A14832B5187F62FC00DA63A6 /* WAKResponder.m in Sources */,
</span><span class="cx">                                 A14832B7187F636C00DA63A6 /* WAKScrollView.mm in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGPUDrawablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGPUDrawable.cpp (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGPUDrawable.cpp        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/html/canvas/WebGPUDrawable.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -28,9 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGPU)
</span><span class="cx"> 
</span><del>-/* FIXME: WebGPU - Not implemented yet.
</del><span class="cx"> #include &quot;GPUDrawable.h&quot;
</span><del>- */
</del><span class="cx"> #include &quot;GPUTexture.h&quot;
</span><span class="cx"> #include &quot;WebGPURenderingContext.h&quot;
</span><span class="cx"> #include &quot;WebGPUTexture.h&quot;
</span><span class="lines">@@ -49,7 +47,7 @@
</span><span class="cx">     if (!m_drawable)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    RefPtr&lt;GPUTexture&gt; drawableTexture = GPUTexture::createFromExistingTexture(m_drawable-&gt;texture());
</del><ins>+    RefPtr&lt;GPUTexture&gt; drawableTexture = GPUTexture::createFromDrawable(m_drawable.get());
</ins><span class="cx">     m_texture = WebGPUTexture::createFromDrawableTexture(context, drawableTexture);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGPUDrawableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGPUDrawable.h (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGPUDrawable.h        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/html/canvas/WebGPUDrawable.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -31,13 +31,7 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-// FIXME: WebGPU - Stub implementation - not implemented yet.
-// class GPUDrawable;
-class GPUDrawable : public RefCounted&lt;GPUDrawable&gt; {
-public:
-    GPUTexture* texture() { return nullptr; }
-};
-// FIXME: WebGPU - End stub.
</del><ins>+class GPUDrawable;
</ins><span class="cx"> class WebGPUTexture;
</span><span class="cx"> 
</span><span class="cx"> class WebGPUDrawable : public WebGPUObject {
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPUBufferMetalmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cocoa/GPUBufferMetal.mm (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPUBufferMetal.mm        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPUBufferMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -23,8 +23,8 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#include &quot;config.h&quot;
-#include &quot;GPUBuffer.h&quot;
</del><ins>+#import &quot;config.h&quot;
+#import &quot;GPUBuffer.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGPU)
</span><span class="cx"> 
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx">     if (!device || !device-&gt;platformDevice() || !data)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_buffer = (MTLBuffer*)[device-&gt;platformDevice() newBufferWithBytes:data-&gt;baseAddress() length:data-&gt;byteLength() options:MTLResourceOptionCPUCacheModeDefault];
</del><ins>+    m_buffer = adoptNS((MTLBuffer *)[device-&gt;platformDevice() newBufferWithBytes:data-&gt;baseAddress() length:data-&gt;byteLength() options:MTLResourceOptionCPUCacheModeDefault]);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> unsigned long GPUBuffer::length() const
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx">     return m_contents;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-MTLBuffer* GPUBuffer::platformBuffer()
</del><ins>+MTLBuffer *GPUBuffer::platformBuffer()
</ins><span class="cx"> {
</span><span class="cx">     return m_buffer.get();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPUCommandBufferMetalmmfromrev213779trunkSourceWebCoreplatformgraphicscocoaGPUFunctionMetalmm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/cocoa/GPUCommandBufferMetal.mm (from rev 213779, trunk/Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPUCommandBufferMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPUCommandBufferMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPUCommandBuffer.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;GPUCommandQueue.h&quot;
+#import &quot;GPUDevice.h&quot;
+#import &quot;GPUDrawable.h&quot;
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+
+namespace WebCore {
+
+GPUCommandBuffer::GPUCommandBuffer(GPUCommandQueue* queue)
+{
+    LOG(WebGPU, &quot;GPUCommandBuffer::GPUCommandBuffer()&quot;);
+
+    if (!queue || !queue-&gt;platformCommandQueue())
+        return;
+
+    m_commandBuffer = (MTLCommandBuffer *)[queue-&gt;platformCommandQueue() commandBuffer];
+}
+
+MTLCommandBuffer *GPUCommandBuffer::platformCommandBuffer()
+{
+    return m_commandBuffer.get();
+}
+
+void GPUCommandBuffer::presentDrawable(GPUDrawable* drawable)
+{
+    if (!m_commandBuffer || !drawable-&gt;platformDrawable())
+        return;
+
+    [m_commandBuffer presentDrawable:static_cast&lt;id&lt;MTLDrawable&gt;&gt;(drawable-&gt;platformDrawable())];
+    drawable-&gt;release();
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPUCommandQueueMetalmmfromrev213779trunkSourceWebCoreplatformgraphicscocoaGPUFunctionMetalmm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/cocoa/GPUCommandQueueMetal.mm (from rev 213779, trunk/Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPUCommandQueueMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPUCommandQueueMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPUCommandQueue.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;GPUDevice.h&quot;
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+
+namespace WebCore {
+
+GPUCommandQueue::GPUCommandQueue(GPUDevice* device)
+{
+    LOG(WebGPU, &quot;GPUCommandQueue::GPUCommandQueue()&quot;);
+
+    if (!device || !device-&gt;platformDevice())
+        return;
+
+    m_commandQueue = adoptNS((MTLCommandQueue *)[device-&gt;platformDevice() newCommandQueue]);
+}
+
+String GPUCommandQueue::label() const
+{
+    if (!m_commandQueue)
+        return emptyString();
+
+    return [m_commandQueue label];
+}
+
+void GPUCommandQueue::setLabel(const String&amp; label)
+{
+    ASSERT(m_commandQueue);
+    [m_commandQueue setLabel:label];
+}
+    
+MTLCommandQueue *GPUCommandQueue::platformCommandQueue()
+{
+    return m_commandQueue.get();
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPUDepthStencilDescriptorMetalmmfromrev213779trunkSourceWebCoreplatformgraphicscocoaGPULibraryMetalmm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/cocoa/GPUDepthStencilDescriptorMetal.mm (from rev 213779, trunk/Source/WebCore/platform/graphics/cocoa/GPULibraryMetal.mm) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPUDepthStencilDescriptorMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPUDepthStencilDescriptorMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,80 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPUDepthStencilDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;GPUEnums.h&quot;
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+
+namespace WebCore {
+
+GPUDepthStencilDescriptor::GPUDepthStencilDescriptor()
+{
+    LOG(WebGPU, &quot;GPUDepthStencilDescriptor::GPUDepthStencilDescriptor()&quot;);
+
+    m_depthStencilDescriptor = adoptNS((MTLDepthStencilDescriptor *)[MTLDepthStencilDescriptor new]);
+}
+
+bool GPUDepthStencilDescriptor::depthWriteEnabled() const
+{
+    if (!m_depthStencilDescriptor)
+        return false;
+
+    return [m_depthStencilDescriptor isDepthWriteEnabled];
+}
+
+void GPUDepthStencilDescriptor::setDepthWriteEnabled(bool newDepthWriteEnabled)
+{
+    ASSERT(m_depthStencilDescriptor);
+    [m_depthStencilDescriptor setDepthWriteEnabled:newDepthWriteEnabled];
+}
+
+GPUCompareFunction GPUDepthStencilDescriptor::depthCompareFunction() const
+{
+    if (!m_depthStencilDescriptor)
+        return GPUCompareFunction::Never;
+
+    return static_cast&lt;GPUCompareFunction&gt;([m_depthStencilDescriptor depthCompareFunction]);
+}
+
+void GPUDepthStencilDescriptor::setDepthCompareFunction(GPUCompareFunction newFunction)
+{
+    ASSERT(m_depthStencilDescriptor);
+    [m_depthStencilDescriptor setDepthCompareFunction:static_cast&lt;MTLCompareFunction&gt;(newFunction)];
+}
+
+MTLDepthStencilDescriptor *GPUDepthStencilDescriptor::platformDepthStencilDescriptor()
+{
+    return m_depthStencilDescriptor.get();
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPUDepthStencilStateMetalmmfromrev213779trunkSourceWebCoreplatformgraphicscocoaGPUFunctionMetalmm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/cocoa/GPUDepthStencilStateMetal.mm (from rev 213779, trunk/Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPUDepthStencilStateMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPUDepthStencilStateMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPUDepthStencilState.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;GPUDepthStencilDescriptor.h&quot;
+#import &quot;GPUDevice.h&quot;
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+
+namespace WebCore {
+
+GPUDepthStencilState::GPUDepthStencilState(GPUDevice* device, GPUDepthStencilDescriptor* descriptor)
+{
+    LOG(WebGPU, &quot;GPUDepthStencilState::GPUDepthStencilState()&quot;);
+
+    if (!device || !device-&gt;platformDevice() || !descriptor || !descriptor-&gt;platformDepthStencilDescriptor())
+        return;
+
+    m_depthStencilState = adoptNS((MTLDepthStencilState *)[device-&gt;platformDevice() newDepthStencilStateWithDescriptor:descriptor-&gt;platformDepthStencilDescriptor()]);
+}
+
+String GPUDepthStencilState::label() const
+{
+    if (!m_depthStencilState)
+        return emptyString();
+
+    return [m_depthStencilState label];
+}
+
+void GPUDepthStencilState::setLabel(const String&amp; label)
+{
+    ASSERT(m_depthStencilState);
+    [m_depthStencilState setLabel:label];
+}
+    
+MTLDepthStencilState *GPUDepthStencilState::platformDepthStencilState()
+{
+    return m_depthStencilState.get();
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPUDrawableMetalmmfromrev213779trunkSourceWebCoreplatformgraphicscocoaGPUFunctionMetalmm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/cocoa/GPUDrawableMetal.mm (from rev 213779, trunk/Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPUDrawableMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPUDrawableMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPUDrawable.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;GPUDevice.h&quot;
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+#import &lt;QuartzCore/QuartzCore.h&gt;
+
+namespace WebCore {
+
+GPUDrawable::GPUDrawable(GPUDevice* device)
+{
+    LOG(WebGPU, &quot;GPUDrawable::GPUDrawable()&quot;);
+
+    if (!device || !device-&gt;platformDevice())
+        return;
+
+    m_drawable = (MTLDrawable *)[static_cast&lt;CAMetalLayer*&gt;(device-&gt;platformLayer()) nextDrawable];
+}
+
+void GPUDrawable::release()
+{
+    LOG(WebGPU, &quot;MetalDrawable::release()&quot;);
+    m_drawable = nullptr;
+}
+    
+MTLDrawable *GPUDrawable::platformDrawable()
+{
+    return m_drawable.get();
+}
+
+MTLTexture *GPUDrawable::platformTexture()
+{
+    if (!m_drawable)
+        return nullptr;
+    return (MTLTexture *)[(id&lt;CAMetalDrawable&gt;)m_drawable.get() texture];
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPUFunctionMetalmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -23,8 +23,8 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#include &quot;config.h&quot;
-#include &quot;GPUFunction.h&quot;
</del><ins>+#import &quot;config.h&quot;
+#import &quot;GPUFunction.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGPU)
</span><span class="cx"> 
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">     if (!library || !library-&gt;platformLibrary())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_function = (MTLFunction*)[library-&gt;platformLibrary() newFunctionWithName:name];
</del><ins>+    m_function = adoptNS((MTLFunction *)[library-&gt;platformLibrary() newFunctionWithName:name]);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> String GPUFunction::name() const
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">     return [m_function name];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-MTLFunction* GPUFunction::platformFunction()
</del><ins>+MTLFunction *GPUFunction::platformFunction()
</ins><span class="cx"> {
</span><span class="cx">     return m_function.get();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPULibraryMetalmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cocoa/GPULibraryMetal.mm (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPULibraryMetal.mm        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPULibraryMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -23,8 +23,8 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#include &quot;config.h&quot;
-#include &quot;GPULibrary.h&quot;
</del><ins>+#import &quot;config.h&quot;
+#import &quot;GPULibrary.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGPU)
</span><span class="cx"> 
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     NSError *error = [NSError errorWithDomain:@&quot;com.apple.WebKit.GPU&quot; code:1 userInfo:nil];
</span><del>-    m_library = (MTLLibrary*)[device-&gt;platformDevice() newLibraryWithSource:sourceCode options:nil error:&amp;error];
</del><ins>+    m_library = adoptNS((MTLLibrary *)[device-&gt;platformDevice() newLibraryWithSource:sourceCode options:nil error:&amp;error]);
</ins><span class="cx">     if (!m_library)
</span><span class="cx">         LOG(WebGPU, &quot;Compilation error: %s&quot;, [[error localizedDescription] UTF8String]);
</span><span class="cx"> }
</span><span class="lines">@@ -58,9 +58,7 @@
</span><span class="cx"> 
</span><span class="cx"> void GPULibrary::setLabel(const String&amp; label)
</span><span class="cx"> {
</span><del>-    if (!m_library)
-        return;
-
</del><ins>+    ASSERT(m_library);
</ins><span class="cx">     [m_library setLabel:label];
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -78,7 +76,7 @@
</span><span class="cx">     return names;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-MTLLibrary* GPULibrary::platformLibrary()
</del><ins>+MTLLibrary *GPULibrary::platformLibrary()
</ins><span class="cx"> {
</span><span class="cx">     return m_library.get();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPURenderCommandEncoderMetalmm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/cocoa/GPURenderCommandEncoderMetal.mm (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPURenderCommandEncoderMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPURenderCommandEncoderMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,104 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPURenderCommandEncoder.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;GPUBuffer.h&quot;
+#import &quot;GPUCommandBuffer.h&quot;
+#import &quot;GPUDepthStencilState.h&quot;
+#import &quot;GPURenderPassDescriptor.h&quot;
+#import &quot;GPURenderPipelineState.h&quot;
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+
+namespace WebCore {
+
+GPURenderCommandEncoder::GPURenderCommandEncoder(GPUCommandBuffer* buffer, GPURenderPassDescriptor* descriptor)
+{
+    LOG(WebGPU, &quot;GPURenderCommandEncoder::GPURenderCommandEncoder()&quot;);
+
+    if (!buffer || !buffer-&gt;platformCommandBuffer() || !descriptor || !descriptor-&gt;platformRenderPassDescriptor())
+        return;
+
+    m_renderCommandEncoder = (MTLRenderCommandEncoder *)[buffer-&gt;platformCommandBuffer() renderCommandEncoderWithDescriptor:descriptor-&gt;platformRenderPassDescriptor()];
+}
+
+void GPURenderCommandEncoder::setRenderPipelineState(GPURenderPipelineState* renderPipelineState)
+{
+    if (!m_renderCommandEncoder || !renderPipelineState)
+        return;
+
+    [m_renderCommandEncoder setRenderPipelineState:static_cast&lt;id&lt;MTLRenderPipelineState&gt;&gt;(renderPipelineState-&gt;platformRenderPipelineState())];
+}
+
+void GPURenderCommandEncoder::setDepthStencilState(GPUDepthStencilState* depthStencilState)
+{
+    if (!m_renderCommandEncoder || !depthStencilState)
+        return;
+
+    [m_renderCommandEncoder setDepthStencilState:static_cast&lt;id&lt;MTLDepthStencilState&gt;&gt;(depthStencilState-&gt;platformDepthStencilState())];
+}
+
+void GPURenderCommandEncoder::setVertexBuffer(GPUBuffer* buffer, unsigned offset, unsigned index)
+{
+    if (!m_renderCommandEncoder || !buffer)
+        return;
+
+    [m_renderCommandEncoder setVertexBuffer:static_cast&lt;id&lt;MTLBuffer&gt;&gt;(buffer-&gt;platformBuffer()) offset:offset atIndex:index];
+}
+
+void GPURenderCommandEncoder::setFragmentBuffer(GPUBuffer* buffer, unsigned offset, unsigned index)
+{
+    if (!m_renderCommandEncoder || !buffer)
+        return;
+
+    [m_renderCommandEncoder setFragmentBuffer:static_cast&lt;id&lt;MTLBuffer&gt;&gt;(buffer-&gt;platformBuffer()) offset:offset atIndex:index];
+}
+
+void GPURenderCommandEncoder::drawPrimitives(unsigned type, unsigned start, unsigned count)
+{
+    if (!m_renderCommandEncoder || !count)
+        return;
+
+    [m_renderCommandEncoder drawPrimitives:static_cast&lt;MTLPrimitiveType&gt;(type) vertexStart:start vertexCount:count];
+}
+
+void GPURenderCommandEncoder::endEncoding()
+{
+    [m_renderCommandEncoder endEncoding];
+}
+
+MTLRenderCommandEncoder *GPURenderCommandEncoder::platformRenderCommandEncoder()
+{
+    return m_renderCommandEncoder.get();
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPURenderPassAttachmentDescriptorMetalmm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassAttachmentDescriptorMetal.mm (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassAttachmentDescriptorMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassAttachmentDescriptorMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPURenderPassAttachmentDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;GPUTexture.h&quot;
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+
+namespace WebCore {
+
+GPURenderPassAttachmentDescriptor::GPURenderPassAttachmentDescriptor(MTLRenderPassAttachmentDescriptor *attachmentDescriptor)
+{
+    LOG(WebGPU, &quot;GPURenderPassAttachmentDescriptor::GPURenderPassAttachmentDescriptor()&quot;);
+
+    m_renderPassAttachmentDescriptor = attachmentDescriptor;
+}
+
+unsigned long GPURenderPassAttachmentDescriptor::loadAction() const
+{
+    if (!m_renderPassAttachmentDescriptor)
+        return 0; // FIXME: WebGPU - There is probably a real value for this.
+
+    return [m_renderPassAttachmentDescriptor loadAction];
+}
+
+void GPURenderPassAttachmentDescriptor::setLoadAction(unsigned long newLoadAction)
+{
+    if (!m_renderPassAttachmentDescriptor)
+        return;
+
+    [m_renderPassAttachmentDescriptor setLoadAction:static_cast&lt;MTLLoadAction&gt;(newLoadAction)];
+}
+
+unsigned long GPURenderPassAttachmentDescriptor::storeAction() const
+{
+    if (!m_renderPassAttachmentDescriptor)
+        return 0; // FIXME: WebGPU - There is probably a real value for this.
+
+    return [m_renderPassAttachmentDescriptor storeAction];
+}
+
+void GPURenderPassAttachmentDescriptor::setStoreAction(unsigned long newStoreAction)
+{
+    if (!m_renderPassAttachmentDescriptor)
+        return;
+
+    [m_renderPassAttachmentDescriptor setStoreAction:static_cast&lt;MTLStoreAction&gt;(newStoreAction)];
+}
+
+void GPURenderPassAttachmentDescriptor::setTexture(RefPtr&lt;GPUTexture&gt; texture)
+{
+    if (!m_renderPassAttachmentDescriptor)
+        return;
+    
+    [m_renderPassAttachmentDescriptor setTexture:static_cast&lt;id&lt;MTLTexture&gt;&gt;(texture-&gt;platformTexture())];
+}
+
+MTLRenderPassAttachmentDescriptor *GPURenderPassAttachmentDescriptor::platformRenderPassAttachmentDescriptor()
+{
+    return m_renderPassAttachmentDescriptor.get();
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPURenderPassColorAttachmentDescriptorMetalmm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassColorAttachmentDescriptorMetal.mm (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassColorAttachmentDescriptorMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassColorAttachmentDescriptorMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,77 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPURenderPassColorAttachmentDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;GPURenderPassAttachmentDescriptor.h&quot;
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+
+namespace WebCore {
+
+RefPtr&lt;GPURenderPassColorAttachmentDescriptor&gt; GPURenderPassColorAttachmentDescriptor::create(MTLRenderPassColorAttachmentDescriptor *colorAttachmentDescriptor)
+{
+    RefPtr&lt;GPURenderPassColorAttachmentDescriptor&gt; descriptor = adoptRef(new GPURenderPassColorAttachmentDescriptor(colorAttachmentDescriptor));
+    return descriptor;
+}
+
+GPURenderPassColorAttachmentDescriptor::GPURenderPassColorAttachmentDescriptor(MTLRenderPassColorAttachmentDescriptor *attachmentDescriptor)
+    : GPURenderPassAttachmentDescriptor(attachmentDescriptor)
+{
+    LOG(WebGPU, &quot;GPURenderPassColorAttachmentDescriptor::GPURenderPassColorAttachmentDescriptor()&quot;);
+}
+
+Vector&lt;float&gt; GPURenderPassColorAttachmentDescriptor::clearColor() const
+{
+    MTLRenderPassColorAttachmentDescriptor *colorAttachmentDescriptor = static_cast&lt;MTLRenderPassColorAttachmentDescriptor *&gt;(m_renderPassAttachmentDescriptor.get());
+    if (!colorAttachmentDescriptor)
+        return Vector&lt;float&gt;();
+
+    MTLClearColor color = [colorAttachmentDescriptor clearColor];
+    return Vector&lt;float&gt;({static_cast&lt;float&gt;(color.red), static_cast&lt;float&gt;(color.green), static_cast&lt;float&gt;(color.blue), static_cast&lt;float&gt;(color.alpha)});
+}
+
+void GPURenderPassColorAttachmentDescriptor::setClearColor(const Vector&lt;float&gt;&amp; newClearColor)
+{
+    MTLRenderPassColorAttachmentDescriptor *colorAttachmentDescriptor = platformRenderPassColorAttachmentDescriptor();
+    if (!colorAttachmentDescriptor || newClearColor.size() != 4)
+        return;
+
+    MTLClearColor clearColor = MTLClearColorMake(newClearColor[0], newClearColor[1], newClearColor[2], newClearColor[3]);
+    [colorAttachmentDescriptor setClearColor:clearColor];
+}
+
+MTLRenderPassColorAttachmentDescriptor *GPURenderPassColorAttachmentDescriptor::platformRenderPassColorAttachmentDescriptor()
+{
+    return static_cast&lt;MTLRenderPassColorAttachmentDescriptor *&gt;(platformRenderPassAttachmentDescriptor());
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPURenderPassDepthAttachmentDescriptorMetalmm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassDepthAttachmentDescriptorMetal.mm (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassDepthAttachmentDescriptorMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassDepthAttachmentDescriptorMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPURenderPassDepthAttachmentDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;GPURenderPassAttachmentDescriptor.h&quot;
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+
+namespace WebCore {
+
+RefPtr&lt;GPURenderPassDepthAttachmentDescriptor&gt; GPURenderPassDepthAttachmentDescriptor::create(MTLRenderPassDepthAttachmentDescriptor *depthAttachmentDescriptor)
+{
+    RefPtr&lt;GPURenderPassDepthAttachmentDescriptor&gt; descriptor = adoptRef(new GPURenderPassDepthAttachmentDescriptor(depthAttachmentDescriptor));
+    return descriptor;
+}
+
+GPURenderPassDepthAttachmentDescriptor::GPURenderPassDepthAttachmentDescriptor(MTLRenderPassDepthAttachmentDescriptor *attachmentDescriptor)
+    : GPURenderPassAttachmentDescriptor(attachmentDescriptor)
+{
+    LOG(WebGPU, &quot;GPURenderPassDepthAttachmentDescriptor::GPURenderPassDepthAttachmentDescriptor()&quot;);
+}
+
+double GPURenderPassDepthAttachmentDescriptor::clearDepth() const
+{
+    MTLRenderPassDepthAttachmentDescriptor *depthAttachmentDescriptor = static_cast&lt;MTLRenderPassDepthAttachmentDescriptor *&gt;(m_renderPassAttachmentDescriptor.get());
+    if (!depthAttachmentDescriptor)
+        return 0;
+
+    return [depthAttachmentDescriptor clearDepth];
+}
+
+void GPURenderPassDepthAttachmentDescriptor::setClearDepth(double newClearDepth)
+{
+    MTLRenderPassDepthAttachmentDescriptor *depthAttachmentDescriptor = platformRenderPassDepthAttachmentDescriptor();
+    [depthAttachmentDescriptor setClearDepth:newClearDepth];
+}
+
+MTLRenderPassDepthAttachmentDescriptor *GPURenderPassDepthAttachmentDescriptor::platformRenderPassDepthAttachmentDescriptor()
+{
+    return static_cast&lt;MTLRenderPassDepthAttachmentDescriptor *&gt;(platformRenderPassAttachmentDescriptor());
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPURenderPassDescriptorMetalmmfromrev213779trunkSourceWebCoreplatformgraphicscocoaGPUBufferMetalmm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassDescriptorMetal.mm (from rev 213779, trunk/Source/WebCore/platform/graphics/cocoa/GPUBufferMetal.mm) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassDescriptorMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPassDescriptorMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,74 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPURenderPassDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;GPURenderPassColorAttachmentDescriptor.h&quot;
+#import &quot;GPURenderPassDepthAttachmentDescriptor.h&quot;
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+
+namespace WebCore {
+
+GPURenderPassDescriptor::GPURenderPassDescriptor()
+{
+    LOG(WebGPU, &quot;GPURenderPassDescriptor::GPURenderPassDescriptor()&quot;);
+
+    m_renderPassDescriptor = adoptNS((MTLRenderPassDescriptor *)[MTLRenderPassDescriptor new]);
+}
+
+Vector&lt;RefPtr&lt;GPURenderPassColorAttachmentDescriptor&gt;&gt; GPURenderPassDescriptor::colorAttachments()
+{
+    if (!m_renderPassDescriptor)
+        return Vector&lt;RefPtr&lt;GPURenderPassColorAttachmentDescriptor&gt;&gt;();
+
+    Vector&lt;RefPtr&lt;GPURenderPassColorAttachmentDescriptor&gt;&gt; platformColorAttachments;
+    platformColorAttachments.append(GPURenderPassColorAttachmentDescriptor::create([[m_renderPassDescriptor colorAttachments] objectAtIndexedSubscript:0]));
+    return platformColorAttachments;
+}
+
+RefPtr&lt;GPURenderPassDepthAttachmentDescriptor&gt; GPURenderPassDescriptor::depthAttachment()
+{
+    if (!m_renderPassDescriptor)
+        return nullptr;
+
+    if (!m_depthAttachment)
+        m_depthAttachment = GPURenderPassDepthAttachmentDescriptor::create([m_renderPassDescriptor depthAttachment]);
+    
+    return m_depthAttachment;
+}
+
+MTLRenderPassDescriptor *GPURenderPassDescriptor::platformRenderPassDescriptor()
+{
+    return m_renderPassDescriptor.get();
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPURenderPipelineColorAttachmentDescriptorMetalmmfromrev213779trunkSourceWebCoreplatformgraphicscocoaGPUTextureMetalmm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPipelineColorAttachmentDescriptorMetal.mm (from rev 213779, trunk/Source/WebCore/platform/graphics/cocoa/GPUTextureMetal.mm) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPipelineColorAttachmentDescriptorMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPipelineColorAttachmentDescriptorMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,71 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPURenderPipelineColorAttachmentDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+
+namespace WebCore {
+
+RefPtr&lt;GPURenderPipelineColorAttachmentDescriptor&gt; GPURenderPipelineColorAttachmentDescriptor::create(MTLRenderPipelineColorAttachmentDescriptor *attachmentDescriptor)
+{
+    RefPtr&lt;GPURenderPipelineColorAttachmentDescriptor&gt; descriptor = adoptRef(new GPURenderPipelineColorAttachmentDescriptor(attachmentDescriptor));
+    return descriptor;
+}
+
+GPURenderPipelineColorAttachmentDescriptor::GPURenderPipelineColorAttachmentDescriptor(MTLRenderPipelineColorAttachmentDescriptor *attachmentDescriptor)
+{
+    LOG(WebGPU, &quot;GPURenderPipelineColorAttachmentDescriptor::GPURenderPipelineColorAttachmentDescriptor()&quot;);
+
+    m_renderPipelineColorAttachmentDescriptor = attachmentDescriptor;
+}
+
+unsigned long GPURenderPipelineColorAttachmentDescriptor::pixelFormat() const
+{
+    if (!m_renderPipelineColorAttachmentDescriptor)
+        return 0; // FIXME: WebGPU - There is probably a real value for this.
+
+    return [m_renderPipelineColorAttachmentDescriptor pixelFormat];
+}
+
+void GPURenderPipelineColorAttachmentDescriptor::setPixelFormat(unsigned long newPixelFormat)
+{
+    ASSERT(m_renderPipelineColorAttachmentDescriptor);
+    [m_renderPipelineColorAttachmentDescriptor setPixelFormat:static_cast&lt;MTLPixelFormat&gt;(newPixelFormat)];
+}
+
+MTLRenderPipelineColorAttachmentDescriptor *GPURenderPipelineColorAttachmentDescriptor::platformRenderPipelineColorAttachmentDescriptor()
+{
+    return m_renderPipelineColorAttachmentDescriptor.get();
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPURenderPipelineDescriptorMetalmm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPipelineDescriptorMetal.mm (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPipelineDescriptorMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPipelineDescriptorMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,96 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPURenderPipelineDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;GPUFunction.h&quot;
+#import &quot;GPURenderPipelineColorAttachmentDescriptor.h&quot;
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+
+namespace WebCore {
+
+GPURenderPipelineDescriptor::GPURenderPipelineDescriptor()
+{
+    LOG(WebGPU, &quot;GPURenderPipelineDescriptor::GPURenderPipelineDescriptor()&quot;);
+
+    m_renderPipelineDescriptor = adoptNS((MTLRenderPipelineDescriptor *)[MTLRenderPipelineDescriptor new]);
+}
+
+unsigned long GPURenderPipelineDescriptor::depthAttachmentPixelFormat() const
+{
+    if (!m_renderPipelineDescriptor)
+        return 0;
+    return [m_renderPipelineDescriptor depthAttachmentPixelFormat];
+}
+
+void GPURenderPipelineDescriptor::setDepthAttachmentPixelFormat(unsigned long newPixelFormat)
+{
+    ASSERT(m_renderPipelineDescriptor);
+    [m_renderPipelineDescriptor setDepthAttachmentPixelFormat:static_cast&lt;MTLPixelFormat&gt;(newPixelFormat)];
+}
+
+void GPURenderPipelineDescriptor::setVertexFunction(RefPtr&lt;GPUFunction&gt; newFunction)
+{
+    ASSERT(m_renderPipelineDescriptor);
+    [m_renderPipelineDescriptor setVertexFunction:(id&lt;MTLFunction&gt;)newFunction-&gt;platformFunction()];
+}
+
+void GPURenderPipelineDescriptor::setFragmentFunction(RefPtr&lt;GPUFunction&gt; newFunction)
+{
+    ASSERT(m_renderPipelineDescriptor);
+    [m_renderPipelineDescriptor setFragmentFunction:(id&lt;MTLFunction&gt;)newFunction-&gt;platformFunction()];
+}
+
+Vector&lt;RefPtr&lt;GPURenderPipelineColorAttachmentDescriptor&gt;&gt; GPURenderPipelineDescriptor::colorAttachments()
+{
+    if (!m_renderPipelineDescriptor)
+        return Vector&lt;RefPtr&lt;GPURenderPipelineColorAttachmentDescriptor&gt;&gt;();
+
+    Vector&lt;RefPtr&lt;GPURenderPipelineColorAttachmentDescriptor&gt;&gt; platformColorAttachments;
+    platformColorAttachments.append(GPURenderPipelineColorAttachmentDescriptor::create([[m_renderPipelineDescriptor colorAttachments] objectAtIndexedSubscript:0]));
+    return platformColorAttachments;
+}
+
+void GPURenderPipelineDescriptor::reset()
+{
+    if (!m_renderPipelineDescriptor)
+        return;
+
+    [m_renderPipelineDescriptor reset];
+}
+
+MTLRenderPipelineDescriptor *GPURenderPipelineDescriptor::platformRenderPipelineDescriptor()
+{
+    return m_renderPipelineDescriptor.get();
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPURenderPipelineStateMetalmmfromrev213779trunkSourceWebCoreplatformgraphicscocoaGPUTextureMetalmm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPipelineStateMetal.mm (from rev 213779, trunk/Source/WebCore/platform/graphics/cocoa/GPUTextureMetal.mm) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPipelineStateMetal.mm                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPURenderPipelineStateMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;GPURenderPipelineState.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#import &quot;GPUDevice.h&quot;
+#import &quot;GPURenderPipelineDescriptor.h&quot;
+#import &quot;Logging.h&quot;
+
+#import &lt;Metal/Metal.h&gt;
+
+namespace WebCore {
+
+GPURenderPipelineState::GPURenderPipelineState(GPUDevice* device, GPURenderPipelineDescriptor* descriptor)
+{
+    LOG(WebGPU, &quot;GPURenderPipelineState::GPURenderPipelineState()&quot;);
+
+    if (!device || !device-&gt;platformDevice() || !descriptor || !descriptor-&gt;platformRenderPipelineDescriptor())
+        return;
+
+    m_renderPipelineState = adoptNS((MTLRenderPipelineState *)[device-&gt;platformDevice() newRenderPipelineStateWithDescriptor:descriptor-&gt;platformRenderPipelineDescriptor() error:nil]);
+}
+
+String GPURenderPipelineState::label() const
+{
+    if (!m_renderPipelineState)
+        return emptyString();
+
+    return [m_renderPipelineState label];
+}
+
+void GPURenderPipelineState::setLabel(const String&amp; label)
+{
+    ASSERT(m_renderPipelineState);
+    [m_renderPipelineState setLabel:label];
+}
+    
+MTLRenderPipelineState *GPURenderPipelineState::platformRenderPipelineState()
+{
+    return m_renderPipelineState.get();
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPUTextureDescriptorMetalmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cocoa/GPUTextureDescriptorMetal.mm (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPUTextureDescriptorMetal.mm        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPUTextureDescriptorMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -23,8 +23,8 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#include &quot;config.h&quot;
-#include &quot;GPUTextureDescriptor.h&quot;
</del><ins>+#import &quot;config.h&quot;
+#import &quot;GPUTextureDescriptor.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGPU)
</span><span class="cx"> 
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> {
</span><span class="cx">     LOG(WebGPU, &quot;GPUTextureDescriptor::GPUTextureDescriptor()&quot;);
</span><span class="cx"> 
</span><del>-    m_textureDescriptor = (MTLTextureDescriptor*)[MTLTextureDescriptor texture2DDescriptorWithPixelFormat:static_cast&lt;MTLPixelFormat&gt;(pixelFormat) width:width height:height mipmapped:mipmapped];
</del><ins>+    m_textureDescriptor = (MTLTextureDescriptor *)[MTLTextureDescriptor texture2DDescriptorWithPixelFormat:static_cast&lt;MTLPixelFormat&gt;(pixelFormat) width:width height:height mipmapped:mipmapped];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> unsigned long GPUTextureDescriptor::width() const
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx">     [m_textureDescriptor setUsage:newUsage];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-MTLTextureDescriptor* GPUTextureDescriptor::platformTextureDescriptor()
</del><ins>+MTLTextureDescriptor *GPUTextureDescriptor::platformTextureDescriptor()
</ins><span class="cx"> {
</span><span class="cx">     return m_textureDescriptor.get();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscocoaGPUTextureMetalmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/cocoa/GPUTextureMetal.mm (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/cocoa/GPUTextureMetal.mm        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/cocoa/GPUTextureMetal.mm        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -23,12 +23,13 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-#include &quot;config.h&quot;
-#include &quot;GPUTexture.h&quot;
</del><ins>+#import &quot;config.h&quot;
+#import &quot;GPUTexture.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGPU)
</span><span class="cx"> 
</span><span class="cx"> #import &quot;GPUDevice.h&quot;
</span><ins>+#import &quot;GPUDrawable.h&quot;
</ins><span class="cx"> #import &quot;GPUTextureDescriptor.h&quot;
</span><span class="cx"> #import &quot;Logging.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -43,16 +44,13 @@
</span><span class="cx">     if (!device || !device-&gt;platformDevice() || !descriptor || !descriptor-&gt;platformTextureDescriptor())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    m_texture = (MTLTexture*)[device-&gt;platformDevice() newTextureWithDescriptor:descriptor-&gt;platformTextureDescriptor()];
</del><ins>+    m_texture = adoptNS((MTLTexture *)[device-&gt;platformDevice() newTextureWithDescriptor:descriptor-&gt;platformTextureDescriptor()]);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-GPUTexture::GPUTexture(GPUTexture* other)
</del><ins>+GPUTexture::GPUTexture(GPUDrawable* other)
</ins><span class="cx"> {
</span><span class="cx">     LOG(WebGPU, &quot;GPUTexture::GPUTexture()&quot;);
</span><span class="cx"> 
</span><del>-    if (!other || !other-&gt;platformTexture())
-        return;
-
</del><span class="cx">     m_texture = other-&gt;platformTexture();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -74,7 +72,7 @@
</span><span class="cx">     return texture.height;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-MTLTexture* GPUTexture::platformTexture()
</del><ins>+MTLTexture *GPUTexture::platformTexture()
</ins><span class="cx"> {
</span><span class="cx">     return m_texture.get();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUBuffercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -28,8 +28,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGPU)
</span><span class="cx"> 
</span><del>-#import &quot;GPUDevice.h&quot;
-#import &quot;Logging.h&quot;
</del><ins>+#include &quot;GPUDevice.h&quot;
+#include &quot;Logging.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUBufferh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.h (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.h        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     WEBCORE_EXPORT RefPtr&lt;ArrayBuffer&gt; contents();
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    WEBCORE_EXPORT MTLBuffer* platformBuffer();
</del><ins>+    WEBCORE_EXPORT MTLBuffer *platformBuffer();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUCommandBuffercppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUBuffercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPUCommandBuffer.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUCommandBuffer.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUCommandBuffer.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPUCommandBuffer.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPUCommandQueue.h&quot;
+#include &quot;GPUDevice.h&quot;
+#include &quot;GPURenderCommandEncoder.h&quot;
+#include &quot;GPURenderPassDescriptor.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+RefPtr&lt;GPUCommandBuffer&gt; GPUCommandBuffer::create(GPUCommandQueue* queue)
+{
+    RefPtr&lt;GPUCommandBuffer&gt; buffer = adoptRef(new GPUCommandBuffer(queue));
+    return buffer;
+}
+
+GPUCommandBuffer::~GPUCommandBuffer()
+{
+    LOG(WebGPU, &quot;GPUCommandBuffer::~GPUCommandBuffer()&quot;);
+}
+
+void GPUCommandBuffer::commit()
+{
+}
+
+RefPtr&lt;GPURenderCommandEncoder&gt; GPUCommandBuffer::createRenderCommandEncoder(GPURenderPassDescriptor* descriptor)
+{
+    return GPURenderCommandEncoder::create(this, descriptor);
+}
+
+#if !PLATFORM(COCOA)
+void GPUCommandBuffer::presentDrawable(GPUDrawable*)
+{
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUCommandBufferhfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTextureh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPUCommandBuffer.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUCommandBuffer.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUCommandBuffer.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLCommandBuffer;
+#endif
+
+namespace WebCore {
+
+class GPUCommandQueue;
+class GPUDrawable;
+class GPURenderCommandEncoder;
+class GPURenderPassDescriptor;
+
+class GPUCommandBuffer : public RefCounted&lt;GPUCommandBuffer&gt; {
+public:
+    static RefPtr&lt;GPUCommandBuffer&gt; create(GPUCommandQueue*);
+    WEBCORE_EXPORT ~GPUCommandBuffer();
+
+    WEBCORE_EXPORT void commit();
+    WEBCORE_EXPORT void presentDrawable(GPUDrawable*);
+
+    WEBCORE_EXPORT RefPtr&lt;GPURenderCommandEncoder&gt; createRenderCommandEncoder(GPURenderPassDescriptor*);
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLCommandBuffer *platformCommandBuffer();
+#endif
+
+private:
+    GPUCommandBuffer(GPUCommandQueue*);
+    
+#if PLATFORM(COCOA)
+    RetainPtr&lt;MTLCommandBuffer&gt; m_commandBuffer;
+#endif
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUCommandQueuecppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUBuffercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPUCommandQueue.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUCommandQueue.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUCommandQueue.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPUCommandQueue.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPUCommandBuffer.h&quot;
+#include &quot;GPUDevice.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+RefPtr&lt;GPUCommandQueue&gt; GPUCommandQueue::create(GPUDevice* device)
+{
+    RefPtr&lt;GPUCommandQueue&gt; queue = adoptRef(new GPUCommandQueue(device));
+    return queue;
+}
+
+GPUCommandQueue::~GPUCommandQueue()
+{
+    LOG(WebGPU, &quot;GPUCommandQueue::~GPUCommandQueue()&quot;);
+}
+
+RefPtr&lt;GPUCommandBuffer&gt; GPUCommandQueue::createCommandBuffer()
+{
+    return GPUCommandBuffer::create(this);
+}
+
+#if !PLATFORM(COCOA)
+String GPUCommandQueue::label() const
+{
+    return emptyString();
+}
+
+void GPUCommandQueue::setLabel(const String&amp;)
+{
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUCommandQueuehfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPULibraryh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPUCommandQueue.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUCommandQueue.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUCommandQueue.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLCommandQueue;
+#endif
+
+namespace WebCore {
+
+class GPUCommandBuffer;
+class GPUDevice;
+
+class GPUCommandQueue : public RefCounted&lt;GPUCommandQueue&gt; {
+public:
+    static RefPtr&lt;GPUCommandQueue&gt; create(GPUDevice*);
+    WEBCORE_EXPORT ~GPUCommandQueue();
+
+    WEBCORE_EXPORT String label() const;
+    WEBCORE_EXPORT void setLabel(const String&amp;);
+
+    WEBCORE_EXPORT RefPtr&lt;GPUCommandBuffer&gt; createCommandBuffer();
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLCommandQueue *platformCommandQueue();
+#endif
+
+private:
+    GPUCommandQueue(GPUDevice*);
+    
+#if PLATFORM(COCOA)
+    RetainPtr&lt;MTLCommandQueue&gt; m_commandQueue;
+#endif
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUDepthStencilDescriptorcppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTexturecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilDescriptor.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilDescriptor.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilDescriptor.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPUDepthStencilDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPUTexture.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+RefPtr&lt;GPUDepthStencilDescriptor&gt; GPUDepthStencilDescriptor::create()
+{
+    RefPtr&lt;GPUDepthStencilDescriptor&gt; descriptor = adoptRef(new GPUDepthStencilDescriptor());
+    return descriptor;
+}
+
+GPUDepthStencilDescriptor::~GPUDepthStencilDescriptor()
+{
+    LOG(WebGPU, &quot;GPUDepthStencilDescriptor::~GPUDepthStencilDescriptor()&quot;);
+}
+
+#if !PLATFORM(COCOA)
+bool GPUDepthStencilDescriptor::depthWriteEnabled() const
+{
+    return false;
+}
+
+void GPUDepthStencilDescriptor::setDepthWriteEnabled(bool)
+{
+}
+
+GPUCompareFunction GPUDepthStencilDescriptor::depthCompareFunction() const
+{
+}
+
+void GPUDepthStencilDescriptor::setDepthCompareFunction(GPUCompareFunction)
+{
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUDepthStencilDescriptorhfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTextureh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilDescriptor.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilDescriptor.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilDescriptor.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPUEnums.h&quot;
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLDepthStencilDescriptor;
+#endif
+
+namespace WebCore {
+
+class GPUDepthStencilDescriptor : public RefCounted&lt;GPUDepthStencilDescriptor&gt; {
+public:
+    static RefPtr&lt;GPUDepthStencilDescriptor&gt; create();
+    WEBCORE_EXPORT ~GPUDepthStencilDescriptor();
+
+    WEBCORE_EXPORT bool depthWriteEnabled() const;
+    WEBCORE_EXPORT void setDepthWriteEnabled(bool);
+
+    WEBCORE_EXPORT GPUCompareFunction depthCompareFunction() const;
+    WEBCORE_EXPORT void setDepthCompareFunction(GPUCompareFunction);
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLDepthStencilDescriptor *platformDepthStencilDescriptor();
+#endif
+
+private:
+    GPUDepthStencilDescriptor();
+#if PLATFORM(COCOA)
+    RetainPtr&lt;MTLDepthStencilDescriptor&gt; m_depthStencilDescriptor;
+#endif
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUDepthStencilStatecppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUBuffercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilState.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilState.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilState.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPUDepthStencilState.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPUDepthStencilDescriptor.h&quot;
+#include &quot;GPUDevice.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+RefPtr&lt;GPUDepthStencilState&gt; GPUDepthStencilState::create(GPUDevice* device, GPUDepthStencilDescriptor* descriptor)
+{
+    RefPtr&lt;GPUDepthStencilState&gt; state = adoptRef(new GPUDepthStencilState(device, descriptor));
+    return state;
+}
+
+GPUDepthStencilState::~GPUDepthStencilState()
+{
+    LOG(WebGPU, &quot;GPUDepthStencilState::~GPUDepthStencilState()&quot;);
+}
+
+#if !PLATFORM(COCOA)
+String GPUDepthStencilState::label() const
+{
+    return emptyString();
+}
+
+void GPUDepthStencilState::setLabel(const String&amp;)
+{
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUDepthStencilStatehfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPULibraryh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilState.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilState.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUDepthStencilState.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLDepthStencilState;
+#endif
+
+namespace WebCore {
+
+class GPUDevice;
+class GPUDepthStencilDescriptor;
+
+class GPUDepthStencilState : public RefCounted&lt;GPUDepthStencilState&gt; {
+public:
+    static RefPtr&lt;GPUDepthStencilState&gt; create(GPUDevice*, GPUDepthStencilDescriptor*);
+    WEBCORE_EXPORT ~GPUDepthStencilState();
+
+    WEBCORE_EXPORT String label() const;
+    WEBCORE_EXPORT void setLabel(const String&amp;);
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLDepthStencilState *platformDepthStencilState();
+#endif
+
+private:
+    GPUDepthStencilState(GPUDevice*, GPUDepthStencilDescriptor*);
+    
+#if PLATFORM(COCOA)
+    RetainPtr&lt;MTLDepthStencilState&gt; m_depthStencilState;
+#endif
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUDevicecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gpu/GPUDevice.cpp (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUDevice.cpp        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUDevice.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -29,6 +29,8 @@
</span><span class="cx"> #if ENABLE(WEBGPU)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;GPUBuffer.h&quot;
</span><ins>+#include &quot;GPUCommandQueue.h&quot;
+#include &quot;GPUDrawable.h&quot;
</ins><span class="cx"> #include &quot;GPULibrary.h&quot;
</span><span class="cx"> #include &quot;GPUTexture.h&quot;
</span><span class="cx"> #include &quot;GPUTextureDescriptor.h&quot;
</span><span class="lines">@@ -56,6 +58,11 @@
</span><span class="cx">     LOG(WebGPU, &quot;GPUDevice::~GPUDevice()&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RefPtr&lt;GPUCommandQueue&gt; GPUDevice::createCommandQueue()
+{
+    return GPUCommandQueue::create(this);
+}
+
</ins><span class="cx"> RefPtr&lt;GPULibrary&gt; GPUDevice::createLibrary(const String&amp; sourceCode)
</span><span class="cx"> {
</span><span class="cx">     return GPULibrary::create(this, sourceCode);
</span><span class="lines">@@ -71,6 +78,11 @@
</span><span class="cx">     return GPUTexture::create(this, descriptor);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RefPtr&lt;GPUDrawable&gt; GPUDevice::getFramebuffer()
+{
+    return GPUDrawable::create(this);
+}
+
</ins><span class="cx"> #if !PLATFORM(COCOA)
</span><span class="cx"> 
</span><span class="cx"> GPUDevice::GPUDevice()
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUDeviceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gpu/GPUDevice.h (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUDevice.h        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUDevice.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -47,10 +47,8 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class GPUBuffer;
</span><del>-// FIXME: WebGPU - Stub implementation - not implemented yet.
</del><span class="cx"> class GPUCommandQueue;
</span><span class="cx"> class GPUDrawable;
</span><del>-// FIXME: WebGPU - End stub.
</del><span class="cx"> class GPULibrary;
</span><span class="cx"> class GPUTexture;
</span><span class="cx"> class GPUTextureDescriptor;
</span><span class="lines">@@ -69,15 +67,14 @@
</span><span class="cx"> 
</span><span class="cx">     WebGPULayer* layer() { return m_layer.get(); }
</span><span class="cx"> 
</span><ins>+    WEBCORE_EXPORT RefPtr&lt;GPUCommandQueue&gt; createCommandQueue();
</ins><span class="cx">     WEBCORE_EXPORT RefPtr&lt;GPULibrary&gt; createLibrary(const String&amp; sourceCode);
</span><span class="cx">     WEBCORE_EXPORT RefPtr&lt;GPUBuffer&gt; createBufferFromData(ArrayBufferView* data);
</span><span class="cx">     WEBCORE_EXPORT RefPtr&lt;GPUTexture&gt; createTexture(GPUTextureDescriptor*);
</span><span class="cx"> 
</span><del>-    // FIXME: WebGPU - Stub implementation - not implemented yet.
-    GPUCommandQueue* createCommandQueue() { return nullptr; }
-    GPUDrawable* getFramebuffer() { return nullptr; }
</del><ins>+    RefPtr&lt;GPUDrawable&gt; getFramebuffer();
+
</ins><span class="cx">     void markLayerComposited() { }
</span><del>-    // FIXME: WebGPU - End stub.
</del><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     GPUDevice();
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUDrawablecppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUBuffercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPUDrawable.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUDrawable.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUDrawable.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPUDrawable.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPUCommandBuffer.h&quot;
+#include &quot;GPUDevice.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+RefPtr&lt;GPUDrawable&gt; GPUDrawable::create(GPUDevice* device)
+{
+    RefPtr&lt;GPUDrawable&gt; drawable = adoptRef(new GPUDrawable(device));
+    return drawable;
+}
+
+GPUDrawable::~GPUDrawable()
+{
+    LOG(WebGPU, &quot;GPUDrawable::~GPUDrawable()&quot;);
+}
+
+#if !PLATFORM(COCOA)
+void GPUDrawable::release()
+{
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUDrawablehfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTextureh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPUDrawable.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUDrawable.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUDrawable.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLDrawable;
+OBJC_CLASS MTLTexture;
+#endif
+
+namespace WebCore {
+
+class GPUTexture;
+class GPUDevice;
+
+class GPUDrawable : public RefCounted&lt;GPUDrawable&gt; {
+public:
+    static RefPtr&lt;GPUDrawable&gt; create(GPUDevice*);
+    WEBCORE_EXPORT ~GPUDrawable();
+
+    WEBCORE_EXPORT void release();
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLDrawable *platformDrawable();
+    // FIXME: WebGPU - not all drawables should have this. Only the framebuffer.
+    WEBCORE_EXPORT MTLTexture *platformTexture();
+#endif
+
+private:
+    GPUDrawable(GPUDevice*);
+    
+#if PLATFORM(COCOA)
+    RetainPtr&lt;MTLDrawable&gt; m_drawable;
+#endif
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUEnumshfromrev213779trunkSourceWebCoreplatformgraphicscocoaGPUFunctionMetalmm"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPUEnums.h (from rev 213779, trunk/Source/WebCore/platform/graphics/cocoa/GPUFunctionMetal.mm) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUEnums.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUEnums.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+namespace WebCore {
+
+enum class GPUCompareFunction {
+    Never = 0,
+    Less = 1,
+    Equal = 2,
+    LessEqual = 3,
+    Greater = 4,
+    NotEqual = 5,
+    GreaterEqual = 6,
+    Always = 7
+};
+
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUFunctionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gpu/GPUFunction.h (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUFunction.h        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUFunction.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     WEBCORE_EXPORT String name() const;
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    WEBCORE_EXPORT MTLFunction* platformFunction();
</del><ins>+    WEBCORE_EXPORT MTLFunction *platformFunction();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPULibrarycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.cpp (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.cpp        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -28,9 +28,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGPU)
</span><span class="cx"> 
</span><del>-#import &quot;GPUDevice.h&quot;
-#import &quot;GPUFunction.h&quot;
-#import &quot;Logging.h&quot;
</del><ins>+#include &quot;GPUDevice.h&quot;
+#include &quot;GPUFunction.h&quot;
+#include &quot;Logging.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPULibraryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.h (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.h        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">     WEBCORE_EXPORT RefPtr&lt;GPUFunction&gt; functionWithName(const String&amp;);
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    WEBCORE_EXPORT MTLLibrary* platformLibrary();
</del><ins>+    WEBCORE_EXPORT MTLLibrary *platformLibrary();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderCommandEncodercppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPULibrarycpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderCommandEncoder.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderCommandEncoder.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderCommandEncoder.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,76 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPURenderCommandEncoder.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPUCommandBuffer.h&quot;
+#include &quot;GPURenderPassDescriptor.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+RefPtr&lt;GPURenderCommandEncoder&gt; GPURenderCommandEncoder::create(GPUCommandBuffer* buffer, GPURenderPassDescriptor* descriptor)
+{
+    RefPtr&lt;GPURenderCommandEncoder&gt; encoder = adoptRef(new GPURenderCommandEncoder(buffer, descriptor));
+    return encoder;
+}
+
+GPURenderCommandEncoder::~GPURenderCommandEncoder()
+{
+    LOG(WebGPU, &quot;GPURenderCommandEncoder::~GPURenderCommandEncoder()&quot;);
+}
+
+#if !PLATFORM(COCOA)
+void GPURenderCommandEncoder::setRenderPipelineState(GPURenderPipelineState*)
+{
+}
+
+void GPURenderCommandEncoder::setDepthStencilState(GPUDepthStencilState*)
+{
+}
+
+void GPURenderCommandEncoder::setVertexBuffer(GPUBuffer*, unsigned, unsigned)
+{
+}
+
+void GPURenderCommandEncoder::setFragmentBuffer(GPUBuffer*, unsigned, unsigned)
+{
+}
+
+void GPURenderCommandEncoder::drawPrimitives(unsigned, unsigned, unsigned)
+{
+}
+
+void GPURenderCommandEncoder::endEncoding()
+{
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderCommandEncoderhfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTextureh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderCommandEncoder.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderCommandEncoder.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderCommandEncoder.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,71 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLRenderCommandEncoder;
+#endif
+
+namespace WebCore {
+
+class GPUBuffer;
+class GPUCommandBuffer;
+class GPUDepthStencilState;
+class GPURenderPassDescriptor;
+class GPURenderPipelineState;
+
+class GPURenderCommandEncoder : public RefCounted&lt;GPURenderCommandEncoder&gt; {
+public:
+    static RefPtr&lt;GPURenderCommandEncoder&gt; create(GPUCommandBuffer*, GPURenderPassDescriptor*);
+    WEBCORE_EXPORT ~GPURenderCommandEncoder();
+
+    WEBCORE_EXPORT void setRenderPipelineState(GPURenderPipelineState*);
+    WEBCORE_EXPORT void setDepthStencilState(GPUDepthStencilState*);
+    WEBCORE_EXPORT void setVertexBuffer(GPUBuffer*, unsigned offset, unsigned index);
+    WEBCORE_EXPORT void setFragmentBuffer(GPUBuffer*, unsigned offset, unsigned index);
+    WEBCORE_EXPORT void drawPrimitives(unsigned type, unsigned start, unsigned count);
+    WEBCORE_EXPORT void endEncoding();
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLRenderCommandEncoder *platformRenderCommandEncoder();
+#endif
+
+private:
+    GPURenderCommandEncoder(GPUCommandBuffer*, GPURenderPassDescriptor*);
+    
+#if PLATFORM(COCOA)
+    RetainPtr&lt;MTLRenderCommandEncoder&gt; m_renderCommandEncoder;
+#endif
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPassAttachmentDescriptorcppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTexturecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassAttachmentDescriptor.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassAttachmentDescriptor.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassAttachmentDescriptor.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPURenderPassAttachmentDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPUTexture.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+GPURenderPassAttachmentDescriptor::~GPURenderPassAttachmentDescriptor()
+{
+    LOG(WebGPU, &quot;GPURenderPassAttachmentDescriptor::~GPURenderPassAttachmentDescriptor()&quot;);
+}
+
+#if !PLATFORM(COCOA)
+GPURenderPassAttachmentDescriptor::GPURenderPassAttachmentDescriptor()
+{
+    LOG(WebGPU, &quot;GPURenderPassAttachmentDescriptor::GPURenderPassAttachmentDescriptor()&quot;);
+}
+
+unsigned long GPURenderPassAttachmentDescriptor::loadAction() const
+{
+    return 0;
+}
+
+void GPURenderPassAttachmentDescriptor::setLoadAction(unsigned long)
+{
+}
+
+unsigned long GPURenderPassAttachmentDescriptor::storeAction() const
+{
+    return 0;
+}
+
+void GPURenderPassAttachmentDescriptor::setStoreAction(unsigned long)
+{
+}
+
+void GPURenderPassAttachmentDescriptor::setTexture(RefPtr&lt;GPUTexture&gt;)
+{
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPassAttachmentDescriptorhfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTextureh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassAttachmentDescriptor.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassAttachmentDescriptor.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassAttachmentDescriptor.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLRenderPassAttachmentDescriptor;
+#endif
+
+namespace WebCore {
+
+class GPUTexture;
+
+class GPURenderPassAttachmentDescriptor : public RefCounted&lt;GPURenderPassAttachmentDescriptor&gt; {
+public:
+    WEBCORE_EXPORT ~GPURenderPassAttachmentDescriptor();
+
+    WEBCORE_EXPORT unsigned long loadAction() const;
+    WEBCORE_EXPORT void setLoadAction(unsigned long);
+
+    WEBCORE_EXPORT unsigned long storeAction() const;
+    WEBCORE_EXPORT void setStoreAction(unsigned long);
+
+    WEBCORE_EXPORT void setTexture(RefPtr&lt;GPUTexture&gt;);
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLRenderPassAttachmentDescriptor *platformRenderPassAttachmentDescriptor();
+#endif
+
+protected:
+#if PLATFORM(COCOA)
+    GPURenderPassAttachmentDescriptor(MTLRenderPassAttachmentDescriptor *);
+    RetainPtr&lt;MTLRenderPassAttachmentDescriptor&gt; m_renderPassAttachmentDescriptor;
+#else
+    GPURenderPassAttachmentDescriptor();
+#endif
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPassColorAttachmentDescriptorcppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUDevicecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUDevice.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPURenderPassColorAttachmentDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPURenderPassAttachmentDescriptor.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+#if !PLATFORM(COCOA)
+RefPtr&lt;GPURenderPassColorAttachmentDescriptor&gt; GPURenderPassColorAttachmentDescriptor::create()
+{
+    RefPtr&lt;GPURenderPassColorAttachmentDescriptor&gt; descriptor = adoptRef(new GPURenderPassColorAttachmentDescriptor());
+    return descriptor;
+}
+
+GPURenderPassColorAttachmentDescriptor::GPURenderPassColorAttachmentDescriptor()
+    : GPURenderPassAttachmentDescriptor()
+{
+    LOG(WebGPU, &quot;GPURenderPassColorAttachmentDescriptor::GPURenderPassColorAttachmentDescriptor()&quot;);
+}
+#endif
+
+GPURenderPassColorAttachmentDescriptor::~GPURenderPassColorAttachmentDescriptor()
+{
+    LOG(WebGPU, &quot;GPURenderPassColorAttachmentDescriptor::~GPURenderPassColorAttachmentDescriptor()&quot;);
+}
+
+#if !PLATFORM(COCOA)
+Vector&lt;float&gt; GPURenderPassColorAttachmentDescriptor::clearColor() const
+{
+    return Vector&lt;float&gt;();
+}
+
+void GPURenderPassColorAttachmentDescriptor::setClearColor(const Vector&lt;float&gt;&amp;)
+{
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPassColorAttachmentDescriptorhfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTextureh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPURenderPassAttachmentDescriptor.h&quot;
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/Vector.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLRenderPassColorAttachmentDescriptor;
+#endif
+
+namespace WebCore {
+
+class GPURenderPassColorAttachmentDescriptor : public GPURenderPassAttachmentDescriptor {
+public:
+#if PLATFORM(COCOA)
+    static RefPtr&lt;GPURenderPassColorAttachmentDescriptor&gt; create(MTLRenderPassColorAttachmentDescriptor *);
+#else
+    static RefPtr&lt;GPURenderPassColorAttachmentDescriptor&gt; create();
+#endif
+    WEBCORE_EXPORT ~GPURenderPassColorAttachmentDescriptor();
+
+    WEBCORE_EXPORT Vector&lt;float&gt; clearColor() const;
+    WEBCORE_EXPORT void setClearColor(const Vector&lt;float&gt;&amp;);
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLRenderPassColorAttachmentDescriptor *platformRenderPassColorAttachmentDescriptor();
+#endif
+
+private:
+#if PLATFORM(COCOA)
+    GPURenderPassColorAttachmentDescriptor(MTLRenderPassColorAttachmentDescriptor *);
+#else
+    GPURenderPassColorAttachmentDescriptor();
+#endif
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPassDepthAttachmentDescriptorcppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTexturecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPURenderPassDepthAttachmentDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPURenderPassAttachmentDescriptor.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+#if !PLATFORM(COCOA)
+RefPtr&lt;GPURenderPassDepthAttachmentDescriptor&gt; GPURenderPassDepthAttachmentDescriptor::create()
+{
+    RefPtr&lt;GPURenderPassDepthAttachmentDescriptor&gt; descriptor = adoptRef(new GPURenderPassDepthAttachmentDescriptor());
+    return descriptor;
+}
+
+GPURenderPassDepthAttachmentDescriptor::GPURenderPassDepthAttachmentDescriptor()
+    : GPURenderPassAttachmentDescriptor()
+{
+    LOG(WebGPU, &quot;GPURenderPassDepthAttachmentDescriptor::GPURenderPassDepthAttachmentDescriptor()&quot;);
+}
+#endif
+
+GPURenderPassDepthAttachmentDescriptor::~GPURenderPassDepthAttachmentDescriptor()
+{
+    LOG(WebGPU, &quot;GPURenderPassDepthAttachmentDescriptor::~GPURenderPassDepthAttachmentDescriptor()&quot;);
+}
+
+#if !PLATFORM(COCOA)
+double GPURenderPassDepthAttachmentDescriptor::clearDepth() const
+{
+    return 0;
+}
+
+void GPURenderPassDepthAttachmentDescriptor::setClearDepth(double)
+{
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPassDepthAttachmentDescriptorhfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTextureh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPURenderPassAttachmentDescriptor.h&quot;
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/Vector.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLRenderPassDepthAttachmentDescriptor;
+#endif
+
+namespace WebCore {
+
+class GPURenderPassDepthAttachmentDescriptor : public GPURenderPassAttachmentDescriptor {
+public:
+#if PLATFORM(COCOA)
+    static RefPtr&lt;GPURenderPassDepthAttachmentDescriptor&gt; create(MTLRenderPassDepthAttachmentDescriptor *);
+#else
+    static RefPtr&lt;GPURenderPassDepthAttachmentDescriptor&gt; create();
+#endif
+    WEBCORE_EXPORT ~GPURenderPassDepthAttachmentDescriptor();
+
+    double clearDepth() const;
+    void setClearDepth(double);
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLRenderPassDepthAttachmentDescriptor *platformRenderPassDepthAttachmentDescriptor();
+#endif
+
+private:
+#if PLATFORM(COCOA)
+    GPURenderPassDepthAttachmentDescriptor(MTLRenderPassDepthAttachmentDescriptor *);
+#else
+    GPURenderPassDepthAttachmentDescriptor();
+#endif
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPassDescriptorcppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUBuffercpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDescriptor.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUBuffer.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDescriptor.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDescriptor.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPURenderPassDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPURenderPassDepthAttachmentDescriptor.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+RefPtr&lt;GPURenderPassDescriptor&gt; GPURenderPassDescriptor::create()
+{
+    RefPtr&lt;GPURenderPassDescriptor&gt; descriptor = adoptRef(new GPURenderPassDescriptor());
+    return descriptor;
+}
+
+GPURenderPassDescriptor::~GPURenderPassDescriptor()
+{
+    LOG(WebGPU, &quot;GPURenderPassDescriptor::~GPURenderPassDescriptor()&quot;);
+}
+
+#if !PLATFORM(COCOA)
+RefPtr&lt;GPURenderPassDepthAttachmentDescriptor&gt; GPURenderPassDescriptor::depthAttachment()
+{
+    return nullptr;
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPassDescriptorhfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTextureh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDescriptor.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDescriptor.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassDescriptor.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/Vector.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLRenderPassDescriptor;
+#endif
+
+namespace WebCore {
+
+class GPURenderPassColorAttachmentDescriptor;
+class GPURenderPassDepthAttachmentDescriptor;
+
+class GPURenderPassDescriptor : public RefCounted&lt;GPURenderPassDescriptor&gt; {
+public:
+    static RefPtr&lt;GPURenderPassDescriptor&gt; create();
+    WEBCORE_EXPORT ~GPURenderPassDescriptor();
+
+    Vector&lt;RefPtr&lt;GPURenderPassColorAttachmentDescriptor&gt;&gt; colorAttachments();
+    RefPtr&lt;GPURenderPassDepthAttachmentDescriptor&gt; depthAttachment();
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLRenderPassDescriptor *platformRenderPassDescriptor();
+#endif
+
+private:
+    GPURenderPassDescriptor();
+
+#if PLATFORM(COCOA)
+    RetainPtr&lt;MTLRenderPassDescriptor&gt; m_renderPassDescriptor;
+#endif
+    RefPtr&lt;GPURenderPassDepthAttachmentDescriptor&gt; m_depthAttachment;
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPipelineColorAttachmentDescriptorcppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTexturecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPURenderPipelineColorAttachmentDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPUTexture.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+GPURenderPipelineColorAttachmentDescriptor::~GPURenderPipelineColorAttachmentDescriptor()
+{
+    LOG(WebGPU, &quot;GPURenderPipelineColorAttachmentDescriptor::~GPURenderPipelineColorAttachmentDescriptor()&quot;);
+}
+
+#if !PLATFORM(COCOA)
+GPURenderPipelineColorAttachmentDescriptor::GPURenderPipelineColorAttachmentDescriptor()
+{
+    LOG(WebGPU, &quot;GPURenderPipelineColorAttachmentDescriptor::GPURenderPipelineColorAttachmentDescriptor()&quot;);
+}
+
+unsigned long GPURenderPipelineColorAttachmentDescriptor::pixelFormat() const
+{
+    return 0;
+}
+
+void GPURenderPipelineColorAttachmentDescriptor::setPixelFormat(unsigned long)
+{
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPipelineColorAttachmentDescriptorhfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUTextureh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLRenderPipelineColorAttachmentDescriptor;
+#endif
+
+namespace WebCore {
+
+class GPUTexture;
+
+class GPURenderPipelineColorAttachmentDescriptor : public RefCounted&lt;GPURenderPipelineColorAttachmentDescriptor&gt; {
+public:
+#if PLATFORM(COCOA)
+    static RefPtr&lt;GPURenderPipelineColorAttachmentDescriptor&gt; create(MTLRenderPipelineColorAttachmentDescriptor *);
+#else
+    static RefPtr&lt;GPURenderPipelineColorAttachmentDescriptor&gt; create();
+#endif
+
+    WEBCORE_EXPORT ~GPURenderPipelineColorAttachmentDescriptor();
+
+    WEBCORE_EXPORT unsigned long pixelFormat() const;
+    WEBCORE_EXPORT void setPixelFormat(unsigned long);
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLRenderPipelineColorAttachmentDescriptor *platformRenderPipelineColorAttachmentDescriptor();
+#endif
+
+protected:
+#if PLATFORM(COCOA)
+    GPURenderPipelineColorAttachmentDescriptor(MTLRenderPipelineColorAttachmentDescriptor *);
+    RetainPtr&lt;MTLRenderPipelineColorAttachmentDescriptor&gt; m_renderPipelineColorAttachmentDescriptor;
+#else
+    GPURenderPipelineColorAttachmentDescriptor();
+#endif
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPipelineDescriptorcppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPUDevicecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineDescriptor.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPUDevice.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineDescriptor.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineDescriptor.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,75 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPURenderPipelineDescriptor.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPUFunction.h&quot;
+#include &quot;GPURenderPipelineColorAttachmentDescriptor.h&quot;
+#include &quot;GPUTexture.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+RefPtr&lt;GPURenderPipelineDescriptor&gt; GPURenderPipelineDescriptor::create()
+{
+    RefPtr&lt;GPURenderPipelineDescriptor&gt; descriptor = adoptRef(new GPURenderPipelineDescriptor());
+    return descriptor;
+}
+
+GPURenderPipelineDescriptor::~GPURenderPipelineDescriptor()
+{
+    LOG(WebGPU, &quot;GPURenderPipelineDescriptor::~GPURenderPipelineDescriptor()&quot;);
+}
+
+#if !PLATFORM(COCOA)
+unsigned long GPURenderPipelineDescriptor::depthAttachmentPixelFormat() const
+{
+    return false;
+}
+
+void GPURenderPipelineDescriptor::setDepthAttachmentPixelFormat(unsigned long)
+{
+}
+
+void GPURenderPipelineDescriptor::setVertexFunction(RefPtr&lt;GPUFunction&gt;)
+{
+}
+
+void GPURenderPipelineDescriptor::setFragmentFunction(RefPtr&lt;GPUFunction&gt;)
+{
+}
+
+Vector&lt;RefPtr&lt;GPURenderPipelineColorAttachmentDescriptor&gt;&gt; GPURenderPipelineDescriptor::colorAttachments()
+{
+    return Vector&lt;RefPtr&lt;GPURenderPipelineColorAttachmentDescriptor&gt;&gt;();
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPipelineDescriptorhfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPULibraryh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineDescriptor.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineDescriptor.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineDescriptor.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPUEnums.h&quot;
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/Vector.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLRenderPipelineDescriptor;
+#endif
+
+namespace WebCore {
+
+class GPUFunction;
+class GPURenderPipelineColorAttachmentDescriptor;
+
+class GPURenderPipelineDescriptor : public RefCounted&lt;GPURenderPipelineDescriptor&gt; {
+public:
+    static RefPtr&lt;GPURenderPipelineDescriptor&gt; create();
+    WEBCORE_EXPORT ~GPURenderPipelineDescriptor();
+
+    WEBCORE_EXPORT void setVertexFunction(RefPtr&lt;GPUFunction&gt;);
+    WEBCORE_EXPORT void setFragmentFunction(RefPtr&lt;GPUFunction&gt;);
+
+    WEBCORE_EXPORT unsigned long depthAttachmentPixelFormat() const;
+    WEBCORE_EXPORT void setDepthAttachmentPixelFormat(unsigned long);
+
+    WEBCORE_EXPORT Vector&lt;RefPtr&lt;GPURenderPipelineColorAttachmentDescriptor&gt;&gt; colorAttachments();
+
+    WEBCORE_EXPORT void reset();
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLRenderPipelineDescriptor *platformRenderPipelineDescriptor();
+#endif
+
+private:
+    GPURenderPipelineDescriptor();
+#if PLATFORM(COCOA)
+    RetainPtr&lt;MTLRenderPipelineDescriptor&gt; m_renderPipelineDescriptor;
+#endif
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPipelineStatecppfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPULibrarycpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineState.cpp (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.cpp) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineState.cpp                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineState.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;GPURenderPipelineState.h&quot;
+
+#if ENABLE(WEBGPU)
+
+#include &quot;GPUDevice.h&quot;
+#include &quot;GPURenderPipelineDescriptor.h&quot;
+#include &quot;Logging.h&quot;
+
+namespace WebCore {
+
+RefPtr&lt;GPURenderPipelineState&gt; GPURenderPipelineState::create(GPUDevice* device, GPURenderPipelineDescriptor* descriptor)
+{
+    RefPtr&lt;GPURenderPipelineState&gt; state = adoptRef(new GPURenderPipelineState(device, descriptor));
+    return state;
+}
+
+GPURenderPipelineState::~GPURenderPipelineState()
+{
+    LOG(WebGPU, &quot;GPURenderPipelineState::~GPURenderPipelineState()&quot;);
+}
+
+#if !PLATFORM(COCOA)
+String GPURenderPipelineState::label() const
+{
+    return emptyString();
+}
+
+void GPURenderPipelineState::setLabel(const String&amp;)
+{
+}
+#endif
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPURenderPipelineStatehfromrev213779trunkSourceWebCoreplatformgraphicsgpuGPULibraryh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineState.h (from rev 213779, trunk/Source/WebCore/platform/graphics/gpu/GPULibrary.h) (0 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineState.h                                (rev 0)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPURenderPipelineState.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBGPU)
+
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+#include &lt;wtf/RetainPtr.h&gt;
+#include &lt;wtf/text/WTFString.h&gt;
+
+#if PLATFORM(COCOA)
+OBJC_CLASS MTLRenderPipelineState;
+#endif
+
+namespace WebCore {
+
+class GPUDevice;
+class GPURenderPipelineDescriptor;
+
+class GPURenderPipelineState : public RefCounted&lt;GPURenderPipelineState&gt; {
+public:
+    static RefPtr&lt;GPURenderPipelineState&gt; create(GPUDevice*, GPURenderPipelineDescriptor*);
+    WEBCORE_EXPORT ~GPURenderPipelineState();
+
+    WEBCORE_EXPORT String label() const;
+    WEBCORE_EXPORT void setLabel(const String&amp;);
+
+#if PLATFORM(COCOA)
+    WEBCORE_EXPORT MTLRenderPipelineState *platformRenderPipelineState();
+#endif
+
+private:
+    GPURenderPipelineState(GPUDevice*, GPURenderPipelineDescriptor*);
+    
+#if PLATFORM(COCOA)
+    RetainPtr&lt;MTLRenderPipelineState&gt; m_renderPipelineState;
+#endif
+};
+    
+} // namespace WebCore
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUTexturecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.cpp (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.cpp        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -28,8 +28,9 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGPU)
</span><span class="cx"> 
</span><del>-#import &quot;GPUDevice.h&quot;
-#import &quot;Logging.h&quot;
</del><ins>+#include &quot;GPUDevice.h&quot;
+#include &quot;GPUDrawable.h&quot;
+#include &quot;Logging.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="lines">@@ -39,7 +40,7 @@
</span><span class="cx">     return texture;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RefPtr&lt;GPUTexture&gt; GPUTexture::createFromExistingTexture(GPUTexture* other)
</del><ins>+RefPtr&lt;GPUTexture&gt; GPUTexture::createFromDrawable(GPUDrawable* other)
</ins><span class="cx"> {
</span><span class="cx">     RefPtr&lt;GPUTexture&gt; texture = adoptRef(new GPUTexture(other));
</span><span class="cx">     return texture;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUTextureh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUTexture.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -38,12 +38,14 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class GPUDevice;
</span><ins>+class GPUDrawable;
</ins><span class="cx"> class GPUTextureDescriptor;
</span><span class="cx"> 
</span><span class="cx"> class GPUTexture : public RefCounted&lt;GPUTexture&gt; {
</span><span class="cx"> public:
</span><span class="cx">     static RefPtr&lt;GPUTexture&gt; create(GPUDevice*, GPUTextureDescriptor*);
</span><del>-    static RefPtr&lt;GPUTexture&gt; createFromExistingTexture(GPUTexture*);
</del><ins>+    static RefPtr&lt;GPUTexture&gt; createFromDrawable(GPUDrawable*);
+
</ins><span class="cx">     WEBCORE_EXPORT ~GPUTexture();
</span><span class="cx"> 
</span><span class="cx">     WEBCORE_EXPORT unsigned long width() const;
</span><span class="lines">@@ -50,12 +52,12 @@
</span><span class="cx">     WEBCORE_EXPORT unsigned long height() const;
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    WEBCORE_EXPORT MTLTexture* platformTexture();
</del><ins>+    WEBCORE_EXPORT MTLTexture *platformTexture();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     GPUTexture(GPUDevice*, GPUTextureDescriptor*);
</span><del>-    GPUTexture(GPUTexture*);
</del><ins>+    GPUTexture(GPUDrawable*);
</ins><span class="cx">     
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx">     RetainPtr&lt;MTLTexture&gt; m_texture;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUTextureDescriptorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gpu/GPUTextureDescriptor.cpp (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUTextureDescriptor.cpp        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUTextureDescriptor.cpp        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(WEBGPU)
</span><span class="cx"> 
</span><del>-#import &quot;Logging.h&quot;
</del><ins>+#include &quot;Logging.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicsgpuGPUTextureDescriptorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/gpu/GPUTextureDescriptor.h (213779 => 213780)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/gpu/GPUTextureDescriptor.h        2017-03-13 03:16:43 UTC (rev 213779)
+++ trunk/Source/WebCore/platform/graphics/gpu/GPUTextureDescriptor.h        2017-03-13 03:40:55 UTC (rev 213780)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx">     WEBCORE_EXPORT void setUsage(unsigned long);
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    WEBCORE_EXPORT MTLTextureDescriptor* platformTextureDescriptor();
</del><ins>+    WEBCORE_EXPORT MTLTextureDescriptor *platformTextureDescriptor();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre>
</div>
</div>

</body>
</html>