Commit 9fd73df9 authored by Kenneth Russell's avatar Kenneth Russell Committed by Commit Bot

Allow SharedArrayBuffer with FlexibleArrayBufferView.

Assertions fail when running multithreaded WebAssembly code which uses
WebGL.

Bug: 905000
Change-Id: Ic45df5f43aa859a5f9225586f4836919ef31b54a
Reviewed-on: https://chromium-review.googlesource.com/c/1334844Reviewed-by: default avatarJames Darpinian <jdarpinian@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607875}
parent 9d5ca99f
...@@ -43,7 +43,7 @@ class CORE_EXPORT FlexibleArrayBufferView { ...@@ -43,7 +43,7 @@ class CORE_EXPORT FlexibleArrayBufferView {
// FlexibleArrayBufferView object. // FlexibleArrayBufferView object.
void* BaseAddressMaybeOnStack() const { void* BaseAddressMaybeOnStack() const {
DCHECK(!IsEmpty()); DCHECK(!IsEmpty());
return IsFull() ? full_->BaseAddress() : small_data_; return IsFull() ? full_->BaseAddressMaybeShared() : small_data_;
} }
unsigned ByteOffset() const { unsigned ByteOffset() const {
......
...@@ -368,51 +368,51 @@ typedef unsigned long long GLuint64; ...@@ -368,51 +368,51 @@ typedef unsigned long long GLuint64;
// to avoid conflicts. The effect is the same: if uniform*v is called with only two arguments, // to avoid conflicts. The effect is the same: if uniform*v is called with only two arguments,
// it goes to the WebGL1 signatures; if it's called with three or four arguments, it goes to // it goes to the WebGL1 signatures; if it's called with three or four arguments, it goes to
// the WebGL2 specific signatures. // the WebGL2 specific signatures.
void uniform1fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v, void uniform1fv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Float32Array v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform1fv(WebGLUniformLocation? location, sequence<GLfloat> v, void uniform1fv(WebGLUniformLocation? location, sequence<GLfloat> v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform2fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v, void uniform2fv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Float32Array v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform2fv(WebGLUniformLocation? location, sequence<GLfloat> v, void uniform2fv(WebGLUniformLocation? location, sequence<GLfloat> v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform3fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v, void uniform3fv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Float32Array v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform3fv(WebGLUniformLocation? location, sequence<GLfloat> v, void uniform3fv(WebGLUniformLocation? location, sequence<GLfloat> v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform4fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v, void uniform4fv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Float32Array v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform4fv(WebGLUniformLocation? location, sequence<GLfloat> v, void uniform4fv(WebGLUniformLocation? location, sequence<GLfloat> v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform1iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v, void uniform1iv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Int32Array v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform1iv(WebGLUniformLocation? location, sequence<GLint> v, void uniform1iv(WebGLUniformLocation? location, sequence<GLint> v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform2iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v, void uniform2iv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Int32Array v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform2iv(WebGLUniformLocation? location, sequence<GLint> v, void uniform2iv(WebGLUniformLocation? location, sequence<GLint> v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform3iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v, void uniform3iv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Int32Array v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform3iv(WebGLUniformLocation? location, sequence<GLint> v, void uniform3iv(WebGLUniformLocation? location, sequence<GLint> v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform4iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v, void uniform4iv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Int32Array v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform4iv(WebGLUniformLocation? location, sequence<GLint> v, void uniform4iv(WebGLUniformLocation? location, sequence<GLint> v,
GLuint srcOffset, optional GLuint srcLength = 0); GLuint srcOffset, optional GLuint srcLength = 0);
void uniform1uiv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Uint32Array v, void uniform1uiv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Uint32Array v,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0); optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniform1uiv(WebGLUniformLocation? location, sequence<GLuint> v, void uniform1uiv(WebGLUniformLocation? location, sequence<GLuint> v,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0); optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniform2uiv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Uint32Array v, void uniform2uiv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Uint32Array v,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0); optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniform2uiv(WebGLUniformLocation? location, sequence<GLuint> v, void uniform2uiv(WebGLUniformLocation? location, sequence<GLuint> v,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0); optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniform3uiv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Uint32Array v, void uniform3uiv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Uint32Array v,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0); optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniform3uiv(WebGLUniformLocation? location, sequence<GLuint> v, void uniform3uiv(WebGLUniformLocation? location, sequence<GLuint> v,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0); optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniform4uiv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Uint32Array v, void uniform4uiv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Uint32Array v,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0); optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
void uniform4uiv(WebGLUniformLocation? location, sequence<GLuint> v, void uniform4uiv(WebGLUniformLocation? location, sequence<GLuint> v,
optional GLuint srcOffset = 0, optional GLuint srcLength = 0); optional GLuint srcOffset = 0, optional GLuint srcLength = 0);
......
...@@ -487,7 +487,7 @@ typedef unrestricted float GLclampf; ...@@ -487,7 +487,7 @@ typedef unrestricted float GLclampf;
void bufferData(GLenum target, GLsizeiptr size, GLenum usage); void bufferData(GLenum target, GLsizeiptr size, GLenum usage);
void bufferData(GLenum target, [AllowShared] ArrayBufferView data, GLenum usage); void bufferData(GLenum target, [AllowShared] ArrayBufferView data, GLenum usage);
void bufferData(GLenum target, ArrayBuffer? data, GLenum usage); void bufferData(GLenum target, ArrayBuffer? data, GLenum usage);
void bufferSubData(GLenum target, GLintptr offset, [FlexibleArrayBufferView] ArrayBufferView data); void bufferSubData(GLenum target, GLintptr offset, [AllowShared, FlexibleArrayBufferView] ArrayBufferView data);
void bufferSubData(GLenum target, GLintptr offset, ArrayBuffer data); void bufferSubData(GLenum target, GLintptr offset, ArrayBuffer data);
GLenum checkFramebufferStatus(GLenum target); GLenum checkFramebufferStatus(GLenum target);
...@@ -660,28 +660,28 @@ typedef unrestricted float GLclampf; ...@@ -660,28 +660,28 @@ typedef unrestricted float GLclampf;
GLenum format, GLenum type, ImageBitmap bitmap); GLenum format, GLenum type, ImageBitmap bitmap);
void uniform1f(WebGLUniformLocation? location, GLfloat x); void uniform1f(WebGLUniformLocation? location, GLfloat x);
void uniform1fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v); void uniform1fv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Float32Array v);
void uniform1fv(WebGLUniformLocation? location, sequence<GLfloat> v); void uniform1fv(WebGLUniformLocation? location, sequence<GLfloat> v);
void uniform1i(WebGLUniformLocation? location, GLint x); void uniform1i(WebGLUniformLocation? location, GLint x);
void uniform1iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v); void uniform1iv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Int32Array v);
void uniform1iv(WebGLUniformLocation? location, sequence<GLint> v); void uniform1iv(WebGLUniformLocation? location, sequence<GLint> v);
void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y); void uniform2f(WebGLUniformLocation? location, GLfloat x, GLfloat y);
void uniform2fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v); void uniform2fv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Float32Array v);
void uniform2fv(WebGLUniformLocation? location, sequence<GLfloat> v); void uniform2fv(WebGLUniformLocation? location, sequence<GLfloat> v);
void uniform2i(WebGLUniformLocation? location, GLint x, GLint y); void uniform2i(WebGLUniformLocation? location, GLint x, GLint y);
void uniform2iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v); void uniform2iv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Int32Array v);
void uniform2iv(WebGLUniformLocation? location, sequence<GLint> v); void uniform2iv(WebGLUniformLocation? location, sequence<GLint> v);
void uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z); void uniform3f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z);
void uniform3fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v); void uniform3fv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Float32Array v);
void uniform3fv(WebGLUniformLocation? location, sequence<GLfloat> v); void uniform3fv(WebGLUniformLocation? location, sequence<GLfloat> v);
void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z); void uniform3i(WebGLUniformLocation? location, GLint x, GLint y, GLint z);
void uniform3iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v); void uniform3iv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Int32Array v);
void uniform3iv(WebGLUniformLocation? location, sequence<GLint> v); void uniform3iv(WebGLUniformLocation? location, sequence<GLint> v);
void uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void uniform4f(WebGLUniformLocation? location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void uniform4fv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Float32Array v); void uniform4fv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Float32Array v);
void uniform4fv(WebGLUniformLocation? location, sequence<GLfloat> v); void uniform4fv(WebGLUniformLocation? location, sequence<GLfloat> v);
void uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w); void uniform4i(WebGLUniformLocation? location, GLint x, GLint y, GLint z, GLint w);
void uniform4iv(WebGLUniformLocation? location, [FlexibleArrayBufferView] Int32Array v); void uniform4iv(WebGLUniformLocation? location, [AllowShared, FlexibleArrayBufferView] Int32Array v);
void uniform4iv(WebGLUniformLocation? location, sequence<GLint> v); void uniform4iv(WebGLUniformLocation? location, sequence<GLint> v);
void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, [AllowShared] Float32Array array); void uniformMatrix2fv(WebGLUniformLocation? location, GLboolean transpose, [AllowShared] Float32Array array);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment