Changeset 244093 in webkit
- Timestamp:
- Apr 9, 2019, 1:03:18 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 8 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/webgpu/blend-color-triangle-strip-expected.html (added)
-
LayoutTests/webgpu/blend-color-triangle-strip.html (added)
-
LayoutTests/webgpu/js/webgpu-functions.js (modified) (1 diff)
-
LayoutTests/webgpu/viewport-scissor-rect-triangle-strip-expected.html (added)
-
LayoutTests/webgpu/viewport-scissor-rect-triangle-strip.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/Modules/webgpu/WebGPURenderPassEncoder.cpp (modified) (2 diffs)
-
Source/WebCore/Modules/webgpu/WebGPURenderPassEncoder.h (modified) (2 diffs)
-
Source/WebCore/Modules/webgpu/WebGPURenderPassEncoder.idl (modified) (2 diffs)
-
Source/WebCore/platform/graphics/gpu/GPURenderPassEncoder.h (modified) (2 diffs)
-
Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r244087 r244093 1 2019-04-09 Justin Fan <justin_fan@apple.com> 2 3 [Web GPU] GPURenderPassEncoder updates: setBlendColor, setViewport, setScissorRect 4 https://bugs.webkit.org/show_bug.cgi?id=196719 5 6 Reviewed by Myles C. Maxfield. 7 8 Add blend-color-triangle-strip to set and blend with a custom blend color on the renderpass encoder. 9 Add viewport-scissor-rect-triangle-strip to draw a checkerboard by restricting the drawing viewport or scissor rectangle. 10 11 * webgpu/blend-color-triangle-strip.html: Added. 12 * webgpu/js/webgpu-functions.js: 13 (beginBasicRenderPass): 14 * webgpu/viewport-scissor-rect-triangle-strip-expected.html: Added. 15 * webgpu/viewport-scissor-rect-triangle-strip.html: Added. 16 1 17 2019-04-09 Devin Rousso <drousso@apple.com> 2 18 -
trunk/LayoutTests/webgpu/js/webgpu-functions.js
r243755 r244093 88 88 storeOp: "store", 89 89 clearColor: { r: 1.0, g: 0, b: 0, a: 1.0 } 90 } 90 }; 91 91 92 92 // FIXME: Flesh out the rest of WebGPURenderPassDescriptor. -
trunk/Source/WebCore/ChangeLog
r244092 r244093 1 2019-04-09 Justin Fan <justin_fan@apple.com> 2 3 [Web GPU] GPURenderPassEncoder updates: setBlendColor, setViewport, setScissorRect 4 https://bugs.webkit.org/show_bug.cgi?id=196719 5 6 Reviewed by Myles C. Maxfield. 7 8 Implement setBlendColor, setViewport, and setScissorRect for GPURenderPassEncoder. 9 10 Tests: webgpu/viewport-scissor-rect-triangle-strip.html, webgpu/blend-color-triangle-strip.html 11 12 * Modules/webgpu/WebGPURenderPassEncoder.cpp: 13 (WebCore::WebGPURenderPassEncoder::setBlendColor): 14 (WebCore::WebGPURenderPassEncoder::setViewport): 15 (WebCore::WebGPURenderPassEncoder::setScissorRect): 16 * Modules/webgpu/WebGPURenderPassEncoder.h: 17 * Modules/webgpu/WebGPURenderPassEncoder.idl: 18 * platform/graphics/gpu/GPURenderPassEncoder.h: 19 * platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm: 20 (WebCore::GPURenderPassEncoder::setBlendColor): 21 (WebCore::GPURenderPassEncoder::setViewport): 22 (WebCore::GPURenderPassEncoder::setScissorRect): 23 1 24 2019-04-09 Andy Estes <aestes@apple.com> 2 25 -
trunk/Source/WebCore/Modules/webgpu/WebGPURenderPassEncoder.cpp
r243658 r244093 29 29 #if ENABLE(WEBGPU) 30 30 31 #include "GPUColor.h" 31 32 #include "GPULimits.h" 32 33 #include "GPUProgrammablePassEncoder.h" … … 59 60 } 60 61 m_passEncoder->setPipeline(makeRef(*pipeline.renderPipeline())); 62 } 63 64 void WebGPURenderPassEncoder::setBlendColor(const GPUColor& color) 65 { 66 if (!m_passEncoder) { 67 LOG(WebGPU, "GPURenderPassEncoder::setBlendColor(): Invalid operation!"); 68 return; 69 } 70 m_passEncoder->setBlendColor(color); 71 } 72 73 void WebGPURenderPassEncoder::setViewport(float x, float y, float width, float height, float minDepth, float maxDepth) 74 { 75 if (!m_passEncoder) { 76 LOG(WebGPU, "GPURenderPassEncoder::setViewport(): Invalid operation!"); 77 return; 78 } 79 m_passEncoder->setViewport(x, y, width, height, minDepth, maxDepth); 80 } 81 82 void WebGPURenderPassEncoder::setScissorRect(unsigned x, unsigned y, unsigned width, unsigned height) 83 { 84 if (!m_passEncoder) { 85 LOG(WebGPU, "GPURenderPassEncoder::setScissorRect(): Invalid operation!"); 86 return; 87 } 88 if (!width || !height) { 89 LOG(WebGPU, "GPURenderPassEncoder::setScissorRect(): Width or height must be greater than 0!"); 90 return; 91 } 92 m_passEncoder->setScissorRect(x, y, width, height); 61 93 } 62 94 -
trunk/Source/WebCore/Modules/webgpu/WebGPURenderPassEncoder.h
r243658 r244093 39 39 class WebGPURenderPipeline; 40 40 41 struct GPUColor; 42 41 43 class WebGPURenderPassEncoder final : public WebGPUProgrammablePassEncoder { 42 44 public: … … 44 46 45 47 void setPipeline(const WebGPURenderPipeline&); 48 void setBlendColor(const GPUColor&); 49 void setViewport(float x, float y, float width, float height, float minDepth, float maxDepth); 50 void setScissorRect(unsigned x, unsigned y, unsigned width, unsigned height); 46 51 void setVertexBuffers(unsigned, Vector<RefPtr<WebGPUBuffer>>&&, Vector<uint64_t>&&); 47 52 void draw(unsigned vertexCount, unsigned instanceCount, unsigned firstVertex, unsigned firstInstance); -
trunk/Source/WebCore/Modules/webgpu/WebGPURenderPassEncoder.idl
r243456 r244093 34 34 ] interface WebGPURenderPassEncoder : WebGPUProgrammablePassEncoder { 35 35 void setPipeline(WebGPURenderPipeline pipeline); 36 void setBlendColor(GPUColor color); 37 38 // The default viewport is (0.0, 0.0, w, h, 0.0, 1.0), where w and h are the dimensions of back buffer 39 void setViewport(float x, float y, float width, float height, float minDepth, float maxDepth); 40 41 // The default scissor rectangle is (0, 0, w, h), where w and h are the dimensions of back buffer. 42 // Width and height must be greater than 0. Otherwise, an error will be generated. 43 void setScissorRect(u32 x, u32 y, u32 width, u32 height); 36 44 37 45 void setVertexBuffers(u32 startSlot, sequence<WebGPUBuffer> buffers, sequence<u64> offsets); … … 40 48 41 49 /* Not Yet Implemented 42 void setBlendColor(float r, float g, float b, float a);43 50 void setIndexBuffer(WebGPUBuffer buffer, u64 offset); 44 51 -
trunk/Source/WebCore/platform/graphics/gpu/GPURenderPassEncoder.h
r243658 r244093 43 43 class GPUCommandBuffer; 44 44 45 struct GPUColor; 45 46 struct GPURenderPassDescriptor; 46 47 … … 53 54 54 55 void setPipeline(Ref<const GPURenderPipeline>&&); 56 void setBlendColor(const GPUColor&); 57 void setViewport(float x, float y, float width, float height, float minDepth, float maxDepth); 58 void setScissorRect(unsigned x, unsigned y, unsigned width, unsigned height); 55 59 void setVertexBuffers(unsigned, Vector<Ref<GPUBuffer>>&&, Vector<uint64_t>&&); 56 60 void draw(unsigned vertexCount, unsigned instanceCount, unsigned firstVertex, unsigned firstInstance); -
trunk/Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPassEncoderMetal.mm
r243658 r244093 30 30 31 31 #import "GPUBuffer.h" 32 #import "GPUColor.h" 32 33 #import "GPUCommandBuffer.h" 33 34 #import "GPURenderPassDescriptor.h" … … 203 204 204 205 m_pipeline = WTFMove(pipeline); 206 } 207 208 void GPURenderPassEncoder::setBlendColor(const GPUColor& color) 209 { 210 if (!m_platformRenderPassEncoder) { 211 LOG(WebGPU, "GPURenderPassEncoder::setBlendColor(): Invalid operation: Encoding is ended!"); 212 return; 213 } 214 215 BEGIN_BLOCK_OBJC_EXCEPTIONS; 216 [m_platformRenderPassEncoder setBlendColorRed:color.r green:color.g blue:color.b alpha:color.a]; 217 END_BLOCK_OBJC_EXCEPTIONS; 218 } 219 220 void GPURenderPassEncoder::setViewport(float x, float y, float width, float height, float minDepth, float maxDepth) 221 { 222 if (!m_platformRenderPassEncoder) { 223 LOG(WebGPU, "GPURenderPassEncoder::setViewport(): Invalid operation: Encoding is ended!"); 224 return; 225 } 226 227 BEGIN_BLOCK_OBJC_EXCEPTIONS; 228 [m_platformRenderPassEncoder setViewport: { x, y, width, height, minDepth, maxDepth }]; 229 END_BLOCK_OBJC_EXCEPTIONS; 230 } 231 232 void GPURenderPassEncoder::setScissorRect(unsigned x, unsigned y, unsigned width, unsigned height) 233 { 234 if (!m_platformRenderPassEncoder) { 235 LOG(WebGPU, "GPURenderPassEncoder::setScissorRect(): Invalid operation: Encoding is ended!"); 236 return; 237 } 238 239 BEGIN_BLOCK_OBJC_EXCEPTIONS; 240 [m_platformRenderPassEncoder setScissorRect: { x, y, width, height }]; 241 END_BLOCK_OBJC_EXCEPTIONS; 205 242 } 206 243
Note:
See TracChangeset
for help on using the changeset viewer.