Changeset 207649 in webkit
- Timestamp:
- Oct 20, 2016 6:17:31 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r207647 r207649 1 2016-10-20 Myles C. Maxfield <mmaxfield@apple.com> 2 3 Implement WebGL2 bufferData() and bufferSubData() methods 4 https://bugs.webkit.org/show_bug.cgi?id=163759 5 6 Reviewed by Dean Jackson. 7 8 * fast/canvas/webgl/bufferData-offset-length-expected.txt: Added. 9 * fast/canvas/webgl/bufferData-offset-length.html: Added. 10 * fast/canvas/webgl/resources/webgl-test.js: 11 (create3DContext): 12 (initWebGL): 13 1 14 2016-10-20 Nan Wang <n_wang@apple.com> 2 15 -
trunk/LayoutTests/fast/canvas/webgl/resources/webgl-test.js
r198091 r207649 40 40 // Returns the WebGLRenderingContext for any known implementation. 41 41 // 42 function create3DContext(canvas, attributes )42 function create3DContext(canvas, attributes, version2) 43 43 { 44 44 if (!canvas) 45 45 canvas = document.createElement("canvas"); 46 46 var context = null; 47 if (version2) { 48 try { 49 context = canvas.getContext("webgl2", attributes); 50 } catch(e) {} 51 } 47 52 try { 48 53 context = canvas.getContext("experimental-webgl", attributes); … … 241 246 // Enable depth testing and blending with a blend func of (SRC_ALPHA, ONE_MINUS_SRC_ALPHA) 242 247 // 243 function initWebGL(canvasName, vshader, fshader, attribs, clearColor, clearDepth, contextAttribs )248 function initWebGL(canvasName, vshader, fshader, attribs, clearColor, clearDepth, contextAttribs, version2) 244 249 { 245 250 var canvas = document.getElementById(canvasName); 246 var gl = create3DContext(canvas, contextAttribs );251 var gl = create3DContext(canvas, contextAttribs, version2); 247 252 if (!gl) { 248 253 alert("No WebGL context found"); -
trunk/Source/WebCore/ChangeLog
r207648 r207649 1 2016-10-20 Myles C. Maxfield <mmaxfield@apple.com> 2 3 Implement WebGL2 bufferData() and bufferSubData() methods 4 https://bugs.webkit.org/show_bug.cgi?id=163759 5 6 Reviewed by Dean Jackson. 7 8 These new overloads simply clip the input array buffer. 9 10 Test: fast/canvas/webgl/bufferData-offset-length.html 11 12 * html/canvas/WebGL2RenderingContext.cpp: 13 (WebCore::WebGL2RenderingContext::bufferData): 14 (WebCore::WebGL2RenderingContext::bufferSubData): 15 * html/canvas/WebGL2RenderingContext.h: 16 * html/canvas/WebGL2RenderingContext.idl: 17 1 18 2016-10-20 Chris Dumez <cdumez@apple.com> 2 19 -
trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp
r207644 r207649 87 87 m_context->getExtensions()->ensureEnabled("GL_EXT_shader_texture_lod"); 88 88 m_context->getExtensions()->ensureEnabled("GL_EXT_frag_depth"); 89 } 90 91 void WebGL2RenderingContext::bufferData(GC3Denum target, ArrayBufferView& data, GC3Denum usage, GC3Duint srcOffset, GC3Duint length) 92 { 93 if (srcOffset > data.byteLength() || length > data.byteLength() - srcOffset) { 94 synthesizeGLError(GraphicsContext3D::INVALID_VALUE, "bufferData", "srcOffset or length is out of bounds"); 95 return; 96 } 97 auto slice = Uint8Array::create(data.buffer(), data.byteOffset() + srcOffset, length); 98 if (!slice) { 99 synthesizeGLError(GraphicsContext3D::OUT_OF_MEMORY, "bufferData", "Could not create intermediate ArrayBufferView"); 100 return; 101 } 102 WebGLRenderingContextBase::bufferData(target, slice.get(), usage); 103 } 104 105 void WebGL2RenderingContext::bufferSubData(GC3Denum target, long long offset, ArrayBufferView& data, GC3Duint srcOffset, GC3Duint length) 106 { 107 if (srcOffset > data.byteLength() || length > data.byteLength() - srcOffset) { 108 synthesizeGLError(GraphicsContext3D::INVALID_VALUE, "bufferData", "srcOffset or length is out of bounds"); 109 return; 110 } 111 auto slice = Uint8Array::create(data.buffer(), data.byteOffset() + srcOffset, length); 112 if (!slice) { 113 synthesizeGLError(GraphicsContext3D::OUT_OF_MEMORY, "bufferData", "Could not create intermediate ArrayBufferView"); 114 return; 115 } 116 WebGLRenderingContextBase::bufferSubData(target, offset, slice); 89 117 } 90 118 -
trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h
r200298 r207649 46 46 47 47 /* Buffer objects */ 48 void bufferData(GC3Denum target, ArrayBufferView& data, GC3Denum usage, GC3Duint srcOffset, GC3Duint length); 49 void bufferSubData(GC3Denum target, long long offset, ArrayBufferView& data, GC3Duint srcOffset, GC3Duint length); 48 50 void copyBufferSubData(GC3Denum readTarget, GC3Denum writeTarget, GC3Dint64 readOffset, GC3Dint64 writeOffset, GC3Dint64 size); 49 51 void getBufferSubData(GC3Denum target, GC3Dint64 offset, RefPtr<ArrayBufferView>&& returnedData); -
trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.idl
r204839 r207649 334 334 335 335 /* Buffer objects */ 336 void bufferData(GLenum target, ArrayBufferView data, GLenum usage, GLuint srcOffset, optional GLuint length = 0); 337 void bufferSubData(GLenum target, GLintptr dstByteOffset, ArrayBufferView srcData, GLuint srcOffset, optional GLuint length = 0); 336 338 void copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); 337 339 // MapBufferRange, in particular its read-only and write-only modes,
Note: See TracChangeset
for help on using the changeset viewer.