| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "gpu/blink/webgraphicscontext3d_impl.h" | |
| 6 | |
| 7 #include "base/atomicops.h" | |
| 8 #include "base/lazy_instance.h" | |
| 9 #include "base/logging.h" | |
| 10 #include "gpu/GLES2/gl2extchromium.h" | |
| 11 #include "gpu/command_buffer/client/gles2_implementation.h" | |
| 12 #include "gpu/command_buffer/client/gles2_lib.h" | |
| 13 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | |
| 14 #include "gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h" | |
| 15 | |
| 16 #include "third_party/khronos/GLES2/gl2.h" | |
| 17 #ifndef GL_GLEXT_PROTOTYPES | |
| 18 #define GL_GLEXT_PROTOTYPES 1 | |
| 19 #endif | |
| 20 #include "third_party/khronos/GLES2/gl2ext.h" | |
| 21 | |
| 22 using blink::WGC3Dbitfield; | |
| 23 using blink::WGC3Dboolean; | |
| 24 using blink::WGC3Dbyte; | |
| 25 using blink::WGC3Dchar; | |
| 26 using blink::WGC3Dclampf; | |
| 27 using blink::WGC3Denum; | |
| 28 using blink::WGC3Dfloat; | |
| 29 using blink::WGC3Dint; | |
| 30 using blink::WGC3Dintptr; | |
| 31 using blink::WGC3Dsizei; | |
| 32 using blink::WGC3Dsizeiptr; | |
| 33 using blink::WGC3Duint64; | |
| 34 using blink::WGC3Duint; | |
| 35 using blink::WebGLId; | |
| 36 | |
| 37 namespace gpu_blink { | |
| 38 | |
| 39 namespace { | |
| 40 | |
| 41 uint32_t GenFlushID() { | |
| 42 static base::subtle::Atomic32 flush_id = 0; | |
| 43 | |
| 44 base::subtle::Atomic32 my_id = base::subtle::Barrier_AtomicIncrement( | |
| 45 &flush_id, 1); | |
| 46 return static_cast<uint32_t>(my_id); | |
| 47 } | |
| 48 | |
| 49 } // namespace anonymous | |
| 50 | |
| 51 class WebGraphicsContext3DErrorMessageCallback | |
| 52 : public ::gpu::gles2::GLES2ImplementationErrorMessageCallback { | |
| 53 public: | |
| 54 WebGraphicsContext3DErrorMessageCallback( | |
| 55 WebGraphicsContext3DImpl* context) | |
| 56 : graphics_context_(context) { | |
| 57 } | |
| 58 | |
| 59 void OnErrorMessage(const char* msg, int id) override; | |
| 60 | |
| 61 private: | |
| 62 WebGraphicsContext3DImpl* graphics_context_; | |
| 63 | |
| 64 DISALLOW_COPY_AND_ASSIGN(WebGraphicsContext3DErrorMessageCallback); | |
| 65 }; | |
| 66 | |
| 67 void WebGraphicsContext3DErrorMessageCallback::OnErrorMessage( | |
| 68 const char* msg, int id) { | |
| 69 graphics_context_->OnErrorMessage(msg, id); | |
| 70 } | |
| 71 | |
| 72 // Helper macros to reduce the amount of code. | |
| 73 | |
| 74 #define DELEGATE_TO_GL(name, glname) \ | |
| 75 void WebGraphicsContext3DImpl::name() { \ | |
| 76 gl_->glname(); \ | |
| 77 } | |
| 78 | |
| 79 #define DELEGATE_TO_GL_R(name, glname, rt) \ | |
| 80 rt WebGraphicsContext3DImpl::name() { \ | |
| 81 return gl_->glname(); \ | |
| 82 } | |
| 83 | |
| 84 #define DELEGATE_TO_GL_1(name, glname, t1) \ | |
| 85 void WebGraphicsContext3DImpl::name(t1 a1) { \ | |
| 86 gl_->glname(a1); \ | |
| 87 } | |
| 88 | |
| 89 #define DELEGATE_TO_GL_1R(name, glname, t1, rt) \ | |
| 90 rt WebGraphicsContext3DImpl::name(t1 a1) { \ | |
| 91 return gl_->glname(a1); \ | |
| 92 } | |
| 93 | |
| 94 #define DELEGATE_TO_GL_1RB(name, glname, t1, rt) \ | |
| 95 rt WebGraphicsContext3DImpl::name(t1 a1) { \ | |
| 96 return gl_->glname(a1) ? true : false; \ | |
| 97 } | |
| 98 | |
| 99 #define DELEGATE_TO_GL_2(name, glname, t1, t2) \ | |
| 100 void WebGraphicsContext3DImpl::name(t1 a1, t2 a2) { \ | |
| 101 gl_->glname(a1, a2); \ | |
| 102 } | |
| 103 | |
| 104 #define DELEGATE_TO_GL_2R(name, glname, t1, t2, rt) \ | |
| 105 rt WebGraphicsContext3DImpl::name(t1 a1, t2 a2) { \ | |
| 106 return gl_->glname(a1, a2); \ | |
| 107 } | |
| 108 | |
| 109 #define DELEGATE_TO_GL_3(name, glname, t1, t2, t3) \ | |
| 110 void WebGraphicsContext3DImpl::name(t1 a1, t2 a2, t3 a3) { \ | |
| 111 gl_->glname(a1, a2, a3); \ | |
| 112 } | |
| 113 | |
| 114 #define DELEGATE_TO_GL_3R(name, glname, t1, t2, t3, rt) \ | |
| 115 rt WebGraphicsContext3DImpl::name(t1 a1, t2 a2, t3 a3) { \ | |
| 116 return gl_->glname(a1, a2, a3); \ | |
| 117 } | |
| 118 | |
| 119 #define DELEGATE_TO_GL_4(name, glname, t1, t2, t3, t4) \ | |
| 120 void WebGraphicsContext3DImpl::name(t1 a1, t2 a2, t3 a3, t4 a4) { \ | |
| 121 gl_->glname(a1, a2, a3, a4); \ | |
| 122 } | |
| 123 | |
| 124 #define DELEGATE_TO_GL_4R(name, glname, t1, t2, t3, t4, rt) \ | |
| 125 rt WebGraphicsContext3DImpl::name(t1 a1, t2 a2, t3 a3, t4 a4) { \ | |
| 126 return gl_->glname(a1, a2, a3, a4); \ | |
| 127 } | |
| 128 | |
| 129 #define DELEGATE_TO_GL_5(name, glname, t1, t2, t3, t4, t5) \ | |
| 130 void WebGraphicsContext3DImpl::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5) {\ | |
| 131 \ | |
| 132 gl_->glname(a1, a2, a3, a4, a5); \ | |
| 133 } | |
| 134 | |
| 135 #define DELEGATE_TO_GL_6(name, glname, t1, t2, t3, t4, t5, t6) \ | |
| 136 void WebGraphicsContext3DImpl::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, \ | |
| 137 t6 a6) { \ | |
| 138 gl_->glname(a1, a2, a3, a4, a5, a6); \ | |
| 139 } | |
| 140 | |
| 141 #define DELEGATE_TO_GL_7(name, glname, t1, t2, t3, t4, t5, t6, t7) \ | |
| 142 void WebGraphicsContext3DImpl::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, \ | |
| 143 t6 a6, t7 a7) { \ | |
| 144 gl_->glname(a1, a2, a3, a4, a5, a6, a7); \ | |
| 145 } | |
| 146 | |
| 147 #define DELEGATE_TO_GL_8(name, glname, t1, t2, t3, t4, t5, t6, t7, t8) \ | |
| 148 void WebGraphicsContext3DImpl::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, \ | |
| 149 t6 a6, t7 a7, t8 a8) { \ | |
| 150 gl_->glname(a1, a2, a3, a4, a5, a6, a7, a8); \ | |
| 151 } | |
| 152 | |
| 153 #define DELEGATE_TO_GL_9(name, glname, t1, t2, t3, t4, t5, t6, t7, t8, t9) \ | |
| 154 void WebGraphicsContext3DImpl::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, \ | |
| 155 t6 a6, t7 a7, t8 a8, t9 a9) { \ | |
| 156 gl_->glname(a1, a2, a3, a4, a5, a6, a7, a8, a9); \ | |
| 157 } | |
| 158 | |
| 159 #define DELEGATE_TO_GL_9R(name, glname, t1, t2, t3, t4, t5, t6, t7, t8, \ | |
| 160 t9, rt) \ | |
| 161 rt WebGraphicsContext3DImpl::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, \ | |
| 162 t6 a6, t7 a7, t8 a8, t9 a9) { \ | |
| 163 return gl_->glname(a1, a2, a3, a4, a5, a6, a7, a8, a9); \ | |
| 164 } | |
| 165 | |
| 166 #define DELEGATE_TO_GL_10(name, glname, t1, t2, t3, t4, t5, t6, t7, t8, \ | |
| 167 t9, t10) \ | |
| 168 void WebGraphicsContext3DImpl::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, \ | |
| 169 t6 a6, t7 a7, t8 a8, t9 a9, \ | |
| 170 t10 a10) { \ | |
| 171 gl_->glname(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10); \ | |
| 172 } | |
| 173 | |
| 174 #define DELEGATE_TO_GL_11(name, glname, t1, t2, t3, t4, t5, t6, t7, t8, \ | |
| 175 t9, t10, t11) \ | |
| 176 void WebGraphicsContext3DImpl::name(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, \ | |
| 177 t6 a6, t7 a7, t8 a8, t9 a9, t10 a10,\ | |
| 178 t11 a11) { \ | |
| 179 gl_->glname(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11); \ | |
| 180 } | |
| 181 | |
| 182 WebGraphicsContext3DImpl::WebGraphicsContext3DImpl() | |
| 183 : initialized_(false), | |
| 184 initialize_failed_(false), | |
| 185 context_lost_callback_(0), | |
| 186 context_lost_reason_(GL_NO_ERROR), | |
| 187 error_message_callback_(0), | |
| 188 gl_(NULL), | |
| 189 flush_id_(0) { | |
| 190 } | |
| 191 | |
| 192 WebGraphicsContext3DImpl::~WebGraphicsContext3DImpl() { | |
| 193 | |
| 194 } | |
| 195 | |
| 196 void WebGraphicsContext3DImpl::synthesizeGLError(WGC3Denum error) { | |
| 197 if (std::find(synthetic_errors_.begin(), synthetic_errors_.end(), error) == | |
| 198 synthetic_errors_.end()) { | |
| 199 synthetic_errors_.push_back(error); | |
| 200 } | |
| 201 } | |
| 202 | |
| 203 uint32_t WebGraphicsContext3DImpl::lastFlushID() { | |
| 204 return flush_id_; | |
| 205 } | |
| 206 | |
| 207 DELEGATE_TO_GL_R(insertSyncPoint, InsertSyncPointCHROMIUM, unsigned int) | |
| 208 | |
| 209 DELEGATE_TO_GL_3(reshapeWithScaleFactor, ResizeCHROMIUM, int, int, float) | |
| 210 | |
| 211 DELEGATE_TO_GL_4R(mapBufferSubDataCHROMIUM, MapBufferSubDataCHROMIUM, WGC3Denum, | |
| 212 WGC3Dintptr, WGC3Dsizeiptr, WGC3Denum, void*) | |
| 213 | |
| 214 DELEGATE_TO_GL_1(unmapBufferSubDataCHROMIUM, UnmapBufferSubDataCHROMIUM, | |
| 215 const void*) | |
| 216 | |
| 217 DELEGATE_TO_GL_9R(mapTexSubImage2DCHROMIUM, MapTexSubImage2DCHROMIUM, WGC3Denum, | |
| 218 WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dsizei, WGC3Dsizei, | |
| 219 WGC3Denum, WGC3Denum, WGC3Denum, void*) | |
| 220 | |
| 221 DELEGATE_TO_GL_1(unmapTexSubImage2DCHROMIUM, UnmapTexSubImage2DCHROMIUM, | |
| 222 const void*) | |
| 223 | |
| 224 DELEGATE_TO_GL_3(discardFramebufferEXT, DiscardFramebufferEXT, WGC3Denum, | |
| 225 WGC3Dsizei, const WGC3Denum*) | |
| 226 | |
| 227 blink::WebString WebGraphicsContext3DImpl:: | |
| 228 getRequestableExtensionsCHROMIUM() { | |
| 229 return blink::WebString::fromUTF8( | |
| 230 gl_->GetRequestableExtensionsCHROMIUM()); | |
| 231 } | |
| 232 | |
| 233 DELEGATE_TO_GL_1(requestExtensionCHROMIUM, RequestExtensionCHROMIUM, | |
| 234 const char*) | |
| 235 | |
| 236 void WebGraphicsContext3DImpl::blitFramebufferCHROMIUM( | |
| 237 WGC3Dint srcX0, WGC3Dint srcY0, WGC3Dint srcX1, WGC3Dint srcY1, | |
| 238 WGC3Dint dstX0, WGC3Dint dstY0, WGC3Dint dstX1, WGC3Dint dstY1, | |
| 239 WGC3Dbitfield mask, WGC3Denum filter) { | |
| 240 gl_->BlitFramebufferCHROMIUM( | |
| 241 srcX0, srcY0, srcX1, srcY1, | |
| 242 dstX0, dstY0, dstX1, dstY1, | |
| 243 mask, filter); | |
| 244 } | |
| 245 | |
| 246 DELEGATE_TO_GL_5(renderbufferStorageMultisampleCHROMIUM, | |
| 247 RenderbufferStorageMultisampleCHROMIUM, WGC3Denum, WGC3Dsizei, | |
| 248 WGC3Denum, WGC3Dsizei, WGC3Dsizei) | |
| 249 | |
| 250 DELEGATE_TO_GL_1(activeTexture, ActiveTexture, WGC3Denum) | |
| 251 | |
| 252 DELEGATE_TO_GL_2(attachShader, AttachShader, WebGLId, WebGLId) | |
| 253 | |
| 254 DELEGATE_TO_GL_3(bindAttribLocation, BindAttribLocation, WebGLId, | |
| 255 WGC3Duint, const WGC3Dchar*) | |
| 256 | |
| 257 DELEGATE_TO_GL_2(bindBuffer, BindBuffer, WGC3Denum, WebGLId) | |
| 258 | |
| 259 DELEGATE_TO_GL_2(bindFramebuffer, BindFramebuffer, WGC3Denum, WebGLId) | |
| 260 | |
| 261 DELEGATE_TO_GL_2(bindRenderbuffer, BindRenderbuffer, WGC3Denum, WebGLId) | |
| 262 | |
| 263 DELEGATE_TO_GL_2(bindTexture, BindTexture, WGC3Denum, WebGLId) | |
| 264 | |
| 265 DELEGATE_TO_GL_4(blendColor, BlendColor, | |
| 266 WGC3Dclampf, WGC3Dclampf, WGC3Dclampf, WGC3Dclampf) | |
| 267 | |
| 268 DELEGATE_TO_GL_1(blendEquation, BlendEquation, WGC3Denum) | |
| 269 | |
| 270 DELEGATE_TO_GL_2(blendEquationSeparate, BlendEquationSeparate, | |
| 271 WGC3Denum, WGC3Denum) | |
| 272 | |
| 273 DELEGATE_TO_GL_2(blendFunc, BlendFunc, WGC3Denum, WGC3Denum) | |
| 274 | |
| 275 DELEGATE_TO_GL_4(blendFuncSeparate, BlendFuncSeparate, | |
| 276 WGC3Denum, WGC3Denum, WGC3Denum, WGC3Denum) | |
| 277 | |
| 278 DELEGATE_TO_GL_4(bufferData, BufferData, | |
| 279 WGC3Denum, WGC3Dsizeiptr, const void*, WGC3Denum) | |
| 280 | |
| 281 DELEGATE_TO_GL_4(bufferSubData, BufferSubData, | |
| 282 WGC3Denum, WGC3Dintptr, WGC3Dsizeiptr, const void*) | |
| 283 | |
| 284 DELEGATE_TO_GL_1R(checkFramebufferStatus, CheckFramebufferStatus, | |
| 285 WGC3Denum, WGC3Denum) | |
| 286 | |
| 287 DELEGATE_TO_GL_1(clear, Clear, WGC3Dbitfield) | |
| 288 | |
| 289 DELEGATE_TO_GL_4(clearColor, ClearColor, | |
| 290 WGC3Dclampf, WGC3Dclampf, WGC3Dclampf, WGC3Dclampf) | |
| 291 | |
| 292 DELEGATE_TO_GL_1(clearDepth, ClearDepthf, WGC3Dclampf) | |
| 293 | |
| 294 DELEGATE_TO_GL_1(clearStencil, ClearStencil, WGC3Dint) | |
| 295 | |
| 296 DELEGATE_TO_GL_4(colorMask, ColorMask, | |
| 297 WGC3Dboolean, WGC3Dboolean, WGC3Dboolean, WGC3Dboolean) | |
| 298 | |
| 299 DELEGATE_TO_GL_1(compileShader, CompileShader, WebGLId) | |
| 300 | |
| 301 DELEGATE_TO_GL_8(compressedTexImage2D, CompressedTexImage2D, | |
| 302 WGC3Denum, WGC3Dint, WGC3Denum, WGC3Dint, WGC3Dint, | |
| 303 WGC3Dsizei, WGC3Dsizei, const void*) | |
| 304 | |
| 305 DELEGATE_TO_GL_9(compressedTexSubImage2D, CompressedTexSubImage2D, | |
| 306 WGC3Denum, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dint, | |
| 307 WGC3Denum, WGC3Dsizei, const void*) | |
| 308 | |
| 309 DELEGATE_TO_GL_8(copyTexImage2D, CopyTexImage2D, | |
| 310 WGC3Denum, WGC3Dint, WGC3Denum, WGC3Dint, WGC3Dint, | |
| 311 WGC3Dsizei, WGC3Dsizei, WGC3Dint) | |
| 312 | |
| 313 DELEGATE_TO_GL_8(copyTexSubImage2D, CopyTexSubImage2D, | |
| 314 WGC3Denum, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dint, | |
| 315 WGC3Dsizei, WGC3Dsizei) | |
| 316 | |
| 317 DELEGATE_TO_GL_1(cullFace, CullFace, WGC3Denum) | |
| 318 | |
| 319 DELEGATE_TO_GL_1(depthFunc, DepthFunc, WGC3Denum) | |
| 320 | |
| 321 DELEGATE_TO_GL_1(depthMask, DepthMask, WGC3Dboolean) | |
| 322 | |
| 323 DELEGATE_TO_GL_2(depthRange, DepthRangef, WGC3Dclampf, WGC3Dclampf) | |
| 324 | |
| 325 DELEGATE_TO_GL_2(detachShader, DetachShader, WebGLId, WebGLId) | |
| 326 | |
| 327 DELEGATE_TO_GL_1(disable, Disable, WGC3Denum) | |
| 328 | |
| 329 DELEGATE_TO_GL_1(disableVertexAttribArray, DisableVertexAttribArray, | |
| 330 WGC3Duint) | |
| 331 | |
| 332 DELEGATE_TO_GL_3(drawArrays, DrawArrays, WGC3Denum, WGC3Dint, WGC3Dsizei) | |
| 333 | |
| 334 void WebGraphicsContext3DImpl::drawElements(WGC3Denum mode, | |
| 335 WGC3Dsizei count, | |
| 336 WGC3Denum type, | |
| 337 WGC3Dintptr offset) { | |
| 338 gl_->DrawElements( | |
| 339 mode, count, type, | |
| 340 reinterpret_cast<void*>(static_cast<intptr_t>(offset))); | |
| 341 } | |
| 342 | |
| 343 DELEGATE_TO_GL_1(enable, Enable, WGC3Denum) | |
| 344 | |
| 345 DELEGATE_TO_GL_1(enableVertexAttribArray, EnableVertexAttribArray, | |
| 346 WGC3Duint) | |
| 347 | |
| 348 void WebGraphicsContext3DImpl::finish() { | |
| 349 flush_id_ = GenFlushID(); | |
| 350 gl_->Finish(); | |
| 351 } | |
| 352 | |
| 353 void WebGraphicsContext3DImpl::flush() { | |
| 354 flush_id_ = GenFlushID(); | |
| 355 gl_->Flush(); | |
| 356 } | |
| 357 | |
| 358 DELEGATE_TO_GL_4(framebufferRenderbuffer, FramebufferRenderbuffer, | |
| 359 WGC3Denum, WGC3Denum, WGC3Denum, WebGLId) | |
| 360 | |
| 361 DELEGATE_TO_GL_5(framebufferTexture2D, FramebufferTexture2D, | |
| 362 WGC3Denum, WGC3Denum, WGC3Denum, WebGLId, WGC3Dint) | |
| 363 | |
| 364 DELEGATE_TO_GL_1(frontFace, FrontFace, WGC3Denum) | |
| 365 | |
| 366 DELEGATE_TO_GL_1(generateMipmap, GenerateMipmap, WGC3Denum) | |
| 367 | |
| 368 bool WebGraphicsContext3DImpl::getActiveAttrib( | |
| 369 WebGLId program, WGC3Duint index, ActiveInfo& info) { | |
| 370 if (!program) { | |
| 371 synthesizeGLError(GL_INVALID_VALUE); | |
| 372 return false; | |
| 373 } | |
| 374 GLint max_name_length = -1; | |
| 375 gl_->GetProgramiv( | |
| 376 program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, &max_name_length); | |
| 377 if (max_name_length < 0) | |
| 378 return false; | |
| 379 if (max_name_length == 0) { | |
| 380 // No active attributes exist. | |
| 381 synthesizeGLError(GL_INVALID_VALUE); | |
| 382 return false; | |
| 383 } | |
| 384 scoped_ptr<GLchar[]> name(new GLchar[max_name_length]); | |
| 385 GLsizei length = 0; | |
| 386 GLint size = -1; | |
| 387 GLenum type = 0; | |
| 388 gl_->GetActiveAttrib( | |
| 389 program, index, max_name_length, &length, &size, &type, name.get()); | |
| 390 if (size < 0) { | |
| 391 return false; | |
| 392 } | |
| 393 info.name = blink::WebString::fromUTF8(name.get(), length); | |
| 394 info.type = type; | |
| 395 info.size = size; | |
| 396 return true; | |
| 397 } | |
| 398 | |
| 399 bool WebGraphicsContext3DImpl::getActiveUniform( | |
| 400 WebGLId program, WGC3Duint index, ActiveInfo& info) { | |
| 401 GLint max_name_length = -1; | |
| 402 gl_->GetProgramiv( | |
| 403 program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &max_name_length); | |
| 404 if (max_name_length < 0) | |
| 405 return false; | |
| 406 if (max_name_length == 0) { | |
| 407 // No active uniforms exist. | |
| 408 synthesizeGLError(GL_INVALID_VALUE); | |
| 409 return false; | |
| 410 } | |
| 411 scoped_ptr<GLchar[]> name(new GLchar[max_name_length]); | |
| 412 GLsizei length = 0; | |
| 413 GLint size = -1; | |
| 414 GLenum type = 0; | |
| 415 gl_->GetActiveUniform( | |
| 416 program, index, max_name_length, &length, &size, &type, name.get()); | |
| 417 if (size < 0) { | |
| 418 return false; | |
| 419 } | |
| 420 info.name = blink::WebString::fromUTF8(name.get(), length); | |
| 421 info.type = type; | |
| 422 info.size = size; | |
| 423 return true; | |
| 424 } | |
| 425 | |
| 426 DELEGATE_TO_GL_4(getAttachedShaders, GetAttachedShaders, | |
| 427 WebGLId, WGC3Dsizei, WGC3Dsizei*, WebGLId*) | |
| 428 | |
| 429 DELEGATE_TO_GL_2R(getAttribLocation, GetAttribLocation, | |
| 430 WebGLId, const WGC3Dchar*, WGC3Dint) | |
| 431 | |
| 432 DELEGATE_TO_GL_2(getBooleanv, GetBooleanv, WGC3Denum, WGC3Dboolean*) | |
| 433 | |
| 434 DELEGATE_TO_GL_3(getBufferParameteriv, GetBufferParameteriv, | |
| 435 WGC3Denum, WGC3Denum, WGC3Dint*) | |
| 436 | |
| 437 WGC3Denum WebGraphicsContext3DImpl::getError() { | |
| 438 if (!synthetic_errors_.empty()) { | |
| 439 std::vector<WGC3Denum>::iterator iter = synthetic_errors_.begin(); | |
| 440 WGC3Denum err = *iter; | |
| 441 synthetic_errors_.erase(iter); | |
| 442 return err; | |
| 443 } | |
| 444 | |
| 445 return gl_->GetError(); | |
| 446 } | |
| 447 | |
| 448 DELEGATE_TO_GL_2(getFloatv, GetFloatv, WGC3Denum, WGC3Dfloat*) | |
| 449 | |
| 450 DELEGATE_TO_GL_4(getFramebufferAttachmentParameteriv, | |
| 451 GetFramebufferAttachmentParameteriv, | |
| 452 WGC3Denum, WGC3Denum, WGC3Denum, WGC3Dint*) | |
| 453 | |
| 454 DELEGATE_TO_GL_2(getIntegerv, GetIntegerv, WGC3Denum, WGC3Dint*) | |
| 455 | |
| 456 DELEGATE_TO_GL_3(getProgramiv, GetProgramiv, WebGLId, WGC3Denum, WGC3Dint*) | |
| 457 | |
| 458 blink::WebString WebGraphicsContext3DImpl::getProgramInfoLog( | |
| 459 WebGLId program) { | |
| 460 GLint logLength = 0; | |
| 461 gl_->GetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength); | |
| 462 if (!logLength) | |
| 463 return blink::WebString(); | |
| 464 scoped_ptr<GLchar[]> log(new GLchar[logLength]); | |
| 465 if (!log) | |
| 466 return blink::WebString(); | |
| 467 GLsizei returnedLogLength = 0; | |
| 468 gl_->GetProgramInfoLog( | |
| 469 program, logLength, &returnedLogLength, log.get()); | |
| 470 DCHECK_EQ(logLength, returnedLogLength + 1); | |
| 471 blink::WebString res = | |
| 472 blink::WebString::fromUTF8(log.get(), returnedLogLength); | |
| 473 return res; | |
| 474 } | |
| 475 | |
| 476 DELEGATE_TO_GL_3(getRenderbufferParameteriv, GetRenderbufferParameteriv, | |
| 477 WGC3Denum, WGC3Denum, WGC3Dint*) | |
| 478 | |
| 479 DELEGATE_TO_GL_3(getShaderiv, GetShaderiv, WebGLId, WGC3Denum, WGC3Dint*) | |
| 480 | |
| 481 blink::WebString WebGraphicsContext3DImpl::getShaderInfoLog( | |
| 482 WebGLId shader) { | |
| 483 GLint logLength = 0; | |
| 484 gl_->GetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLength); | |
| 485 if (!logLength) | |
| 486 return blink::WebString(); | |
| 487 scoped_ptr<GLchar[]> log(new GLchar[logLength]); | |
| 488 if (!log) | |
| 489 return blink::WebString(); | |
| 490 GLsizei returnedLogLength = 0; | |
| 491 gl_->GetShaderInfoLog( | |
| 492 shader, logLength, &returnedLogLength, log.get()); | |
| 493 DCHECK_EQ(logLength, returnedLogLength + 1); | |
| 494 blink::WebString res = | |
| 495 blink::WebString::fromUTF8(log.get(), returnedLogLength); | |
| 496 return res; | |
| 497 } | |
| 498 | |
| 499 DELEGATE_TO_GL_4(getShaderPrecisionFormat, GetShaderPrecisionFormat, | |
| 500 WGC3Denum, WGC3Denum, WGC3Dint*, WGC3Dint*) | |
| 501 | |
| 502 blink::WebString WebGraphicsContext3DImpl::getShaderSource( | |
| 503 WebGLId shader) { | |
| 504 GLint logLength = 0; | |
| 505 gl_->GetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &logLength); | |
| 506 if (!logLength) | |
| 507 return blink::WebString(); | |
| 508 scoped_ptr<GLchar[]> log(new GLchar[logLength]); | |
| 509 if (!log) | |
| 510 return blink::WebString(); | |
| 511 GLsizei returnedLogLength = 0; | |
| 512 gl_->GetShaderSource( | |
| 513 shader, logLength, &returnedLogLength, log.get()); | |
| 514 if (!returnedLogLength) | |
| 515 return blink::WebString(); | |
| 516 DCHECK_EQ(logLength, returnedLogLength + 1); | |
| 517 blink::WebString res = | |
| 518 blink::WebString::fromUTF8(log.get(), returnedLogLength); | |
| 519 return res; | |
| 520 } | |
| 521 | |
| 522 blink::WebString WebGraphicsContext3DImpl:: | |
| 523 getTranslatedShaderSourceANGLE(WebGLId shader) { | |
| 524 GLint logLength = 0; | |
| 525 gl_->GetShaderiv( | |
| 526 shader, GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE, &logLength); | |
| 527 if (!logLength) | |
| 528 return blink::WebString(); | |
| 529 scoped_ptr<GLchar[]> log(new GLchar[logLength]); | |
| 530 if (!log) | |
| 531 return blink::WebString(); | |
| 532 GLsizei returnedLogLength = 0; | |
| 533 gl_->GetTranslatedShaderSourceANGLE( | |
| 534 shader, logLength, &returnedLogLength, log.get()); | |
| 535 if (!returnedLogLength) | |
| 536 return blink::WebString(); | |
| 537 DCHECK_EQ(logLength, returnedLogLength + 1); | |
| 538 blink::WebString res = | |
| 539 blink::WebString::fromUTF8(log.get(), returnedLogLength); | |
| 540 return res; | |
| 541 } | |
| 542 | |
| 543 blink::WebString WebGraphicsContext3DImpl::getString( | |
| 544 WGC3Denum name) { | |
| 545 return blink::WebString::fromUTF8( | |
| 546 reinterpret_cast<const char*>(gl_->GetString(name))); | |
| 547 } | |
| 548 | |
| 549 DELEGATE_TO_GL_3(getTexParameterfv, GetTexParameterfv, | |
| 550 WGC3Denum, WGC3Denum, WGC3Dfloat*) | |
| 551 | |
| 552 DELEGATE_TO_GL_3(getTexParameteriv, GetTexParameteriv, | |
| 553 WGC3Denum, WGC3Denum, WGC3Dint*) | |
| 554 | |
| 555 DELEGATE_TO_GL_3(getUniformfv, GetUniformfv, WebGLId, WGC3Dint, WGC3Dfloat*) | |
| 556 | |
| 557 DELEGATE_TO_GL_3(getUniformiv, GetUniformiv, WebGLId, WGC3Dint, WGC3Dint*) | |
| 558 | |
| 559 DELEGATE_TO_GL_2R(getUniformLocation, GetUniformLocation, | |
| 560 WebGLId, const WGC3Dchar*, WGC3Dint) | |
| 561 | |
| 562 DELEGATE_TO_GL_3(getVertexAttribfv, GetVertexAttribfv, | |
| 563 WGC3Duint, WGC3Denum, WGC3Dfloat*) | |
| 564 | |
| 565 DELEGATE_TO_GL_3(getVertexAttribiv, GetVertexAttribiv, | |
| 566 WGC3Duint, WGC3Denum, WGC3Dint*) | |
| 567 | |
| 568 WGC3Dsizeiptr WebGraphicsContext3DImpl::getVertexAttribOffset( | |
| 569 WGC3Duint index, WGC3Denum pname) { | |
| 570 GLvoid* value = NULL; | |
| 571 // NOTE: If pname is ever a value that returns more then 1 element | |
| 572 // this will corrupt memory. | |
| 573 gl_->GetVertexAttribPointerv(index, pname, &value); | |
| 574 return static_cast<WGC3Dsizeiptr>(reinterpret_cast<intptr_t>(value)); | |
| 575 } | |
| 576 | |
| 577 DELEGATE_TO_GL_2(hint, Hint, WGC3Denum, WGC3Denum) | |
| 578 | |
| 579 DELEGATE_TO_GL_1RB(isBuffer, IsBuffer, WebGLId, WGC3Dboolean) | |
| 580 | |
| 581 DELEGATE_TO_GL_1RB(isEnabled, IsEnabled, WGC3Denum, WGC3Dboolean) | |
| 582 | |
| 583 DELEGATE_TO_GL_1RB(isFramebuffer, IsFramebuffer, WebGLId, WGC3Dboolean) | |
| 584 | |
| 585 DELEGATE_TO_GL_1RB(isProgram, IsProgram, WebGLId, WGC3Dboolean) | |
| 586 | |
| 587 DELEGATE_TO_GL_1RB(isRenderbuffer, IsRenderbuffer, WebGLId, WGC3Dboolean) | |
| 588 | |
| 589 DELEGATE_TO_GL_1RB(isShader, IsShader, WebGLId, WGC3Dboolean) | |
| 590 | |
| 591 DELEGATE_TO_GL_1RB(isTexture, IsTexture, WebGLId, WGC3Dboolean) | |
| 592 | |
| 593 DELEGATE_TO_GL_1(lineWidth, LineWidth, WGC3Dfloat) | |
| 594 | |
| 595 DELEGATE_TO_GL_1(linkProgram, LinkProgram, WebGLId) | |
| 596 | |
| 597 DELEGATE_TO_GL_2(pixelStorei, PixelStorei, WGC3Denum, WGC3Dint) | |
| 598 | |
| 599 DELEGATE_TO_GL_2(polygonOffset, PolygonOffset, WGC3Dfloat, WGC3Dfloat) | |
| 600 | |
| 601 DELEGATE_TO_GL_7(readPixels, ReadPixels, | |
| 602 WGC3Dint, WGC3Dint, WGC3Dsizei, WGC3Dsizei, WGC3Denum, | |
| 603 WGC3Denum, void*) | |
| 604 | |
| 605 DELEGATE_TO_GL_4(renderbufferStorage, RenderbufferStorage, | |
| 606 WGC3Denum, WGC3Denum, WGC3Dsizei, WGC3Dsizei) | |
| 607 | |
| 608 DELEGATE_TO_GL_2(sampleCoverage, SampleCoverage, WGC3Dfloat, WGC3Dboolean) | |
| 609 | |
| 610 DELEGATE_TO_GL_4(scissor, Scissor, WGC3Dint, WGC3Dint, WGC3Dsizei, WGC3Dsizei) | |
| 611 | |
| 612 void WebGraphicsContext3DImpl::shaderSource( | |
| 613 WebGLId shader, const WGC3Dchar* string) { | |
| 614 GLint length = strlen(string); | |
| 615 gl_->ShaderSource(shader, 1, &string, &length); | |
| 616 } | |
| 617 | |
| 618 DELEGATE_TO_GL_3(stencilFunc, StencilFunc, WGC3Denum, WGC3Dint, WGC3Duint) | |
| 619 | |
| 620 DELEGATE_TO_GL_4(stencilFuncSeparate, StencilFuncSeparate, | |
| 621 WGC3Denum, WGC3Denum, WGC3Dint, WGC3Duint) | |
| 622 | |
| 623 DELEGATE_TO_GL_1(stencilMask, StencilMask, WGC3Duint) | |
| 624 | |
| 625 DELEGATE_TO_GL_2(stencilMaskSeparate, StencilMaskSeparate, | |
| 626 WGC3Denum, WGC3Duint) | |
| 627 | |
| 628 DELEGATE_TO_GL_3(stencilOp, StencilOp, | |
| 629 WGC3Denum, WGC3Denum, WGC3Denum) | |
| 630 | |
| 631 DELEGATE_TO_GL_4(stencilOpSeparate, StencilOpSeparate, | |
| 632 WGC3Denum, WGC3Denum, WGC3Denum, WGC3Denum) | |
| 633 | |
| 634 DELEGATE_TO_GL_9(texImage2D, TexImage2D, | |
| 635 WGC3Denum, WGC3Dint, WGC3Denum, WGC3Dsizei, WGC3Dsizei, | |
| 636 WGC3Dint, WGC3Denum, WGC3Denum, const void*) | |
| 637 | |
| 638 DELEGATE_TO_GL_3(texParameterf, TexParameterf, | |
| 639 WGC3Denum, WGC3Denum, WGC3Dfloat); | |
| 640 | |
| 641 static const unsigned int kTextureWrapR = 0x8072; | |
| 642 | |
| 643 void WebGraphicsContext3DImpl::texParameteri( | |
| 644 WGC3Denum target, WGC3Denum pname, WGC3Dint param) { | |
| 645 // TODO(kbr): figure out whether the setting of TEXTURE_WRAP_R in | |
| 646 // GraphicsContext3D.cpp is strictly necessary to avoid seams at the | |
| 647 // edge of cube maps, and, if it is, push it into the GLES2 service | |
| 648 // side code. | |
| 649 if (pname == kTextureWrapR) { | |
| 650 return; | |
| 651 } | |
| 652 gl_->TexParameteri(target, pname, param); | |
| 653 } | |
| 654 | |
| 655 DELEGATE_TO_GL_9(texSubImage2D, TexSubImage2D, | |
| 656 WGC3Denum, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dsizei, | |
| 657 WGC3Dsizei, WGC3Denum, WGC3Denum, const void*) | |
| 658 | |
| 659 DELEGATE_TO_GL_2(uniform1f, Uniform1f, WGC3Dint, WGC3Dfloat) | |
| 660 | |
| 661 DELEGATE_TO_GL_3(uniform1fv, Uniform1fv, WGC3Dint, WGC3Dsizei, | |
| 662 const WGC3Dfloat*) | |
| 663 | |
| 664 DELEGATE_TO_GL_2(uniform1i, Uniform1i, WGC3Dint, WGC3Dint) | |
| 665 | |
| 666 DELEGATE_TO_GL_3(uniform1iv, Uniform1iv, WGC3Dint, WGC3Dsizei, const WGC3Dint*) | |
| 667 | |
| 668 DELEGATE_TO_GL_3(uniform2f, Uniform2f, WGC3Dint, WGC3Dfloat, WGC3Dfloat) | |
| 669 | |
| 670 DELEGATE_TO_GL_3(uniform2fv, Uniform2fv, WGC3Dint, WGC3Dsizei, | |
| 671 const WGC3Dfloat*) | |
| 672 | |
| 673 DELEGATE_TO_GL_3(uniform2i, Uniform2i, WGC3Dint, WGC3Dint, WGC3Dint) | |
| 674 | |
| 675 DELEGATE_TO_GL_3(uniform2iv, Uniform2iv, WGC3Dint, WGC3Dsizei, const WGC3Dint*) | |
| 676 | |
| 677 DELEGATE_TO_GL_4(uniform3f, Uniform3f, WGC3Dint, | |
| 678 WGC3Dfloat, WGC3Dfloat, WGC3Dfloat) | |
| 679 | |
| 680 DELEGATE_TO_GL_3(uniform3fv, Uniform3fv, WGC3Dint, WGC3Dsizei, | |
| 681 const WGC3Dfloat*) | |
| 682 | |
| 683 DELEGATE_TO_GL_4(uniform3i, Uniform3i, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dint) | |
| 684 | |
| 685 DELEGATE_TO_GL_3(uniform3iv, Uniform3iv, WGC3Dint, WGC3Dsizei, const WGC3Dint*) | |
| 686 | |
| 687 DELEGATE_TO_GL_5(uniform4f, Uniform4f, WGC3Dint, | |
| 688 WGC3Dfloat, WGC3Dfloat, WGC3Dfloat, WGC3Dfloat) | |
| 689 | |
| 690 DELEGATE_TO_GL_3(uniform4fv, Uniform4fv, WGC3Dint, WGC3Dsizei, | |
| 691 const WGC3Dfloat*) | |
| 692 | |
| 693 DELEGATE_TO_GL_5(uniform4i, Uniform4i, WGC3Dint, | |
| 694 WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dint) | |
| 695 | |
| 696 DELEGATE_TO_GL_3(uniform4iv, Uniform4iv, WGC3Dint, WGC3Dsizei, const WGC3Dint*) | |
| 697 | |
| 698 DELEGATE_TO_GL_4(uniformMatrix2fv, UniformMatrix2fv, | |
| 699 WGC3Dint, WGC3Dsizei, WGC3Dboolean, const WGC3Dfloat*) | |
| 700 | |
| 701 DELEGATE_TO_GL_4(uniformMatrix3fv, UniformMatrix3fv, | |
| 702 WGC3Dint, WGC3Dsizei, WGC3Dboolean, const WGC3Dfloat*) | |
| 703 | |
| 704 DELEGATE_TO_GL_4(uniformMatrix4fv, UniformMatrix4fv, | |
| 705 WGC3Dint, WGC3Dsizei, WGC3Dboolean, const WGC3Dfloat*) | |
| 706 | |
| 707 DELEGATE_TO_GL_1(useProgram, UseProgram, WebGLId) | |
| 708 | |
| 709 DELEGATE_TO_GL_1(validateProgram, ValidateProgram, WebGLId) | |
| 710 | |
| 711 DELEGATE_TO_GL_2(vertexAttrib1f, VertexAttrib1f, WGC3Duint, WGC3Dfloat) | |
| 712 | |
| 713 DELEGATE_TO_GL_2(vertexAttrib1fv, VertexAttrib1fv, WGC3Duint, | |
| 714 const WGC3Dfloat*) | |
| 715 | |
| 716 DELEGATE_TO_GL_3(vertexAttrib2f, VertexAttrib2f, WGC3Duint, | |
| 717 WGC3Dfloat, WGC3Dfloat) | |
| 718 | |
| 719 DELEGATE_TO_GL_2(vertexAttrib2fv, VertexAttrib2fv, WGC3Duint, | |
| 720 const WGC3Dfloat*) | |
| 721 | |
| 722 DELEGATE_TO_GL_4(vertexAttrib3f, VertexAttrib3f, WGC3Duint, | |
| 723 WGC3Dfloat, WGC3Dfloat, WGC3Dfloat) | |
| 724 | |
| 725 DELEGATE_TO_GL_2(vertexAttrib3fv, VertexAttrib3fv, WGC3Duint, | |
| 726 const WGC3Dfloat*) | |
| 727 | |
| 728 DELEGATE_TO_GL_5(vertexAttrib4f, VertexAttrib4f, WGC3Duint, | |
| 729 WGC3Dfloat, WGC3Dfloat, WGC3Dfloat, WGC3Dfloat) | |
| 730 | |
| 731 DELEGATE_TO_GL_2(vertexAttrib4fv, VertexAttrib4fv, WGC3Duint, | |
| 732 const WGC3Dfloat*) | |
| 733 | |
| 734 void WebGraphicsContext3DImpl::vertexAttribPointer( | |
| 735 WGC3Duint index, WGC3Dint size, WGC3Denum type, WGC3Dboolean normalized, | |
| 736 WGC3Dsizei stride, WGC3Dintptr offset) { | |
| 737 gl_->VertexAttribPointer( | |
| 738 index, size, type, normalized, stride, | |
| 739 reinterpret_cast<void*>(static_cast<intptr_t>(offset))); | |
| 740 } | |
| 741 | |
| 742 DELEGATE_TO_GL_4(viewport, Viewport, | |
| 743 WGC3Dint, WGC3Dint, WGC3Dsizei, WGC3Dsizei) | |
| 744 | |
| 745 WebGLId WebGraphicsContext3DImpl::createBuffer() { | |
| 746 GLuint o; | |
| 747 gl_->GenBuffers(1, &o); | |
| 748 return o; | |
| 749 } | |
| 750 | |
| 751 WebGLId WebGraphicsContext3DImpl::createFramebuffer() { | |
| 752 GLuint o = 0; | |
| 753 gl_->GenFramebuffers(1, &o); | |
| 754 return o; | |
| 755 } | |
| 756 | |
| 757 WebGLId WebGraphicsContext3DImpl::createRenderbuffer() { | |
| 758 GLuint o; | |
| 759 gl_->GenRenderbuffers(1, &o); | |
| 760 return o; | |
| 761 } | |
| 762 | |
| 763 WebGLId WebGraphicsContext3DImpl::createTexture() { | |
| 764 GLuint o; | |
| 765 gl_->GenTextures(1, &o); | |
| 766 return o; | |
| 767 } | |
| 768 | |
| 769 void WebGraphicsContext3DImpl::deleteBuffer(WebGLId buffer) { | |
| 770 gl_->DeleteBuffers(1, &buffer); | |
| 771 } | |
| 772 | |
| 773 void WebGraphicsContext3DImpl::deleteFramebuffer( | |
| 774 WebGLId framebuffer) { | |
| 775 gl_->DeleteFramebuffers(1, &framebuffer); | |
| 776 } | |
| 777 | |
| 778 void WebGraphicsContext3DImpl::deleteRenderbuffer( | |
| 779 WebGLId renderbuffer) { | |
| 780 gl_->DeleteRenderbuffers(1, &renderbuffer); | |
| 781 } | |
| 782 | |
| 783 void WebGraphicsContext3DImpl::deleteTexture(WebGLId texture) { | |
| 784 gl_->DeleteTextures(1, &texture); | |
| 785 } | |
| 786 | |
| 787 DELEGATE_TO_GL_R(createProgram, CreateProgram, WebGLId) | |
| 788 | |
| 789 DELEGATE_TO_GL_1R(createShader, CreateShader, WGC3Denum, WebGLId) | |
| 790 | |
| 791 DELEGATE_TO_GL_1(deleteProgram, DeleteProgram, WebGLId) | |
| 792 | |
| 793 DELEGATE_TO_GL_1(deleteShader, DeleteShader, WebGLId) | |
| 794 | |
| 795 void WebGraphicsContext3DImpl::setErrorMessageCallback( | |
| 796 WebGraphicsContext3D::WebGraphicsErrorMessageCallback* cb) { | |
| 797 error_message_callback_ = cb; | |
| 798 } | |
| 799 | |
| 800 void WebGraphicsContext3DImpl::setContextLostCallback( | |
| 801 WebGraphicsContext3D::WebGraphicsContextLostCallback* cb) { | |
| 802 context_lost_callback_ = cb; | |
| 803 } | |
| 804 | |
| 805 DELEGATE_TO_GL_5(texImageIOSurface2DCHROMIUM, TexImageIOSurface2DCHROMIUM, | |
| 806 WGC3Denum, WGC3Dint, WGC3Dint, WGC3Duint, WGC3Duint) | |
| 807 | |
| 808 DELEGATE_TO_GL_5(texStorage2DEXT, TexStorage2DEXT, | |
| 809 WGC3Denum, WGC3Dint, WGC3Duint, WGC3Dint, WGC3Dint) | |
| 810 | |
| 811 WebGLId WebGraphicsContext3DImpl::createQueryEXT() { | |
| 812 GLuint o; | |
| 813 gl_->GenQueriesEXT(1, &o); | |
| 814 return o; | |
| 815 } | |
| 816 | |
| 817 void WebGraphicsContext3DImpl::deleteQueryEXT( | |
| 818 WebGLId query) { | |
| 819 gl_->DeleteQueriesEXT(1, &query); | |
| 820 } | |
| 821 | |
| 822 DELEGATE_TO_GL_1R(isQueryEXT, IsQueryEXT, WebGLId, WGC3Dboolean) | |
| 823 DELEGATE_TO_GL_2(beginQueryEXT, BeginQueryEXT, WGC3Denum, WebGLId) | |
| 824 DELEGATE_TO_GL_1(endQueryEXT, EndQueryEXT, WGC3Denum) | |
| 825 DELEGATE_TO_GL_3(getQueryivEXT, GetQueryivEXT, WGC3Denum, WGC3Denum, WGC3Dint*) | |
| 826 DELEGATE_TO_GL_3(getQueryObjectuivEXT, GetQueryObjectuivEXT, | |
| 827 WebGLId, WGC3Denum, WGC3Duint*) | |
| 828 | |
| 829 void WebGraphicsContext3DImpl::copyTextureCHROMIUM(WGC3Denum target, | |
| 830 WebGLId source_id, | |
| 831 WebGLId dest_id, | |
| 832 WGC3Dint level, | |
| 833 WGC3Denum internal_format, | |
| 834 WGC3Denum dest_type) { | |
| 835 copyTextureCHROMIUM(target, source_id, dest_id, internal_format, dest_type); | |
| 836 } | |
| 837 | |
| 838 void WebGraphicsContext3DImpl::copySubTextureCHROMIUM(WGC3Denum target, | |
| 839 WebGLId source_id, | |
| 840 WebGLId dest_id, | |
| 841 WGC3Dint level, | |
| 842 WGC3Dint xoffset, | |
| 843 WGC3Dint yoffset) { | |
| 844 copySubTextureCHROMIUM(target, source_id, dest_id, xoffset, yoffset); | |
| 845 } | |
| 846 | |
| 847 DELEGATE_TO_GL_5(copyTextureCHROMIUM, | |
| 848 CopyTextureCHROMIUM, | |
| 849 WGC3Denum, | |
| 850 WebGLId, | |
| 851 WebGLId, | |
| 852 WGC3Denum, | |
| 853 WGC3Denum); | |
| 854 | |
| 855 DELEGATE_TO_GL_5(copySubTextureCHROMIUM, | |
| 856 CopySubTextureCHROMIUM, | |
| 857 WGC3Denum, | |
| 858 WebGLId, | |
| 859 WebGLId, | |
| 860 WGC3Dint, | |
| 861 WGC3Dint); | |
| 862 | |
| 863 DELEGATE_TO_GL_3(bindUniformLocationCHROMIUM, BindUniformLocationCHROMIUM, | |
| 864 WebGLId, WGC3Dint, const WGC3Dchar*) | |
| 865 | |
| 866 void WebGraphicsContext3DImpl::shallowFlushCHROMIUM() { | |
| 867 flush_id_ = GenFlushID(); | |
| 868 gl_->ShallowFlushCHROMIUM(); | |
| 869 } | |
| 870 | |
| 871 void WebGraphicsContext3DImpl::shallowFinishCHROMIUM() { | |
| 872 flush_id_ = GenFlushID(); | |
| 873 gl_->ShallowFinishCHROMIUM(); | |
| 874 } | |
| 875 | |
| 876 DELEGATE_TO_GL_1(waitSyncPoint, WaitSyncPointCHROMIUM, GLuint) | |
| 877 | |
| 878 void WebGraphicsContext3DImpl::loseContextCHROMIUM( | |
| 879 WGC3Denum current, WGC3Denum other) { | |
| 880 gl_->LoseContextCHROMIUM(current, other); | |
| 881 gl_->Flush(); | |
| 882 } | |
| 883 | |
| 884 DELEGATE_TO_GL_1(genMailboxCHROMIUM, GenMailboxCHROMIUM, WGC3Dbyte*) | |
| 885 DELEGATE_TO_GL_2(produceTextureCHROMIUM, ProduceTextureCHROMIUM, | |
| 886 WGC3Denum, const WGC3Dbyte*) | |
| 887 DELEGATE_TO_GL_3(produceTextureDirectCHROMIUM, ProduceTextureDirectCHROMIUM, | |
| 888 WebGLId, WGC3Denum, const WGC3Dbyte*) | |
| 889 DELEGATE_TO_GL_2(consumeTextureCHROMIUM, ConsumeTextureCHROMIUM, | |
| 890 WGC3Denum, const WGC3Dbyte*) | |
| 891 DELEGATE_TO_GL_2R(createAndConsumeTextureCHROMIUM, | |
| 892 CreateAndConsumeTextureCHROMIUM, | |
| 893 WGC3Denum, const WGC3Dbyte*, WebGLId) | |
| 894 | |
| 895 DELEGATE_TO_GL_2(genValuebuffersCHROMIUM, | |
| 896 GenValuebuffersCHROMIUM, | |
| 897 WGC3Dsizei, | |
| 898 WebGLId*); | |
| 899 | |
| 900 WebGLId WebGraphicsContext3DImpl::createValuebufferCHROMIUM() { | |
| 901 GLuint o; | |
| 902 gl_->GenValuebuffersCHROMIUM(1, &o); | |
| 903 return o; | |
| 904 } | |
| 905 | |
| 906 DELEGATE_TO_GL_2(deleteValuebuffersCHROMIUM, | |
| 907 DeleteValuebuffersCHROMIUM, | |
| 908 WGC3Dsizei, | |
| 909 WebGLId*); | |
| 910 | |
| 911 void WebGraphicsContext3DImpl::deleteValuebufferCHROMIUM(WebGLId valuebuffer) { | |
| 912 gl_->DeleteValuebuffersCHROMIUM(1, &valuebuffer); | |
| 913 } | |
| 914 | |
| 915 DELEGATE_TO_GL_1RB(isValuebufferCHROMIUM, | |
| 916 IsValuebufferCHROMIUM, | |
| 917 WebGLId, | |
| 918 WGC3Dboolean) | |
| 919 DELEGATE_TO_GL_2(bindValuebufferCHROMIUM, | |
| 920 BindValuebufferCHROMIUM, | |
| 921 WGC3Denum, | |
| 922 WebGLId) | |
| 923 DELEGATE_TO_GL_2(subscribeValueCHROMIUM, | |
| 924 SubscribeValueCHROMIUM, | |
| 925 WGC3Denum, | |
| 926 WGC3Denum); | |
| 927 DELEGATE_TO_GL_1(populateSubscribedValuesCHROMIUM, | |
| 928 PopulateSubscribedValuesCHROMIUM, | |
| 929 WGC3Denum); | |
| 930 DELEGATE_TO_GL_3(uniformValuebufferCHROMIUM, | |
| 931 UniformValuebufferCHROMIUM, | |
| 932 WGC3Dint, | |
| 933 WGC3Denum, | |
| 934 WGC3Denum); | |
| 935 DELEGATE_TO_GL_2(traceBeginCHROMIUM, | |
| 936 TraceBeginCHROMIUM, | |
| 937 const WGC3Dchar*, | |
| 938 const WGC3Dchar*); | |
| 939 DELEGATE_TO_GL(traceEndCHROMIUM, TraceEndCHROMIUM); | |
| 940 | |
| 941 void WebGraphicsContext3DImpl::insertEventMarkerEXT( | |
| 942 const WGC3Dchar* marker) { | |
| 943 gl_->InsertEventMarkerEXT(0, marker); | |
| 944 } | |
| 945 | |
| 946 void WebGraphicsContext3DImpl::pushGroupMarkerEXT( | |
| 947 const WGC3Dchar* marker) { | |
| 948 gl_->PushGroupMarkerEXT(0, marker); | |
| 949 } | |
| 950 | |
| 951 DELEGATE_TO_GL(popGroupMarkerEXT, PopGroupMarkerEXT); | |
| 952 | |
| 953 WebGLId WebGraphicsContext3DImpl::createVertexArrayOES() { | |
| 954 GLuint array; | |
| 955 gl_->GenVertexArraysOES(1, &array); | |
| 956 return array; | |
| 957 } | |
| 958 | |
| 959 void WebGraphicsContext3DImpl::deleteVertexArrayOES( | |
| 960 WebGLId array) { | |
| 961 gl_->DeleteVertexArraysOES(1, &array); | |
| 962 } | |
| 963 | |
| 964 DELEGATE_TO_GL_1R(isVertexArrayOES, IsVertexArrayOES, WebGLId, WGC3Dboolean) | |
| 965 DELEGATE_TO_GL_1(bindVertexArrayOES, BindVertexArrayOES, WebGLId) | |
| 966 | |
| 967 DELEGATE_TO_GL_2(bindTexImage2DCHROMIUM, BindTexImage2DCHROMIUM, | |
| 968 WGC3Denum, WGC3Dint) | |
| 969 DELEGATE_TO_GL_2(releaseTexImage2DCHROMIUM, ReleaseTexImage2DCHROMIUM, | |
| 970 WGC3Denum, WGC3Dint) | |
| 971 | |
| 972 DELEGATE_TO_GL_2R(mapBufferCHROMIUM, MapBufferCHROMIUM, WGC3Denum, WGC3Denum, | |
| 973 void*) | |
| 974 DELEGATE_TO_GL_1R(unmapBufferCHROMIUM, UnmapBufferCHROMIUM, WGC3Denum, | |
| 975 WGC3Dboolean) | |
| 976 | |
| 977 DELEGATE_TO_GL_9(asyncTexImage2DCHROMIUM, AsyncTexImage2DCHROMIUM, WGC3Denum, | |
| 978 WGC3Dint, WGC3Denum, WGC3Dsizei, WGC3Dsizei, WGC3Dint, | |
| 979 WGC3Denum, WGC3Denum, const void*) | |
| 980 DELEGATE_TO_GL_9(asyncTexSubImage2DCHROMIUM, AsyncTexSubImage2DCHROMIUM, | |
| 981 WGC3Denum, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dsizei, | |
| 982 WGC3Dsizei, WGC3Denum, WGC3Denum, const void*) | |
| 983 | |
| 984 DELEGATE_TO_GL_1(waitAsyncTexImage2DCHROMIUM, WaitAsyncTexImage2DCHROMIUM, | |
| 985 WGC3Denum) | |
| 986 | |
| 987 DELEGATE_TO_GL_2(drawBuffersEXT, DrawBuffersEXT, WGC3Dsizei, const WGC3Denum*) | |
| 988 | |
| 989 DELEGATE_TO_GL_4(drawArraysInstancedANGLE, DrawArraysInstancedANGLE, WGC3Denum, | |
| 990 WGC3Dint, WGC3Dsizei, WGC3Dsizei) | |
| 991 | |
| 992 void WebGraphicsContext3DImpl::drawElementsInstancedANGLE( | |
| 993 WGC3Denum mode, | |
| 994 WGC3Dsizei count, | |
| 995 WGC3Denum type, | |
| 996 WGC3Dintptr offset, | |
| 997 WGC3Dsizei primcount) { | |
| 998 gl_->DrawElementsInstancedANGLE( | |
| 999 mode, count, type, | |
| 1000 reinterpret_cast<void*>(static_cast<intptr_t>(offset)), primcount); | |
| 1001 } | |
| 1002 | |
| 1003 DELEGATE_TO_GL_2(vertexAttribDivisorANGLE, VertexAttribDivisorANGLE, WGC3Duint, | |
| 1004 WGC3Duint) | |
| 1005 | |
| 1006 DELEGATE_TO_GL_4R(createGpuMemoryBufferImageCHROMIUM, | |
| 1007 CreateGpuMemoryBufferImageCHROMIUM, | |
| 1008 WGC3Dsizei, | |
| 1009 WGC3Dsizei, | |
| 1010 WGC3Denum, | |
| 1011 WGC3Denum, | |
| 1012 WGC3Duint); | |
| 1013 | |
| 1014 DELEGATE_TO_GL_1(destroyImageCHROMIUM, DestroyImageCHROMIUM, WGC3Duint); | |
| 1015 | |
| 1016 DELEGATE_TO_GL_6(framebufferTexture2DMultisampleEXT, | |
| 1017 FramebufferTexture2DMultisampleEXT, | |
| 1018 WGC3Denum, WGC3Denum, WGC3Denum, WebGLId, WGC3Dint, WGC3Dsizei) | |
| 1019 | |
| 1020 DELEGATE_TO_GL_5(renderbufferStorageMultisampleEXT, | |
| 1021 RenderbufferStorageMultisampleEXT, WGC3Denum, WGC3Dsizei, | |
| 1022 WGC3Denum, WGC3Dsizei, WGC3Dsizei) | |
| 1023 | |
| 1024 DELEGATE_TO_GL_1(beginTransformFeedback, BeginTransformFeedback, WGC3Denum) | |
| 1025 DELEGATE_TO_GL_3(bindBufferBase, BindBufferBase, WGC3Denum, WGC3Duint, | |
| 1026 WGC3Duint) | |
| 1027 DELEGATE_TO_GL_5(bindBufferRange, BindBufferRange, WGC3Denum, WGC3Duint, | |
| 1028 WGC3Duint, WGC3Dintptr, WGC3Dsizeiptr) | |
| 1029 DELEGATE_TO_GL_2(bindSampler, BindSampler, WGC3Duint, WebGLId) | |
| 1030 DELEGATE_TO_GL_2(bindTransformFeedback, BindTransformFeedback, WGC3Denum, | |
| 1031 WebGLId) | |
| 1032 DELEGATE_TO_GL_4(clearBufferfi, ClearBufferfi, WGC3Denum, WGC3Dint, WGC3Dfloat, | |
| 1033 WGC3Dint) | |
| 1034 DELEGATE_TO_GL_3(clearBufferfv, ClearBufferfv, WGC3Denum, WGC3Dint, | |
| 1035 const WGC3Dfloat *) | |
| 1036 DELEGATE_TO_GL_3(clearBufferiv, ClearBufferiv, WGC3Denum, WGC3Dint, | |
| 1037 const WGC3Dint *) | |
| 1038 DELEGATE_TO_GL_3(clearBufferuiv, ClearBufferuiv, WGC3Denum, WGC3Dint, | |
| 1039 const WGC3Duint *) | |
| 1040 //DELEGATE_TO_GL_3R(clientWaitSync, ClientWaitSync, WebGLId, WGC3Dbitfield, | |
| 1041 // WGC3Duint64, WGC3Denum) | |
| 1042 //DELEGATE_TO_GL_9(compressedTexImage3D, CompressedTexImage3D, WGC3Denum, | |
| 1043 // WGC3Dint, WGC3Denum, WGC3Dsizei, WGC3Dsizei, WGC3Dsizei, | |
| 1044 // WGC3Dint, WGC3Dsizei, const void *) | |
| 1045 //DELEGATE_TO_GL_11(compressedTexSubImage3D, CompressedTexSubImage3D, WGC3Denum, | |
| 1046 // WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dsizei, | |
| 1047 // WGC3Dsizei, WGC3Dsizei, WGC3Denum, WGC3Dsizei, const void *) | |
| 1048 DELEGATE_TO_GL_5(copyBufferSubData, CopyBufferSubData, WGC3Denum, WGC3Denum, | |
| 1049 WGC3Dintptr, WGC3Dintptr, WGC3Dsizeiptr) | |
| 1050 DELEGATE_TO_GL_9(copyTexSubImage3D, CopyTexSubImage3D, WGC3Denum, WGC3Dint, | |
| 1051 WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dint, WGC3Dsizei, | |
| 1052 WGC3Dsizei) | |
| 1053 WebGLId WebGraphicsContext3DImpl::createSampler() { | |
| 1054 GLuint sampler; | |
| 1055 gl_->GenSamplers(1, &sampler); | |
| 1056 return sampler; | |
| 1057 } | |
| 1058 WebGLId WebGraphicsContext3DImpl::createTransformFeedback() { | |
| 1059 GLuint tf; | |
| 1060 gl_->GenTransformFeedbacks(1, &tf); | |
| 1061 return tf; | |
| 1062 } | |
| 1063 void WebGraphicsContext3DImpl::deleteSampler(WebGLId sampler) { | |
| 1064 gl_->DeleteSamplers(1, &sampler); | |
| 1065 } | |
| 1066 //DELEGATE_TO_GL_1(deleteSync, DeleteSync, WebGLId) | |
| 1067 void WebGraphicsContext3DImpl::deleteTransformFeedback(WebGLId tf) { | |
| 1068 gl_->DeleteTransformFeedbacks(1, &tf); | |
| 1069 } | |
| 1070 DELEGATE_TO_GL(endTransformFeedback, EndTransformFeedback) | |
| 1071 //DELEGATE_TO_GL_2R(fenceSync, FenceSync, WGC3Denum, WGC3Dbitfield, WebGLId) | |
| 1072 DELEGATE_TO_GL_5(framebufferTextureLayer, FramebufferTextureLayer, WGC3Denum, | |
| 1073 WGC3Denum, WGC3Duint, WGC3Dint, WGC3Dint) | |
| 1074 DELEGATE_TO_GL_5(getActiveUniformBlockName, GetActiveUniformBlockName, | |
| 1075 WGC3Duint, WGC3Duint, WGC3Dsizei, WGC3Dsizei *, WGC3Dchar *) | |
| 1076 DELEGATE_TO_GL_4(getActiveUniformBlockiv, GetActiveUniformBlockiv, WGC3Duint, | |
| 1077 WGC3Duint, WGC3Denum, WGC3Dint *) | |
| 1078 //DELEGATE_TO_GL_5(getActiveUniformsiv, GetActiveUniformsiv, WGC3Duint, | |
| 1079 // WGC3Dsizei, const WGC3Duint *, WGC3Denum, WGC3Dint *) | |
| 1080 DELEGATE_TO_GL_2R(getFragDataLocation, GetFragDataLocation, WGC3Duint, | |
| 1081 const WGC3Dchar *, WGC3Dint) | |
| 1082 DELEGATE_TO_GL_5(getInternalformativ, GetInternalformativ, WGC3Denum, WGC3Denum, | |
| 1083 WGC3Denum, WGC3Dsizei, WGC3Dint *) | |
| 1084 DELEGATE_TO_GL_3(getSamplerParameterfv, GetSamplerParameterfv, WGC3Duint, | |
| 1085 WGC3Denum, WGC3Dfloat *) | |
| 1086 DELEGATE_TO_GL_3(getSamplerParameteriv, GetSamplerParameteriv, WGC3Duint, | |
| 1087 WGC3Denum, WGC3Dint *) | |
| 1088 //DELEGATE_TO_GL_7(getTransformFeedbackVarying, GetTransformFeedbackVarying, | |
| 1089 // WGC3Duint, WGC3Duint, WGC3Dsizei, WGC3Dsizei *, WGC3Dsizei *, | |
| 1090 // WGC3Denum *, WGC3Dchar *) | |
| 1091 DELEGATE_TO_GL_2R(getUniformBlockIndex, GetUniformBlockIndex, WGC3Duint, | |
| 1092 const WGC3Dchar *, WGC3Duint) | |
| 1093 //DELEGATE_TO_GL_4(getUniformIndices, GetUniformIndices, WGC3Duint, WGC3Dsizei, | |
| 1094 // const WGC3Dchar *const*, WGC3Duint *) | |
| 1095 //DELEGATE_TO_GL_3(getUniformuiv, GetUniformuiv, WGC3Duint, WGC3Dint, | |
| 1096 // WGC3Duint *) | |
| 1097 //DELEGATE_TO_GL_3(getVertexAttribIiv, GetVertexAttribIiv, WGC3Duint, | |
| 1098 // WGC3Denum, WGC3Dint *) | |
| 1099 //DELEGATE_TO_GL_3(getVertexAttribIuiv, GetVertexAttribIuiv, WGC3Duint, | |
| 1100 // WGC3Denum, WGC3Duint *) | |
| 1101 DELEGATE_TO_GL_3(invalidateFramebuffer, InvalidateFramebuffer, WGC3Denum, | |
| 1102 WGC3Dsizei, const WGC3Denum *) | |
| 1103 DELEGATE_TO_GL_7(invalidateSubFramebuffer, InvalidateSubFramebuffer, WGC3Denum, | |
| 1104 WGC3Dsizei, const WGC3Denum *, WGC3Dint, WGC3Dint, WGC3Dsizei, | |
| 1105 WGC3Dsizei) | |
| 1106 DELEGATE_TO_GL_1R(isSampler, IsSampler, WebGLId, WGC3Dboolean) | |
| 1107 //DELEGATE_TO_GL_1R(isSync, IsSync, WebGLId, WGC3Dboolean) | |
| 1108 DELEGATE_TO_GL_1R(isTransformFeedback, IsTransformFeedback, WGC3Duint, | |
| 1109 WGC3Dboolean) | |
| 1110 DELEGATE_TO_GL(pauseTransformFeedback, PauseTransformFeedback) | |
| 1111 //DELEGATE_TO_GL_3(programParameteri, ProgramParameteri, WGC3Duint, WGC3Denum, | |
| 1112 // WGC3Dint) | |
| 1113 DELEGATE_TO_GL_1(readBuffer, ReadBuffer, WGC3Denum) | |
| 1114 DELEGATE_TO_GL(resumeTransformFeedback, ResumeTransformFeedback) | |
| 1115 DELEGATE_TO_GL_3(samplerParameterf, SamplerParameterf, WGC3Duint, WGC3Denum, | |
| 1116 WGC3Dfloat) | |
| 1117 DELEGATE_TO_GL_3(samplerParameterfv, SamplerParameterfv, WGC3Duint, WGC3Denum, | |
| 1118 const WGC3Dfloat *) | |
| 1119 DELEGATE_TO_GL_3(samplerParameteri, SamplerParameteri, WGC3Duint, WGC3Denum, | |
| 1120 WGC3Dint) | |
| 1121 DELEGATE_TO_GL_3(samplerParameteriv, SamplerParameteriv, WGC3Duint, WGC3Denum, | |
| 1122 const WGC3Dint *) | |
| 1123 DELEGATE_TO_GL_10(texImage3D, TexImage3D, WGC3Denum, WGC3Dint, WGC3Dint, | |
| 1124 WGC3Dsizei, WGC3Dsizei, WGC3Dsizei, WGC3Dint, WGC3Denum, | |
| 1125 WGC3Denum, const void *) | |
| 1126 DELEGATE_TO_GL_6(texStorage3D, TexStorage3D, WGC3Denum, WGC3Dsizei, WGC3Denum, | |
| 1127 WGC3Dsizei, WGC3Dsizei, WGC3Dsizei) | |
| 1128 DELEGATE_TO_GL_11(texSubImage3D, TexSubImage3D, WGC3Denum, WGC3Dint, WGC3Dint, | |
| 1129 WGC3Dint, WGC3Dint, WGC3Dsizei, WGC3Dsizei, WGC3Dsizei, | |
| 1130 WGC3Denum, WGC3Denum, const void *) | |
| 1131 DELEGATE_TO_GL_4(transformFeedbackVaryings, TransformFeedbackVaryings, | |
| 1132 WGC3Duint, WGC3Dsizei, const WGC3Dchar *const*, WGC3Denum) | |
| 1133 DELEGATE_TO_GL_2(uniform1ui, Uniform1ui, WGC3Dint, WGC3Duint) | |
| 1134 DELEGATE_TO_GL_3(uniform1uiv, Uniform1uiv, WGC3Dint, WGC3Dsizei, | |
| 1135 const WGC3Duint *) | |
| 1136 DELEGATE_TO_GL_3(uniform2ui, Uniform2ui, WGC3Dint, WGC3Duint, WGC3Duint) | |
| 1137 DELEGATE_TO_GL_3(uniform2uiv, Uniform2uiv, WGC3Dint, WGC3Dsizei, | |
| 1138 const WGC3Duint *) | |
| 1139 DELEGATE_TO_GL_4(uniform3ui, Uniform3ui, WGC3Dint, WGC3Duint, WGC3Duint, | |
| 1140 WGC3Duint) | |
| 1141 DELEGATE_TO_GL_3(uniform3uiv, Uniform3uiv, WGC3Dint, WGC3Dsizei, | |
| 1142 const WGC3Duint *) | |
| 1143 DELEGATE_TO_GL_5(uniform4ui, Uniform4ui, WGC3Dint, WGC3Duint, WGC3Duint, | |
| 1144 WGC3Duint, WGC3Duint) | |
| 1145 DELEGATE_TO_GL_3(uniform4uiv, Uniform4uiv, WGC3Dint, WGC3Dsizei, | |
| 1146 const WGC3Duint *) | |
| 1147 DELEGATE_TO_GL_3(uniformBlockBinding, UniformBlockBinding, WGC3Duint, WGC3Duint, | |
| 1148 WGC3Duint) | |
| 1149 DELEGATE_TO_GL_4(uniformMatrix2x3fv, UniformMatrix2x3fv, WGC3Dint, WGC3Dsizei, | |
| 1150 WGC3Dboolean, const WGC3Dfloat*) | |
| 1151 DELEGATE_TO_GL_4(uniformMatrix2x4fv, UniformMatrix2x4fv, WGC3Dint, WGC3Dsizei, | |
| 1152 WGC3Dboolean, const WGC3Dfloat*) | |
| 1153 DELEGATE_TO_GL_4(uniformMatrix3x2fv, UniformMatrix3x2fv, WGC3Dint, WGC3Dsizei, | |
| 1154 WGC3Dboolean, const WGC3Dfloat*) | |
| 1155 DELEGATE_TO_GL_4(uniformMatrix3x4fv, UniformMatrix3x4fv, WGC3Dint, WGC3Dsizei, | |
| 1156 WGC3Dboolean, const WGC3Dfloat*) | |
| 1157 DELEGATE_TO_GL_4(uniformMatrix4x2fv, UniformMatrix4x2fv, WGC3Dint, WGC3Dsizei, | |
| 1158 WGC3Dboolean, const WGC3Dfloat*) | |
| 1159 DELEGATE_TO_GL_4(uniformMatrix4x3fv, UniformMatrix4x3fv, WGC3Dint, WGC3Dsizei, | |
| 1160 WGC3Dboolean, const WGC3Dfloat*) | |
| 1161 DELEGATE_TO_GL_5(vertexAttribI4i, VertexAttribI4i, WGC3Duint, WGC3Dint, | |
| 1162 WGC3Dint, WGC3Dint, WGC3Dint) | |
| 1163 DELEGATE_TO_GL_2(vertexAttribI4iv, VertexAttribI4iv, WGC3Duint, | |
| 1164 const WGC3Dint *) | |
| 1165 DELEGATE_TO_GL_5(vertexAttribI4ui, VertexAttribI4ui, WGC3Duint, WGC3Duint, | |
| 1166 WGC3Duint, WGC3Duint, WGC3Duint) | |
| 1167 DELEGATE_TO_GL_2(vertexAttribI4uiv, VertexAttribI4uiv, WGC3Duint, | |
| 1168 const WGC3Duint *) | |
| 1169 void WebGraphicsContext3DImpl::vertexAttribIPointer( | |
| 1170 WGC3Duint index, WGC3Dint size, WGC3Denum type, WGC3Dsizei stride, | |
| 1171 WGC3Dintptr offset) { | |
| 1172 gl_->VertexAttribIPointer( | |
| 1173 index, size, type, stride, | |
| 1174 reinterpret_cast<void*>(static_cast<intptr_t>(offset))); | |
| 1175 } | |
| 1176 //DELEGATE_TO_GL_3(waitSync, WaitSync, WebGLId, WGC3Dbitfield, WGC3Duint64) | |
| 1177 | |
| 1178 GrGLInterface* WebGraphicsContext3DImpl::createGrGLInterface() { | |
| 1179 return skia_bindings::CreateCommandBufferSkiaGLBinding(); | |
| 1180 } | |
| 1181 | |
| 1182 ::gpu::gles2::GLES2ImplementationErrorMessageCallback* | |
| 1183 WebGraphicsContext3DImpl::getErrorMessageCallback() { | |
| 1184 if (!client_error_message_callback_) { | |
| 1185 client_error_message_callback_.reset( | |
| 1186 new WebGraphicsContext3DErrorMessageCallback(this)); | |
| 1187 } | |
| 1188 return client_error_message_callback_.get(); | |
| 1189 } | |
| 1190 | |
| 1191 void WebGraphicsContext3DImpl::OnErrorMessage( | |
| 1192 const std::string& message, int id) { | |
| 1193 if (error_message_callback_) { | |
| 1194 blink::WebString str = blink::WebString::fromUTF8(message.c_str()); | |
| 1195 error_message_callback_->onErrorMessage(str, id); | |
| 1196 } | |
| 1197 } | |
| 1198 | |
| 1199 // TODO(bajones): Look into removing these functions from the blink interface | |
| 1200 void WebGraphicsContext3DImpl::prepareTexture() { | |
| 1201 NOTREACHED(); | |
| 1202 } | |
| 1203 | |
| 1204 void WebGraphicsContext3DImpl::postSubBufferCHROMIUM( | |
| 1205 int x, int y, int width, int height) { | |
| 1206 NOTREACHED(); | |
| 1207 } | |
| 1208 | |
| 1209 void WebGraphicsContext3DImpl::setVisibilityCHROMIUM( | |
| 1210 bool visible) { | |
| 1211 NOTREACHED(); | |
| 1212 } | |
| 1213 | |
| 1214 void WebGraphicsContext3DImpl::copyTextureToParentTextureCHROMIUM( | |
| 1215 WebGLId texture, WebGLId parentTexture) { | |
| 1216 NOTIMPLEMENTED(); | |
| 1217 } | |
| 1218 | |
| 1219 void WebGraphicsContext3DImpl::releaseShaderCompiler() { | |
| 1220 } | |
| 1221 | |
| 1222 // static | |
| 1223 void WebGraphicsContext3DImpl::ConvertAttributes( | |
| 1224 const blink::WebGraphicsContext3D::Attributes& attributes, | |
| 1225 ::gpu::gles2::ContextCreationAttribHelper* output_attribs) { | |
| 1226 output_attribs->alpha_size = attributes.alpha ? 8 : 0; | |
| 1227 output_attribs->depth_size = attributes.depth ? 24 : 0; | |
| 1228 output_attribs->stencil_size = attributes.stencil ? 8 : 0; | |
| 1229 output_attribs->samples = attributes.antialias ? 4 : 0; | |
| 1230 output_attribs->sample_buffers = attributes.antialias ? 1 : 0; | |
| 1231 output_attribs->fail_if_major_perf_caveat = | |
| 1232 attributes.failIfMajorPerformanceCaveat; | |
| 1233 output_attribs->bind_generates_resource = false; | |
| 1234 output_attribs->es3_context_required = | |
| 1235 (attributes.webGL && attributes.webGLVersion == 2); | |
| 1236 } | |
| 1237 | |
| 1238 } // namespace gpu_blink | |
| OLD | NEW |