Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Unified Diff: third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp

Issue 2815793002: [SharedArrayBuffer] Add "AllowShared" extended attribute, used for WebGL (Closed)
Patch Set: add layout tests Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
diff --git a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
index 9a902001dac684e122478db4de383c8623ee1e3c..5476f21b3a1b81fdb9ca0c8641c6c51c13d5d182 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
+++ b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
@@ -73,7 +73,7 @@ bool ValidateSubSourceAndGetData(DOMArrayBufferView* view,
if (!byte_length) {
byte_length = view->byteLength() - byte_offset;
}
- uint8_t* data = static_cast<uint8_t*>(view->BaseAddress());
+ uint8_t* data = static_cast<uint8_t*>(view->BaseAddressMaybeShared());
data += byte_offset;
*out_base_address = data;
*out_byte_length = byte_length;
@@ -250,7 +250,7 @@ void WebGL2RenderingContextBase::InitializeNewContext() {
void WebGL2RenderingContextBase::bufferData(
GLenum target,
- NotShared<DOMArrayBufferView> src_data,
+ MaybeShared<DOMArrayBufferView> src_data,
GLenum usage,
GLuint src_offset,
GLuint length) {
@@ -279,16 +279,17 @@ void WebGL2RenderingContextBase::bufferData(GLenum target,
WebGLRenderingContextBase::bufferData(target, data, usage);
}
-void WebGL2RenderingContextBase::bufferData(GLenum target,
- NotShared<DOMArrayBufferView> data,
- GLenum usage) {
+void WebGL2RenderingContextBase::bufferData(
+ GLenum target,
+ MaybeShared<DOMArrayBufferView> data,
+ GLenum usage) {
WebGLRenderingContextBase::bufferData(target, data, usage);
}
void WebGL2RenderingContextBase::bufferSubData(
GLenum target,
GLintptr dst_byte_offset,
- NotShared<DOMArrayBufferView> src_data,
+ MaybeShared<DOMArrayBufferView> src_data,
GLuint src_offset,
GLuint length) {
if (isContextLost())
@@ -370,7 +371,7 @@ void WebGL2RenderingContextBase::copyBufferSubData(GLenum read_target,
void WebGL2RenderingContextBase::getBufferSubData(
GLenum target,
long long src_byte_offset,
- NotShared<DOMArrayBufferView> dst_data,
+ MaybeShared<DOMArrayBufferView> dst_data,
GLuint dst_offset,
GLuint length) {
WebGLBuffer* source_buffer = nullptr;
@@ -759,7 +760,7 @@ void WebGL2RenderingContextBase::readPixels(
GLsizei height,
GLenum format,
GLenum type,
- NotShared<DOMArrayBufferView> pixels) {
+ MaybeShared<DOMArrayBufferView> pixels) {
if (isContextLost())
return;
if (bound_pixel_pack_buffer_.Get()) {
@@ -778,7 +779,7 @@ void WebGL2RenderingContextBase::readPixels(
GLsizei height,
GLenum format,
GLenum type,
- NotShared<DOMArrayBufferView> pixels,
+ MaybeShared<DOMArrayBufferView> pixels,
GLuint offset) {
if (isContextLost())
return;
@@ -1139,7 +1140,7 @@ void WebGL2RenderingContextBase::texImage2D(
GLint border,
GLenum format,
GLenum type,
- NotShared<DOMArrayBufferView> data) {
+ MaybeShared<DOMArrayBufferView> data) {
if (isContextLost())
return;
if (bound_pixel_unpack_buffer_) {
@@ -1151,16 +1152,17 @@ void WebGL2RenderingContextBase::texImage2D(
height, border, format, type, data);
}
-void WebGL2RenderingContextBase::texImage2D(GLenum target,
- GLint level,
- GLint internalformat,
- GLsizei width,
- GLsizei height,
- GLint border,
- GLenum format,
- GLenum type,
- NotShared<DOMArrayBufferView> data,
- GLuint src_offset) {
+void WebGL2RenderingContextBase::texImage2D(
+ GLenum target,
+ GLint level,
+ GLint internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLint border,
+ GLenum format,
+ GLenum type,
+ MaybeShared<DOMArrayBufferView> data,
+ GLuint src_offset) {
if (isContextLost())
return;
if (bound_pixel_unpack_buffer_) {
@@ -1383,7 +1385,7 @@ void WebGL2RenderingContextBase::texSubImage2D(
GLsizei height,
GLenum format,
GLenum type,
- NotShared<DOMArrayBufferView> pixels) {
+ MaybeShared<DOMArrayBufferView> pixels) {
if (isContextLost())
return;
if (bound_pixel_unpack_buffer_) {
@@ -1404,7 +1406,7 @@ void WebGL2RenderingContextBase::texSubImage2D(
GLsizei height,
GLenum format,
GLenum type,
- NotShared<DOMArrayBufferView> pixels,
+ MaybeShared<DOMArrayBufferView> pixels,
GLuint src_offset) {
if (isContextLost())
return;
@@ -1666,7 +1668,7 @@ void WebGL2RenderingContextBase::texImage3D(
GLint border,
GLenum format,
GLenum type,
- NotShared<DOMArrayBufferView> pixels) {
+ MaybeShared<DOMArrayBufferView> pixels) {
TexImageHelperDOMArrayBufferView(kTexImage3D, target, level, internalformat,
width, height, depth, border, format, type,
0, 0, 0, pixels.View(), kNullAllowed, 0);
@@ -1682,7 +1684,7 @@ void WebGL2RenderingContextBase::texImage3D(
GLint border,
GLenum format,
GLenum type,
- NotShared<DOMArrayBufferView> pixels,
+ MaybeShared<DOMArrayBufferView> pixels,
GLuint src_offset) {
if (isContextLost())
return;
@@ -1855,7 +1857,7 @@ void WebGL2RenderingContextBase::texSubImage3D(
GLsizei depth,
GLenum format,
GLenum type,
- NotShared<DOMArrayBufferView> pixels,
+ MaybeShared<DOMArrayBufferView> pixels,
GLuint src_offset) {
if (isContextLost())
return;
@@ -2061,7 +2063,7 @@ void WebGL2RenderingContextBase::compressedTexImage2D(
GLsizei width,
GLsizei height,
GLint border,
- NotShared<DOMArrayBufferView> data) {
+ MaybeShared<DOMArrayBufferView> data) {
if (isContextLost())
return;
if (bound_pixel_unpack_buffer_) {
@@ -2080,7 +2082,7 @@ void WebGL2RenderingContextBase::compressedTexImage2D(
GLsizei width,
GLsizei height,
GLint border,
- NotShared<DOMArrayBufferView> data,
+ MaybeShared<DOMArrayBufferView> data,
GLuint src_offset,
GLuint src_length_override) {
if (isContextLost())
@@ -2108,7 +2110,8 @@ void WebGL2RenderingContextBase::compressedTexImage2D(
}
ContextGL()->CompressedTexImage2D(
target, level, internalformat, width, height, border, src_length_override,
- static_cast<uint8_t*>(data.View()->BaseAddress()) + src_offset);
+ static_cast<uint8_t*>(data.View()->BaseAddressMaybeShared()) +
+ src_offset);
}
void WebGL2RenderingContextBase::compressedTexImage2D(GLenum target,
@@ -2139,7 +2142,7 @@ void WebGL2RenderingContextBase::compressedTexSubImage2D(
GLsizei width,
GLsizei height,
GLenum format,
- NotShared<DOMArrayBufferView> data) {
+ MaybeShared<DOMArrayBufferView> data) {
if (isContextLost())
return;
if (bound_pixel_unpack_buffer_) {
@@ -2159,7 +2162,7 @@ void WebGL2RenderingContextBase::compressedTexSubImage2D(
GLsizei width,
GLsizei height,
GLenum format,
- NotShared<DOMArrayBufferView> data,
+ MaybeShared<DOMArrayBufferView> data,
GLuint src_offset,
GLuint src_length_override) {
if (isContextLost())
@@ -2188,7 +2191,8 @@ void WebGL2RenderingContextBase::compressedTexSubImage2D(
ContextGL()->CompressedTexSubImage2D(
target, level, xoffset, yoffset, width, height, format,
src_length_override,
- static_cast<uint8_t*>(data.View()->BaseAddress()) + src_offset);
+ static_cast<uint8_t*>(data.View()->BaseAddressMaybeShared()) +
+ src_offset);
}
void WebGL2RenderingContextBase::compressedTexSubImage2D(GLenum target,
@@ -2220,7 +2224,7 @@ void WebGL2RenderingContextBase::compressedTexImage3D(
GLsizei height,
GLsizei depth,
GLint border,
- NotShared<DOMArrayBufferView> data,
+ MaybeShared<DOMArrayBufferView> data,
GLuint src_offset,
GLuint src_length_override) {
if (isContextLost())
@@ -2249,7 +2253,8 @@ void WebGL2RenderingContextBase::compressedTexImage3D(
ContextGL()->CompressedTexImage3D(
target, level, internalformat, width, height, depth, border,
src_length_override,
- static_cast<uint8_t*>(data.View()->BaseAddress()) + src_offset);
+ static_cast<uint8_t*>(data.View()->BaseAddressMaybeShared()) +
+ src_offset);
}
void WebGL2RenderingContextBase::compressedTexImage3D(GLenum target,
@@ -2283,7 +2288,7 @@ void WebGL2RenderingContextBase::compressedTexSubImage3D(
GLsizei height,
GLsizei depth,
GLenum format,
- NotShared<DOMArrayBufferView> data,
+ MaybeShared<DOMArrayBufferView> data,
GLuint src_offset,
GLuint src_length_override) {
if (isContextLost())
@@ -2312,7 +2317,8 @@ void WebGL2RenderingContextBase::compressedTexSubImage3D(
ContextGL()->CompressedTexSubImage3D(
target, level, xoffset, yoffset, zoffset, width, height, depth, format,
src_length_override,
- static_cast<uint8_t*>(data.View()->BaseAddress()) + src_offset);
+ static_cast<uint8_t*>(data.View()->BaseAddressMaybeShared()) +
+ src_offset);
}
void WebGL2RenderingContextBase::compressedTexSubImage3D(GLenum target,
@@ -2795,7 +2801,7 @@ void WebGL2RenderingContextBase::uniform4uiv(
void WebGL2RenderingContextBase::uniformMatrix2fv(
const WebGLUniformLocation* location,
GLboolean transpose,
- NotShared<DOMFloat32Array> v,
+ MaybeShared<DOMFloat32Array> v,
GLuint src_offset,
GLuint src_length) {
if (isContextLost() ||
@@ -2805,7 +2811,7 @@ void WebGL2RenderingContextBase::uniformMatrix2fv(
ContextGL()->UniformMatrix2fv(
location->Location(),
(src_length ? src_length : (v.View()->length() - src_offset)) >> 2,
- transpose, v.View()->Data() + src_offset);
+ transpose, v.View()->DataMaybeShared() + src_offset);
}
void WebGL2RenderingContextBase::uniformMatrix2fv(
@@ -2827,7 +2833,7 @@ void WebGL2RenderingContextBase::uniformMatrix2fv(
void WebGL2RenderingContextBase::uniformMatrix3fv(
const WebGLUniformLocation* location,
GLboolean transpose,
- NotShared<DOMFloat32Array> v,
+ MaybeShared<DOMFloat32Array> v,
GLuint src_offset,
GLuint src_length) {
if (isContextLost() ||
@@ -2837,7 +2843,7 @@ void WebGL2RenderingContextBase::uniformMatrix3fv(
ContextGL()->UniformMatrix3fv(
location->Location(),
(src_length ? src_length : (v.View()->length() - src_offset)) / 9,
- transpose, v.View()->Data() + src_offset);
+ transpose, v.View()->DataMaybeShared() + src_offset);
}
void WebGL2RenderingContextBase::uniformMatrix3fv(
@@ -2859,7 +2865,7 @@ void WebGL2RenderingContextBase::uniformMatrix3fv(
void WebGL2RenderingContextBase::uniformMatrix4fv(
const WebGLUniformLocation* location,
GLboolean transpose,
- NotShared<DOMFloat32Array> v,
+ MaybeShared<DOMFloat32Array> v,
GLuint src_offset,
GLuint src_length) {
if (isContextLost() ||
@@ -2869,7 +2875,7 @@ void WebGL2RenderingContextBase::uniformMatrix4fv(
ContextGL()->UniformMatrix4fv(
location->Location(),
(src_length ? src_length : (v.View()->length() - src_offset)) >> 4,
- transpose, v.View()->Data() + src_offset);
+ transpose, v.View()->DataMaybeShared() + src_offset);
}
void WebGL2RenderingContextBase::uniformMatrix4fv(
@@ -2891,7 +2897,7 @@ void WebGL2RenderingContextBase::uniformMatrix4fv(
void WebGL2RenderingContextBase::uniformMatrix2x3fv(
const WebGLUniformLocation* location,
GLboolean transpose,
- NotShared<DOMFloat32Array> value,
+ MaybeShared<DOMFloat32Array> value,
GLuint src_offset,
GLuint src_length) {
if (isContextLost() || !ValidateUniformMatrixParameters(
@@ -2901,7 +2907,7 @@ void WebGL2RenderingContextBase::uniformMatrix2x3fv(
ContextGL()->UniformMatrix2x3fv(
location->Location(),
(src_length ? src_length : (value.View()->length() - src_offset)) / 6,
- transpose, value.View()->Data() + src_offset);
+ transpose, value.View()->DataMaybeShared() + src_offset);
}
void WebGL2RenderingContextBase::uniformMatrix2x3fv(
@@ -2924,7 +2930,7 @@ void WebGL2RenderingContextBase::uniformMatrix2x3fv(
void WebGL2RenderingContextBase::uniformMatrix3x2fv(
const WebGLUniformLocation* location,
GLboolean transpose,
- NotShared<DOMFloat32Array> value,
+ MaybeShared<DOMFloat32Array> value,
GLuint src_offset,
GLuint src_length) {
if (isContextLost() || !ValidateUniformMatrixParameters(
@@ -2934,7 +2940,7 @@ void WebGL2RenderingContextBase::uniformMatrix3x2fv(
ContextGL()->UniformMatrix3x2fv(
location->Location(),
(src_length ? src_length : (value.View()->length() - src_offset)) / 6,
- transpose, value.View()->Data() + src_offset);
+ transpose, value.View()->DataMaybeShared() + src_offset);
}
void WebGL2RenderingContextBase::uniformMatrix3x2fv(
@@ -2957,7 +2963,7 @@ void WebGL2RenderingContextBase::uniformMatrix3x2fv(
void WebGL2RenderingContextBase::uniformMatrix2x4fv(
const WebGLUniformLocation* location,
GLboolean transpose,
- NotShared<DOMFloat32Array> value,
+ MaybeShared<DOMFloat32Array> value,
GLuint src_offset,
GLuint src_length) {
if (isContextLost() || !ValidateUniformMatrixParameters(
@@ -2967,7 +2973,7 @@ void WebGL2RenderingContextBase::uniformMatrix2x4fv(
ContextGL()->UniformMatrix2x4fv(
location->Location(),
(src_length ? src_length : (value.View()->length() - src_offset)) >> 3,
- transpose, value.View()->Data() + src_offset);
+ transpose, value.View()->DataMaybeShared() + src_offset);
}
void WebGL2RenderingContextBase::uniformMatrix2x4fv(
@@ -2990,7 +2996,7 @@ void WebGL2RenderingContextBase::uniformMatrix2x4fv(
void WebGL2RenderingContextBase::uniformMatrix4x2fv(
const WebGLUniformLocation* location,
GLboolean transpose,
- NotShared<DOMFloat32Array> value,
+ MaybeShared<DOMFloat32Array> value,
GLuint src_offset,
GLuint src_length) {
if (isContextLost() || !ValidateUniformMatrixParameters(
@@ -3000,7 +3006,7 @@ void WebGL2RenderingContextBase::uniformMatrix4x2fv(
ContextGL()->UniformMatrix4x2fv(
location->Location(),
(src_length ? src_length : (value.View()->length() - src_offset)) >> 3,
- transpose, value.View()->Data() + src_offset);
+ transpose, value.View()->DataMaybeShared() + src_offset);
}
void WebGL2RenderingContextBase::uniformMatrix4x2fv(
@@ -3023,7 +3029,7 @@ void WebGL2RenderingContextBase::uniformMatrix4x2fv(
void WebGL2RenderingContextBase::uniformMatrix3x4fv(
const WebGLUniformLocation* location,
GLboolean transpose,
- NotShared<DOMFloat32Array> value,
+ MaybeShared<DOMFloat32Array> value,
GLuint src_offset,
GLuint src_length) {
if (isContextLost() || !ValidateUniformMatrixParameters(
@@ -3033,7 +3039,7 @@ void WebGL2RenderingContextBase::uniformMatrix3x4fv(
ContextGL()->UniformMatrix3x4fv(
location->Location(),
(src_length ? src_length : (value.View()->length() - src_offset)) / 12,
- transpose, value.View()->Data() + src_offset);
+ transpose, value.View()->DataMaybeShared() + src_offset);
}
void WebGL2RenderingContextBase::uniformMatrix3x4fv(
@@ -3056,7 +3062,7 @@ void WebGL2RenderingContextBase::uniformMatrix3x4fv(
void WebGL2RenderingContextBase::uniformMatrix4x3fv(
const WebGLUniformLocation* location,
GLboolean transpose,
- NotShared<DOMFloat32Array> value,
+ MaybeShared<DOMFloat32Array> value,
GLuint src_offset,
GLuint src_length) {
if (isContextLost() || !ValidateUniformMatrixParameters(
@@ -3066,7 +3072,7 @@ void WebGL2RenderingContextBase::uniformMatrix4x3fv(
ContextGL()->UniformMatrix4x3fv(
location->Location(),
(src_length ? src_length : (value.View()->length() - src_offset)) / 12,
- transpose, value.View()->Data() + src_offset);
+ transpose, value.View()->DataMaybeShared() + src_offset);
}
void WebGL2RenderingContextBase::uniformMatrix4x3fv(
@@ -3185,7 +3191,7 @@ void WebGL2RenderingContextBase::uniform4iv(
void WebGL2RenderingContextBase::uniformMatrix2fv(
const WebGLUniformLocation* location,
GLboolean transpose,
- NotShared<DOMFloat32Array> v) {
+ MaybeShared<DOMFloat32Array> v) {
WebGLRenderingContextBase::uniformMatrix2fv(location, transpose, v);
}
@@ -3199,7 +3205,7 @@ void WebGL2RenderingContextBase::uniformMatrix2fv(
void WebGL2RenderingContextBase::uniformMatrix3fv(
const WebGLUniformLocation* location,
GLboolean transpose,
- NotShared<DOMFloat32Array> v) {
+ MaybeShared<DOMFloat32Array> v) {
WebGLRenderingContextBase::uniformMatrix3fv(location, transpose, v);
}
@@ -3213,7 +3219,7 @@ void WebGL2RenderingContextBase::uniformMatrix3fv(
void WebGL2RenderingContextBase::uniformMatrix4fv(
const WebGLUniformLocation* location,
GLboolean transpose,
- NotShared<DOMFloat32Array> v) {
+ MaybeShared<DOMFloat32Array> v) {
WebGLRenderingContextBase::uniformMatrix4fv(location, transpose, v);
}
@@ -3237,14 +3243,14 @@ void WebGL2RenderingContextBase::vertexAttribI4i(GLuint index,
void WebGL2RenderingContextBase::vertexAttribI4iv(
GLuint index,
- NotShared<const DOMInt32Array> v) {
+ MaybeShared<const DOMInt32Array> v) {
if (isContextLost())
return;
if (!v.View() || v.View()->length() < 4) {
SynthesizeGLError(GL_INVALID_VALUE, "vertexAttribI4iv", "invalid array");
return;
}
- ContextGL()->VertexAttribI4iv(index, v.View()->Data());
+ ContextGL()->VertexAttribI4iv(index, v.View()->DataMaybeShared());
SetVertexAttribType(index, kInt32ArrayType);
}
@@ -3273,14 +3279,14 @@ void WebGL2RenderingContextBase::vertexAttribI4ui(GLuint index,
void WebGL2RenderingContextBase::vertexAttribI4uiv(
GLuint index,
- NotShared<const DOMUint32Array> v) {
+ MaybeShared<const DOMUint32Array> v) {
if (isContextLost())
return;
if (!v.View() || v.View()->length() < 4) {
SynthesizeGLError(GL_INVALID_VALUE, "vertexAttribI4uiv", "invalid array");
return;
}
- ContextGL()->VertexAttribI4uiv(index, v.View()->Data());
+ ContextGL()->VertexAttribI4uiv(index, v.View()->DataMaybeShared());
SetVertexAttribType(index, kUint32ArrayType);
}
@@ -3496,14 +3502,16 @@ WebGLTexture* WebGL2RenderingContextBase::ValidateTexImageBinding(
return ValidateTexture2DBinding(func_name, target);
}
-void WebGL2RenderingContextBase::clearBufferiv(GLenum buffer,
- GLint drawbuffer,
- NotShared<DOMInt32Array> value) {
+void WebGL2RenderingContextBase::clearBufferiv(
+ GLenum buffer,
+ GLint drawbuffer,
+ MaybeShared<DOMInt32Array> value) {
if (isContextLost() ||
!ValidateClearBuffer("clearBufferiv", buffer, value.View()->length()))
return;
- ContextGL()->ClearBufferiv(buffer, drawbuffer, value.View()->Data());
+ ContextGL()->ClearBufferiv(buffer, drawbuffer,
+ value.View()->DataMaybeShared());
}
void WebGL2RenderingContextBase::clearBufferiv(GLenum buffer,
@@ -3519,12 +3527,13 @@ void WebGL2RenderingContextBase::clearBufferiv(GLenum buffer,
void WebGL2RenderingContextBase::clearBufferuiv(
GLenum buffer,
GLint drawbuffer,
- NotShared<DOMUint32Array> value) {
+ MaybeShared<DOMUint32Array> value) {
if (isContextLost() ||
!ValidateClearBuffer("clearBufferuiv", buffer, value.View()->length()))
return;
- ContextGL()->ClearBufferuiv(buffer, drawbuffer, value.View()->Data());
+ ContextGL()->ClearBufferuiv(buffer, drawbuffer,
+ value.View()->DataMaybeShared());
}
void WebGL2RenderingContextBase::clearBufferuiv(GLenum buffer,
@@ -3540,12 +3549,13 @@ void WebGL2RenderingContextBase::clearBufferuiv(GLenum buffer,
void WebGL2RenderingContextBase::clearBufferfv(
GLenum buffer,
GLint drawbuffer,
- NotShared<DOMFloat32Array> value) {
+ MaybeShared<DOMFloat32Array> value) {
if (isContextLost() ||
!ValidateClearBuffer("clearBufferfv", buffer, value.View()->length()))
return;
- ContextGL()->ClearBufferfv(buffer, drawbuffer, value.View()->Data());
+ ContextGL()->ClearBufferfv(buffer, drawbuffer,
+ value.View()->DataMaybeShared());
}
void WebGL2RenderingContextBase::clearBufferfv(GLenum buffer,

Powered by Google App Engine
This is Rietveld 408576698