[WebGPU] Begin implementation of WebGPURenderPassEncoder and barebones WebGPURenderPa...
authorjustin_fan@apple.com <justin_fan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Nov 2018 20:53:17 +0000 (20:53 +0000)
committerjustin_fan@apple.com <justin_fan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Nov 2018 20:53:17 +0000 (20:53 +0000)
commit36ee5ae19e004db7569bf869d73750ecd9ac4eda
treea0acfd5eaa46cb60d7405ed3800d7451a7593bf9
parentec00dcd5ae314985a3a2322b7c7a46672c957e3f
[WebGPU] Begin implementation of WebGPURenderPassEncoder and barebones WebGPURenderPassDescriptor
https://bugs.webkit.org/show_bug.cgi?id=191990

Reviewed by Dean Jackson.

Source/WebCore:

Begin implementation of WebGPURenderPassEncoder and its parent interface, WebGPUProgrammablePassEncoder.
Also add code to allow creation of a primitive WebGPURenderPassDescriptor with the sole purpose of providing
a WebGPUTextureView reference to the render pass creation function, WebGPUCommandBuffer::beginRenderPass().

Test: webgpu/render-passes.html

* CMakeLists.txt:
* DerivedSources.make:
* Modules/webgpu/WebGPUCommandBuffer.cpp:
(WebCore::WebGPUCommandBuffer::WebGPUCommandBuffer):
(WebCore::WebGPUCommandBuffer::beginRenderPass): Added. Returns a WebGPURenderPassEncoder upon success.
* Modules/webgpu/WebGPUCommandBuffer.h:
* Modules/webgpu/WebGPUCommandBuffer.idl:
* Modules/webgpu/WebGPUProgrammablePassEncoder.cpp: Added.
* Modules/webgpu/WebGPUProgrammablePassEncoder.h: Added.
* Modules/webgpu/WebGPUProgrammablePassEncoder.idl: Added. Empty (for now) interface parenting WebGPURenderPassEncoder.
* Modules/webgpu/WebGPURenderPassDescriptor.h:
* Modules/webgpu/WebGPURenderPassDescriptor.idl: Added. Directly handles a WebGPUTextureView attachment; all other color attachment properties set by implementation for now.
* Modules/webgpu/WebGPURenderPassEncoder.cpp: Added.
(WebCore::WebGPURenderPassEncoder::create):
(WebCore::WebGPURenderPassEncoder::WebGPURenderPassEncoder):
(WebCore::WebGPURenderPassEncoder::passEncoder const):
* Modules/webgpu/WebGPURenderPassEncoder.h: Added. Interface to GPURenderPassEncoder.
* Modules/webgpu/WebGPURenderPassEncoder.idl: Added. Allows WebGPU developer to encode commands for the WebGPUCommandBuffer.
* Modules/webgpu/WebGPUTextureView.cpp:
(WebCore::WebGPUTextureView::WebGPUTextureView):
* Modules/webgpu/WebGPUTextureView.h:
(WebCore::WebGPUTextureView::texture):
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* platform/graphics/gpu/GPUCommandBuffer.h:
(WebCore::GPUCommandBuffer::platformCommandBuffer const):
* platform/graphics/gpu/GPUProgrammablePassEncoder.h: Added. Base class for GPURenderPassEncoder.
* platform/graphics/gpu/GPURenderPassDescriptor.h: Added.
* platform/graphics/gpu/GPURenderPassEncoder.h: Added. Wrapper class for MTLRenderCommandEncoder.
* platform/graphics/gpu/GPUTexture.h:
(WebCore::GPUTexture::platformTexture const):
* platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm: Added.
* platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm: Added.
(WebCore::GPURenderPassEncoder::create): Creates the backing MTLRenderCommandEncoder; returns null if this fails.
(WebCore::GPURenderPassEncoder::GPURenderPassEncoder):
(WebCore::GPURenderPassEncoder::~GPURenderPassEncoder): End encoding before destroying the MTLCommandEncoder to prevent an exception.
(WebCore::GPURenderPassEncoder::platformPassEncoder const):

LayoutTests:

Add tests to ensure proper WebGPURenderPassEncoder creation. To be updated as WebGPURenderPassDescriptor is updated.

* webgpu/js/basic-webgpu-functions.js:
(render):
* webgpu/render-passes-expected.txt: Added.
* webgpu/render-passes.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@238629 268f45cc-cd09-0410-ab3c-d52691b4dbfc
31 files changed:
LayoutTests/ChangeLog
LayoutTests/webgpu/js/basic-webgpu-functions.js
LayoutTests/webgpu/render-passes-expected.txt [new file with mode: 0644]
LayoutTests/webgpu/render-passes.html [new file with mode: 0644]
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/DerivedSources.make
Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.cpp
Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.h
Source/WebCore/Modules/webgpu/WebGPUCommandBuffer.idl
Source/WebCore/Modules/webgpu/WebGPUProgrammablePassEncoder.cpp [new file with mode: 0644]
Source/WebCore/Modules/webgpu/WebGPUProgrammablePassEncoder.h [new file with mode: 0644]
Source/WebCore/Modules/webgpu/WebGPUProgrammablePassEncoder.idl [new file with mode: 0644]
Source/WebCore/Modules/webgpu/WebGPURenderPassDescriptor.h [new file with mode: 0644]
Source/WebCore/Modules/webgpu/WebGPURenderPassDescriptor.idl [new file with mode: 0644]
Source/WebCore/Modules/webgpu/WebGPURenderPassEncoder.cpp [new file with mode: 0644]
Source/WebCore/Modules/webgpu/WebGPURenderPassEncoder.h [new file with mode: 0644]
Source/WebCore/Modules/webgpu/WebGPURenderPassEncoder.idl [new file with mode: 0644]
Source/WebCore/Modules/webgpu/WebGPUTextureView.cpp
Source/WebCore/Modules/webgpu/WebGPUTextureView.h
Source/WebCore/Sources.txt
Source/WebCore/SourcesCocoa.txt
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/bindings/js/WebCoreBuiltinNames.h
Source/WebCore/platform/graphics/gpu/GPUCommandBuffer.h
Source/WebCore/platform/graphics/gpu/GPUProgrammablePassEncoder.h [new file with mode: 0644]
Source/WebCore/platform/graphics/gpu/GPURenderPassDescriptor.h [new file with mode: 0644]
Source/WebCore/platform/graphics/gpu/GPURenderPassEncoder.h [new file with mode: 0644]
Source/WebCore/platform/graphics/gpu/GPUTexture.h
Source/WebCore/platform/graphics/gpu/cocoa/GPUProgrammablePassEncoderMetal.mm [new file with mode: 0644]
Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm [new file with mode: 0644]