Changeset 274438 in webkit
- Timestamp:
- Mar 15, 2021 1:49:55 PM (16 months ago)
- Location:
- trunk
- Files:
-
- 2 added
- 4 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/webgl/webgl-allow-shared-expected.txt (added)
-
LayoutTests/webgl/webgl-allow-shared.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/html/canvas/WebGL2RenderingContext.idl (modified) (5 diffs)
-
Source/WebCore/html/canvas/WebGLRenderingContextBase.idl (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r274434 r274438 1 2021-03-15 Yusuke Suzuki <ysuzuki@apple.com> 2 3 WebGL should be aware of [AllowShared] 4 https://bugs.webkit.org/show_bug.cgi?id=223167 5 6 Reviewed by Saam Barati. 7 8 Test that these functions accept (not throwing a TypeError) array buffers etc. created from SharedArrayBuffer. 9 10 * webgl/webgl-allow-shared-expected.txt: Added. 11 * webgl/webgl-allow-shared.html: Added. 12 1 13 2021-03-15 Said Abou-Hallawa <said@apple.com> 2 14 -
trunk/Source/WebCore/ChangeLog
r274437 r274438 1 2021-03-15 Yusuke Suzuki <ysuzuki@apple.com> 2 3 WebGL should be aware of [AllowShared] 4 https://bugs.webkit.org/show_bug.cgi?id=223167 5 6 Reviewed by Saam Barati. 7 8 This patch attaches [AllowShared] IDL annotations to appropriate WebGL types, so that these functions 9 can accept array buffers / array buffer views which are created from SharedArrayBuffer. 10 11 * html/canvas/WebGL2RenderingContext.idl: 12 * html/canvas/WebGLRenderingContextBase.idl: 13 1 14 2021-03-15 Zalan Bujtas <zalan@apple.com> 2 15 -
trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.idl
r273865 r274438 41 41 typedef unrestricted float GLclampf; 42 42 typedef (ArrayBuffer or ArrayBufferView) BufferDataSource; 43 typedef ( Float32Array or sequence<GLfloat>) Float32List;44 typedef ( Int32Array or sequence<GLint>) Int32List;45 typedef ( Uint32Array or sequence<GLuint>) Uint32List;43 typedef ([AllowShared] Float32Array or sequence<GLfloat>) Float32List; 44 typedef ([AllowShared] Int32Array or sequence<GLint>) Int32List; 45 typedef ([AllowShared] Uint32Array or sequence<GLuint>) Uint32List; 46 46 47 47 #ifdef ENABLE_VIDEO … … 338 338 339 339 // Buffer objects. 340 undefined bufferData(GLenum target, ArrayBufferView data, GLenum usage, GLuint srcOffset, optional GLuint length = 0);341 undefined bufferSubData(GLenum target, GLintptr dstByteOffset, ArrayBufferView srcData, GLuint srcOffset, optional GLuint length = 0);340 undefined bufferData(GLenum target, [AllowShared] ArrayBufferView data, GLenum usage, GLuint srcOffset, optional GLuint length = 0); 341 undefined bufferSubData(GLenum target, GLintptr dstByteOffset, [AllowShared] ArrayBufferView srcData, GLuint srcOffset, optional GLuint length = 0); 342 342 343 343 undefined copyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); 344 undefined getBufferSubData(GLenum target, GLintptr srcByteOffset, ArrayBufferView dstData, optional GLuint dstOffset = 0, optional GLuint length = 0);344 undefined getBufferSubData(GLenum target, GLintptr srcByteOffset, [AllowShared] ArrayBufferView dstData, optional GLuint dstOffset = 0, optional GLuint length = 0); 345 345 346 346 // Framebuffer objects. … … 361 361 undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr pboOffset); 362 362 undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, TexImageSource source); 363 undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, ArrayBufferView? pixels);364 undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, ArrayBufferView srcData, GLuint srcOffset);363 undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels); 364 undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData, GLuint srcOffset); 365 365 366 366 undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLintptr pboOffset); 367 367 undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, TexImageSource source); 368 undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, ArrayBufferView? srcData, optional GLuint srcOffset = 0);368 undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, [AllowShared] ArrayBufferView? srcData, optional GLuint srcOffset = 0); 369 369 370 370 undefined copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); 371 371 372 372 undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLintptr offset); 373 undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, ArrayBufferView srcData, optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);373 undefined compressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, [AllowShared] ArrayBufferView srcData, optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0); 374 374 undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLintptr offset); 375 undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, ArrayBufferView srcData, optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0);375 undefined compressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, [AllowShared] ArrayBufferView srcData, optional GLuint srcOffset = 0, optional GLuint srcLengthOverride = 0); 376 376 377 377 // Programs and shaders/ … … 471 471 undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLintptr pboOffset); 472 472 [MayThrowException] undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, TexImageSource source); 473 undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ArrayBufferView srcData, GLuint srcOffset);473 undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData, GLuint srcOffset); 474 474 475 475 undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLintptr pboOffset); 476 476 [MayThrowException] undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, TexImageSource source); 477 undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, ArrayBufferView srcData, GLuint srcOffset);477 undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView srcData, GLuint srcOffset); 478 478 479 479 undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, GLintptr offset); 480 undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, ArrayBufferView srcData, GLuint srcOffset, optional GLuint srcLengthOverride = 0);480 undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, [AllowShared] ArrayBufferView srcData, GLuint srcOffset, optional GLuint srcLengthOverride = 0); 481 481 482 482 undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLintptr offset); 483 undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, ArrayBufferView srcData, GLuint srcOffset, optional GLuint srcLengthOverride = 0);483 undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, [AllowShared] ArrayBufferView srcData, GLuint srcOffset, optional GLuint srcLengthOverride = 0); 484 484 485 485 undefined uniform1fv(WebGLUniformLocation? location, Float32List data, GLuint srcOffset, optional GLuint srcLength = 0); … … 498 498 499 499 undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLintptr offset); 500 undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, ArrayBufferView dstData, GLuint dstOffset);500 undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView dstData, GLuint dstOffset); 501 501 }; 502 502 -
trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl
r266678 r274438 39 39 typedef unrestricted float GLclampf; 40 40 typedef (ArrayBuffer or ArrayBufferView) BufferDataSource; 41 typedef (Float32Array or sequence<GLfloat>) Float32List; 42 typedef (Int32Array or sequence<GLint>) Int32List; 41 // FIXME: Currently `[AllowShared] BufferDataSource` is not built well in our compile-time IDL type converter. We need more template specialization for that. 42 // But we should replace BufferDataSource to BufferSource since both are completely same time, and we already support `[AllowShared] BufferSource`. 43 typedef ([AllowShared] ArrayBuffer or [AllowShared] ArrayBufferView) AllowSharedBufferDataSource; 44 typedef ([AllowShared] Float32Array or sequence<GLfloat>) Float32List; 45 typedef ([AllowShared] Int32Array or sequence<GLint>) Int32List; 43 46 44 47 #if defined(ENABLE_OFFSCREEN_CANVAS) … … 493 496 undefined blendFunc(GLenum sfactor, GLenum dfactor); 494 497 undefined blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); 495 undefined bufferData(GLenum target, BufferDataSource? data, GLenum usage);498 undefined bufferData(GLenum target, AllowSharedBufferDataSource? data, GLenum usage); 496 499 undefined bufferData(GLenum target, GLsizeiptr size, GLenum usage); 497 undefined bufferSubData(GLenum target, GLintptr offset, BufferDataSource data);500 undefined bufferSubData(GLenum target, GLintptr offset, AllowSharedBufferDataSource data); 498 501 499 502 GLenum checkFramebufferStatus(GLenum target); … … 505 508 undefined compileShader(WebGLShader shader); 506 509 507 undefined texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ArrayBufferView? pixels);510 undefined texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels); 508 511 [MayThrowException] undefined texImage2D(GLenum target, GLint level, GLenum internalformat, GLenum format, GLenum type, TexImageSource source); 509 512 510 undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, ArrayBufferView? pixels);513 undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView? pixels); 511 514 [MayThrowException] undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLenum format, GLenum type, TexImageSource source); 512 515 513 undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, ArrayBufferView data);514 undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, ArrayBufferView data);516 undefined compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, [AllowShared] ArrayBufferView data); 517 undefined compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, [AllowShared] ArrayBufferView data); 515 518 516 519 undefined copyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); … … 608 611 undefined polygonOffset(GLfloat factor, GLfloat units); 609 612 610 undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, ArrayBufferView pixels);613 undefined readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, [AllowShared] ArrayBufferView pixels); 611 614 612 615 undefined renderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
Note: See TracChangeset
for help on using the changeset viewer.