Changeset 274438 in webkit


Ignore:
Timestamp:
Mar 15, 2021 1:49:55 PM (16 months ago)
Author:
ysuzuki@apple.com
Message:

WebGL should be aware of [AllowShared]
https://bugs.webkit.org/show_bug.cgi?id=223167

Reviewed by Saam Barati.

Source/WebCore:

This patch attaches [AllowShared] IDL annotations to appropriate WebGL types, so that these functions
can accept array buffers / array buffer views which are created from SharedArrayBuffer.

  • html/canvas/WebGL2RenderingContext.idl:
  • html/canvas/WebGLRenderingContextBase.idl:

LayoutTests:

Test that these functions accept (not throwing a TypeError) array buffers etc. created from SharedArrayBuffer.

  • webgl/webgl-allow-shared-expected.txt: Added.
  • webgl/webgl-allow-shared.html: Added.
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r274434 r274438  
     12021-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
    1132021-03-15  Said Abou-Hallawa  <said@apple.com>
    214
  • trunk/Source/WebCore/ChangeLog

    r274437 r274438  
     12021-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
    1142021-03-15  Zalan Bujtas  <zalan@apple.com>
    215
  • trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.idl

    r273865 r274438  
    4141typedef unrestricted float GLclampf;
    4242typedef (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;
     43typedef ([AllowShared] Float32Array or sequence<GLfloat>) Float32List;
     44typedef ([AllowShared] Int32Array or sequence<GLint>) Int32List;
     45typedef ([AllowShared] Uint32Array or sequence<GLuint>) Uint32List;
    4646
    4747#ifdef ENABLE_VIDEO
     
    338338
    339339    // 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);
    342342
    343343    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);
    345345
    346346    // Framebuffer objects.
     
    361361    undefined texImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLintptr pboOffset);
    362362    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);
    365365
    366366    undefined texSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLintptr pboOffset);
    367367    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);
    369369
    370370    undefined copyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
    371371
    372372    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);
    374374    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);
    376376
    377377    // Programs and shaders/
     
    471471    undefined texImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLintptr pboOffset);
    472472    [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);
    474474
    475475    undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLintptr pboOffset);
    476476    [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);
    478478
    479479    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);
    481481
    482482    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);
    484484
    485485    undefined uniform1fv(WebGLUniformLocation? location, Float32List data, GLuint srcOffset, optional GLuint srcLength = 0);
     
    498498
    499499    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);
    501501};
    502502
  • trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.idl

    r266678 r274438  
    3939typedef unrestricted float GLclampf;
    4040typedef (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`.
     43typedef ([AllowShared] ArrayBuffer or [AllowShared] ArrayBufferView) AllowSharedBufferDataSource;
     44typedef ([AllowShared] Float32Array or sequence<GLfloat>) Float32List;
     45typedef ([AllowShared] Int32Array or sequence<GLint>) Int32List;
    4346
    4447#if defined(ENABLE_OFFSCREEN_CANVAS)
     
    493496    undefined blendFunc(GLenum sfactor, GLenum dfactor);
    494497    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);
    496499    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);
    498501
    499502    GLenum checkFramebufferStatus(GLenum target);
     
    505508    undefined compileShader(WebGLShader shader);
    506509
    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);
    508511    [MayThrowException] undefined texImage2D(GLenum target, GLint level, GLenum internalformat, GLenum format, GLenum type, TexImageSource source);
    509512
    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);
    511514    [MayThrowException] undefined texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLenum format, GLenum type, TexImageSource source);
    512515
    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);
    515518
    516519    undefined copyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
     
    608611    undefined polygonOffset(GLfloat factor, GLfloat units);
    609612
    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);
    611614   
    612615    undefined renderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
Note: See TracChangeset for help on using the changeset viewer.