OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
215 if (!desiredSize.isEmpty()) { | 215 if (!desiredSize.isEmpty()) { |
216 forciblyEvictedContexts().remove(0); | 216 forciblyEvictedContexts().remove(0); |
217 evictedContext->forceRestoreContext(); | 217 evictedContext->forceRestoreContext(); |
218 } | 218 } |
219 break; | 219 break; |
220 } | 220 } |
221 } | 221 } |
222 | 222 |
223 namespace { | 223 namespace { |
224 | 224 |
225 // ScopedDrawingBufferBinder is used for ReadPixels/CopyTexImage2D/CopySubIm age2D to read from | 225 // ScopedDrawingBufferBinder is used for ReadPixels/CopyTexImage2D/CopySubImage2 D to read from |
226 // a multisampled DrawingBuffer. In this situation, we need to blit to a sin gle sampled buffer | 226 // a multisampled DrawingBuffer. In this situation, we need to blit to a single sampled buffer |
227 // for reading, during which the bindings could be changed and need to be re covered. | 227 // for reading, during which the bindings could be changed and need to be recove red. |
228 class ScopedDrawingBufferBinder { | 228 class ScopedDrawingBufferBinder { |
229 STACK_ALLOCATED(); | 229 STACK_ALLOCATED(); |
230 public: | 230 public: |
231 ScopedDrawingBufferBinder(DrawingBuffer* drawingBuffer, WebGLFramebuffer * framebufferBinding) | 231 ScopedDrawingBufferBinder(DrawingBuffer* drawingBuffer, WebGLFramebuffer* fr amebufferBinding) |
232 : m_drawingBuffer(drawingBuffer) | 232 : m_drawingBuffer(drawingBuffer) |
233 , m_readFramebufferBinding(framebufferBinding) | 233 , m_readFramebufferBinding(framebufferBinding) |
234 { | 234 { |
235 // Commit DrawingBuffer if needed (e.g., for multisampling) | 235 // Commit DrawingBuffer if needed (e.g., for multisampling) |
236 if (!m_readFramebufferBinding && m_drawingBuffer) | 236 if (!m_readFramebufferBinding && m_drawingBuffer) |
237 m_drawingBuffer->commit(); | 237 m_drawingBuffer->commit(); |
238 } | 238 } |
239 | 239 |
240 ~ScopedDrawingBufferBinder() | 240 ~ScopedDrawingBufferBinder() |
241 { | 241 { |
242 // Restore DrawingBuffer if needed | 242 // Restore DrawingBuffer if needed |
243 if (!m_readFramebufferBinding && m_drawingBuffer) | 243 if (!m_readFramebufferBinding && m_drawingBuffer) |
244 m_drawingBuffer->restoreFramebufferBindings(); | 244 m_drawingBuffer->restoreFramebufferBindings(); |
245 } | 245 } |
246 | 246 |
247 private: | 247 private: |
248 DrawingBuffer* m_drawingBuffer; | 248 DrawingBuffer* m_drawingBuffer; |
249 RawPtrWillBeMember<WebGLFramebuffer> m_readFramebufferBinding; | 249 Member<WebGLFramebuffer> m_readFramebufferBinding; |
250 }; | |
251 | |
252 GLint clamp(GLint value, GLint min, GLint max) | |
253 { | |
254 if (value < min) | |
255 value = min; | |
256 if (value > max) | |
257 value = max; | |
258 return value; | |
259 } | |
260 | |
261 // Return true if a character belongs to the ASCII subset as defined in | |
262 // GLSL ES 1.0 spec section 3.1. | |
263 bool validateCharacter(unsigned char c) | |
264 { | |
265 // Printing characters are valid except " $ ` @ \ ' DEL. | |
266 if (c >= 32 && c <= 126 | |
267 && c != '"' && c != '$' && c != '`' && c != '@' && c != '\\' && c != '\' ') | |
268 return true; | |
269 // Horizontal tab, line feed, vertical tab, form feed, carriage return | |
270 // are also valid. | |
271 if (c >= 9 && c <= 13) | |
272 return true; | |
273 return false; | |
274 } | |
275 | |
276 bool isPrefixReserved(const String& name) | |
277 { | |
278 if (name.startsWith("gl_") || name.startsWith("webgl_") || name.startsWith(" _webgl_")) | |
279 return true; | |
280 return false; | |
281 } | |
282 | |
283 // Strips comments from shader text. This allows non-ASCII characters | |
284 // to be used in comments without potentially breaking OpenGL | |
285 // implementations not expecting characters outside the GLSL ES set. | |
286 class StripComments { | |
287 public: | |
288 StripComments(const String& str) | |
289 : m_parseState(BeginningOfLine) | |
290 , m_sourceString(str) | |
291 , m_length(str.length()) | |
292 , m_position(0) | |
293 { | |
294 parse(); | |
295 } | |
296 | |
297 String result() | |
298 { | |
299 return m_builder.toString(); | |
300 } | |
301 | |
302 private: | |
303 bool hasMoreCharacters() const | |
304 { | |
305 return (m_position < m_length); | |
306 } | |
307 | |
308 void parse() | |
309 { | |
310 while (hasMoreCharacters()) { | |
311 process(current()); | |
312 // process() might advance the position. | |
313 if (hasMoreCharacters()) | |
314 advance(); | |
315 } | |
316 } | |
317 | |
318 void process(UChar); | |
319 | |
320 bool peek(UChar& character) const | |
321 { | |
322 if (m_position + 1 >= m_length) | |
323 return false; | |
324 character = m_sourceString[m_position + 1]; | |
325 return true; | |
326 } | |
327 | |
328 UChar current() | |
329 { | |
330 ASSERT_WITH_SECURITY_IMPLICATION(m_position < m_length); | |
331 return m_sourceString[m_position]; | |
332 } | |
333 | |
334 void advance() | |
335 { | |
336 ++m_position; | |
337 } | |
338 | |
339 static bool isNewline(UChar character) | |
340 { | |
341 // Don't attempt to canonicalize newline related characters. | |
342 return (character == '\n' || character == '\r'); | |
343 } | |
344 | |
345 void emit(UChar character) | |
346 { | |
347 m_builder.append(character); | |
348 } | |
349 | |
350 enum ParseState { | |
351 // Have not seen an ASCII non-whitespace character yet on | |
352 // this line. Possible that we might see a preprocessor | |
353 // directive. | |
354 BeginningOfLine, | |
355 | |
356 // Have seen at least one ASCII non-whitespace character | |
357 // on this line. | |
358 MiddleOfLine, | |
359 | |
360 // Handling a preprocessor directive. Passes through all | |
361 // characters up to the end of the line. Disables comment | |
362 // processing. | |
363 InPreprocessorDirective, | |
364 | |
365 // Handling a single-line comment. The comment text is | |
366 // replaced with a single space. | |
367 InSingleLineComment, | |
368 | |
369 // Handling a multi-line comment. Newlines are passed | |
370 // through to preserve line numbers. | |
371 InMultiLineComment | |
250 }; | 372 }; |
251 | 373 |
252 GLint clamp(GLint value, GLint min, GLint max) | 374 ParseState m_parseState; |
253 { | 375 String m_sourceString; |
254 if (value < min) | 376 unsigned m_length; |
255 value = min; | 377 unsigned m_position; |
256 if (value > max) | 378 StringBuilder m_builder; |
257 value = max; | 379 }; |
258 return value; | 380 |
259 } | 381 void StripComments::process(UChar c) |
260 | 382 { |
261 // Return true if a character belongs to the ASCII subset as defined in | 383 if (isNewline(c)) { |
262 // GLSL ES 1.0 spec section 3.1. | 384 // No matter what state we are in, pass through newlines |
263 bool validateCharacter(unsigned char c) | 385 // so we preserve line numbers. |
264 { | 386 emit(c); |
265 // Printing characters are valid except " $ ` @ \ ' DEL. | 387 |
266 if (c >= 32 && c <= 126 | 388 if (m_parseState != InMultiLineComment) |
267 && c != '"' && c != '$' && c != '`' && c != '@' && c != '\\' && c != '\'') | 389 m_parseState = BeginningOfLine; |
268 return true; | 390 |
269 // Horizontal tab, line feed, vertical tab, form feed, carriage return | 391 return; |
270 // are also valid. | 392 } |
271 if (c >= 9 && c <= 13) | 393 |
272 return true; | 394 UChar temp = 0; |
273 return false; | 395 switch (m_parseState) { |
274 } | 396 case BeginningOfLine: |
275 | 397 if (WTF::isASCIISpace(c)) { |
276 bool isPrefixReserved(const String& name) | |
277 { | |
278 if (name.startsWith("gl_") || name.startsWith("webgl_") || name.startsWi th("_webgl_")) | |
279 return true; | |
280 return false; | |
281 } | |
282 | |
283 // Strips comments from shader text. This allows non-ASCII characters | |
284 // to be used in comments without potentially breaking OpenGL | |
285 // implementations not expecting characters outside the GLSL ES set. | |
286 class StripComments { | |
287 public: | |
288 StripComments(const String& str) | |
289 : m_parseState(BeginningOfLine) | |
290 , m_sourceString(str) | |
291 , m_length(str.length()) | |
292 , m_position(0) | |
293 { | |
294 parse(); | |
295 } | |
296 | |
297 String result() | |
298 { | |
299 return m_builder.toString(); | |
300 } | |
301 | |
302 private: | |
303 bool hasMoreCharacters() const | |
304 { | |
305 return (m_position < m_length); | |
306 } | |
307 | |
308 void parse() | |
309 { | |
310 while (hasMoreCharacters()) { | |
311 process(current()); | |
312 // process() might advance the position. | |
313 if (hasMoreCharacters()) | |
314 advance(); | |
315 } | |
316 } | |
317 | |
318 void process(UChar); | |
319 | |
320 bool peek(UChar& character) const | |
321 { | |
322 if (m_position + 1 >= m_length) | |
323 return false; | |
324 character = m_sourceString[m_position + 1]; | |
325 return true; | |
326 } | |
327 | |
328 UChar current() | |
329 { | |
330 ASSERT_WITH_SECURITY_IMPLICATION(m_position < m_length); | |
331 return m_sourceString[m_position]; | |
332 } | |
333 | |
334 void advance() | |
335 { | |
336 ++m_position; | |
337 } | |
338 | |
339 static bool isNewline(UChar character) | |
340 { | |
341 // Don't attempt to canonicalize newline related characters. | |
342 return (character == '\n' || character == '\r'); | |
343 } | |
344 | |
345 void emit(UChar character) | |
346 { | |
347 m_builder.append(character); | |
348 } | |
349 | |
350 enum ParseState { | |
351 // Have not seen an ASCII non-whitespace character yet on | |
352 // this line. Possible that we might see a preprocessor | |
353 // directive. | |
354 BeginningOfLine, | |
355 | |
356 // Have seen at least one ASCII non-whitespace character | |
357 // on this line. | |
358 MiddleOfLine, | |
359 | |
360 // Handling a preprocessor directive. Passes through all | |
361 // characters up to the end of the line. Disables comment | |
362 // processing. | |
363 InPreprocessorDirective, | |
364 | |
365 // Handling a single-line comment. The comment text is | |
366 // replaced with a single space. | |
367 InSingleLineComment, | |
368 | |
369 // Handling a multi-line comment. Newlines are passed | |
370 // through to preserve line numbers. | |
371 InMultiLineComment | |
372 }; | |
373 | |
374 ParseState m_parseState; | |
375 String m_sourceString; | |
376 unsigned m_length; | |
377 unsigned m_position; | |
378 StringBuilder m_builder; | |
379 }; | |
380 | |
381 void StripComments::process(UChar c) | |
382 { | |
383 if (isNewline(c)) { | |
384 // No matter what state we are in, pass through newlines | |
385 // so we preserve line numbers. | |
386 emit(c); | |
387 | |
388 if (m_parseState != InMultiLineComment) | |
389 m_parseState = BeginningOfLine; | |
390 | |
391 return; | |
392 } | |
393 | |
394 UChar temp = 0; | |
395 switch (m_parseState) { | |
396 case BeginningOfLine: | |
397 if (WTF::isASCIISpace(c)) { | |
398 emit(c); | |
399 break; | |
400 } | |
401 | |
402 if (c == '#') { | |
403 m_parseState = InPreprocessorDirective; | |
404 emit(c); | |
405 break; | |
406 } | |
407 | |
408 // Transition to normal state and re-handle character. | |
409 m_parseState = MiddleOfLine; | |
410 process(c); | |
411 break; | |
412 | |
413 case MiddleOfLine: | |
414 if (c == '/' && peek(temp)) { | |
415 if (temp == '/') { | |
416 m_parseState = InSingleLineComment; | |
417 emit(' '); | |
418 advance(); | |
419 break; | |
420 } | |
421 | |
422 if (temp == '*') { | |
423 m_parseState = InMultiLineComment; | |
424 // Emit the comment start in case the user has | |
425 // an unclosed comment and we want to later | |
426 // signal an error. | |
427 emit('/'); | |
428 emit('*'); | |
429 advance(); | |
430 break; | |
431 } | |
432 } | |
433 | |
434 emit(c); | 398 emit(c); |
435 break; | 399 break; |
436 | 400 } |
437 case InPreprocessorDirective: | 401 |
438 // No matter what the character is, just pass it | 402 if (c == '#') { |
439 // through. Do not parse comments in this state. This | 403 m_parseState = InPreprocessorDirective; |
440 // might not be the right thing to do long term, but it | |
441 // should handle the #error preprocessor directive. | |
442 emit(c); | 404 emit(c); |
443 break; | 405 break; |
444 | 406 } |
445 case InSingleLineComment: | 407 |
446 // The newline code at the top of this function takes care | 408 // Transition to normal state and re-handle character. |
447 // of resetting our state when we get out of the | 409 m_parseState = MiddleOfLine; |
448 // single-line comment. Swallow all other characters. | 410 process(c); |
449 break; | 411 break; |
450 | 412 |
451 case InMultiLineComment: | 413 case MiddleOfLine: |
452 if (c == '*' && peek(temp) && temp == '/') { | 414 if (c == '/' && peek(temp)) { |
453 emit('*'); | 415 if (temp == '/') { |
454 emit('/'); | 416 m_parseState = InSingleLineComment; |
455 m_parseState = MiddleOfLine; | 417 emit(' '); |
456 advance(); | 418 advance(); |
457 break; | 419 break; |
458 } | 420 } |
459 | 421 |
460 // Swallow all other characters. Unclear whether we may | 422 if (temp == '*') { |
461 // want or need to just emit a space per character to try | 423 m_parseState = InMultiLineComment; |
462 // to preserve column numbers for debugging purposes. | 424 // Emit the comment start in case the user has |
425 // an unclosed comment and we want to later | |
426 // signal an error. | |
427 emit('/'); | |
428 emit('*'); | |
429 advance(); | |
430 break; | |
431 } | |
432 } | |
433 | |
434 emit(c); | |
435 break; | |
436 | |
437 case InPreprocessorDirective: | |
438 // No matter what the character is, just pass it | |
439 // through. Do not parse comments in this state. This | |
440 // might not be the right thing to do long term, but it | |
441 // should handle the #error preprocessor directive. | |
442 emit(c); | |
443 break; | |
444 | |
445 case InSingleLineComment: | |
446 // The newline code at the top of this function takes care | |
447 // of resetting our state when we get out of the | |
448 // single-line comment. Swallow all other characters. | |
449 break; | |
450 | |
451 case InMultiLineComment: | |
452 if (c == '*' && peek(temp) && temp == '/') { | |
453 emit('*'); | |
454 emit('/'); | |
455 m_parseState = MiddleOfLine; | |
456 advance(); | |
463 break; | 457 break; |
464 } | 458 } |
465 } | 459 |
466 | 460 // Swallow all other characters. Unclear whether we may |
467 static bool shouldFailContextCreationForTesting = false; | 461 // want or need to just emit a space per character to try |
462 // to preserve column numbers for debugging purposes. | |
463 break; | |
464 } | |
465 } | |
466 | |
467 static bool shouldFailContextCreationForTesting = false; | |
468 } // namespace anonymous | 468 } // namespace anonymous |
469 | 469 |
470 class ScopedTexture2DRestorer { | 470 class ScopedTexture2DRestorer { |
471 STACK_ALLOCATED(); | 471 STACK_ALLOCATED(); |
472 public: | 472 public: |
473 explicit ScopedTexture2DRestorer(WebGLRenderingContextBase* context) | 473 explicit ScopedTexture2DRestorer(WebGLRenderingContextBase* context) |
474 : m_context(context) | 474 : m_context(context) |
475 { | 475 { |
476 } | 476 } |
477 | 477 |
(...skipping 16 matching lines...) Expand all Loading... | |
494 | 494 |
495 ~ScopedFramebufferRestorer() | 495 ~ScopedFramebufferRestorer() |
496 { | 496 { |
497 m_context->restoreCurrentFramebuffer(); | 497 m_context->restoreCurrentFramebuffer(); |
498 } | 498 } |
499 | 499 |
500 private: | 500 private: |
501 RawPtrWillBeMember<WebGLRenderingContextBase> m_context; | 501 RawPtrWillBeMember<WebGLRenderingContextBase> m_context; |
502 }; | 502 }; |
503 | 503 |
504 class WebGLRenderingContextLostCallback final : public NoBaseWillBeGarbageCollec tedFinalized<WebGLRenderingContextLostCallback>, public WebGraphicsContext3D::We bGraphicsContextLostCallback { | 504 class WebGLRenderingContextLostCallback final : public GarbageCollectedFinalized <WebGLRenderingContextLostCallback>, public WebGraphicsContext3D::WebGraphicsCon textLostCallback { |
505 WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED(WebGLRenderingContextLostCallback); | |
506 public: | 505 public: |
507 static PassOwnPtrWillBeRawPtr<WebGLRenderingContextLostCallback> create(WebG LRenderingContextBase* context) | 506 static WebGLRenderingContextLostCallback* create(WebGLRenderingContextBase* context) |
508 { | 507 { |
509 return adoptPtrWillBeNoop(new WebGLRenderingContextLostCallback(context) ); | 508 return new WebGLRenderingContextLostCallback(context); |
510 } | 509 } |
511 | 510 |
512 ~WebGLRenderingContextLostCallback() override { } | 511 ~WebGLRenderingContextLostCallback() override { } |
513 | 512 |
514 virtual void onContextLost() { m_context->forceLostContext(WebGLRenderingCon textBase::RealLostContext, WebGLRenderingContextBase::Auto); } | 513 virtual void onContextLost() { m_context->forceLostContext(WebGLRenderingCon textBase::RealLostContext, WebGLRenderingContextBase::Auto); } |
515 | 514 |
516 DEFINE_INLINE_TRACE() | 515 DEFINE_INLINE_TRACE() |
517 { | 516 { |
518 visitor->trace(m_context); | 517 visitor->trace(m_context); |
519 } | 518 } |
520 | 519 |
521 private: | 520 private: |
522 explicit WebGLRenderingContextLostCallback(WebGLRenderingContextBase* contex t) | 521 explicit WebGLRenderingContextLostCallback(WebGLRenderingContextBase* contex t) |
523 : m_context(context) { } | 522 : m_context(context) { } |
524 | 523 |
525 RawPtrWillBeMember<WebGLRenderingContextBase> m_context; | 524 RawPtrWillBeMember<WebGLRenderingContextBase> m_context; |
526 }; | 525 }; |
527 | 526 |
528 class WebGLRenderingContextErrorMessageCallback final : public NoBaseWillBeGarba geCollectedFinalized<WebGLRenderingContextErrorMessageCallback>, public WebGraph icsContext3D::WebGraphicsErrorMessageCallback { | 527 class WebGLRenderingContextErrorMessageCallback final : public GarbageCollectedF inalized<WebGLRenderingContextErrorMessageCallback>, public WebGraphicsContext3D ::WebGraphicsErrorMessageCallback { |
529 WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED(WebGLRenderingContextErrorMessageCal lback); | |
530 public: | 528 public: |
531 static PassOwnPtrWillBeRawPtr<WebGLRenderingContextErrorMessageCallback> cre ate(WebGLRenderingContextBase* context) | 529 static WebGLRenderingContextErrorMessageCallback* create(WebGLRenderingConte xtBase* context) |
532 { | 530 { |
533 return adoptPtrWillBeNoop(new WebGLRenderingContextErrorMessageCallback( context)); | 531 return new WebGLRenderingContextErrorMessageCallback(context); |
534 } | 532 } |
535 | 533 |
536 ~WebGLRenderingContextErrorMessageCallback() override { } | 534 ~WebGLRenderingContextErrorMessageCallback() override { } |
537 | 535 |
538 virtual void onErrorMessage(const WebString& message, WGC3Dint) | 536 virtual void onErrorMessage(const WebString& message, WGC3Dint) |
539 { | 537 { |
540 if (m_context->m_synthesizedErrorsToConsole) | 538 if (m_context->m_synthesizedErrorsToConsole) |
541 m_context->printGLErrorToConsole(message); | 539 m_context->printGLErrorToConsole(message); |
542 InspectorInstrumentation::didFireWebGLErrorOrWarning(m_context->canvas() , message); | 540 InspectorInstrumentation::didFireWebGLErrorOrWarning(m_context->canvas() , message); |
543 } | 541 } |
(...skipping 1367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1911 return; | 1909 return; |
1912 } | 1910 } |
1913 WebGLFramebuffer* readFramebufferBinding = nullptr; | 1911 WebGLFramebuffer* readFramebufferBinding = nullptr; |
1914 if (!validateReadBufferAndGetInfo("copyTexSubImage2D", readFramebufferBindin g, nullptr, nullptr)) | 1912 if (!validateReadBufferAndGetInfo("copyTexSubImage2D", readFramebufferBindin g, nullptr, nullptr)) |
1915 return; | 1913 return; |
1916 clearIfComposited(); | 1914 clearIfComposited(); |
1917 ScopedDrawingBufferBinder binder(drawingBuffer(), readFramebufferBinding); | 1915 ScopedDrawingBufferBinder binder(drawingBuffer(), readFramebufferBinding); |
1918 webContext()->copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width , height); | 1916 webContext()->copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width , height); |
1919 } | 1917 } |
1920 | 1918 |
1921 PassRefPtrWillBeRawPtr<WebGLBuffer> WebGLRenderingContextBase::createBuffer() | 1919 WebGLBuffer* WebGLRenderingContextBase::createBuffer() |
1922 { | 1920 { |
1923 if (isContextLost()) | 1921 if (isContextLost()) |
1924 return nullptr; | 1922 return nullptr; |
1925 RefPtrWillBeRawPtr<WebGLBuffer> o = WebGLBuffer::create(this); | 1923 WebGLBuffer* o = WebGLBuffer::create(this); |
1926 addSharedObject(o.get()); | 1924 addSharedObject(o); |
1927 return o.release(); | 1925 return o; |
1928 } | 1926 } |
1929 | 1927 |
1930 PassRefPtrWillBeRawPtr<WebGLFramebuffer> WebGLRenderingContextBase::createFrameb uffer() | 1928 WebGLFramebuffer* WebGLRenderingContextBase::createFramebuffer() |
1931 { | 1929 { |
1932 if (isContextLost()) | 1930 if (isContextLost()) |
1933 return nullptr; | 1931 return nullptr; |
1934 RefPtrWillBeRawPtr<WebGLFramebuffer> o = WebGLFramebuffer::create(this); | 1932 WebGLFramebuffer* o = WebGLFramebuffer::create(this); |
1935 addContextObject(o.get()); | 1933 addContextObject(o); |
1936 return o.release(); | 1934 return o; |
1937 } | 1935 } |
1938 | 1936 |
1939 PassRefPtrWillBeRawPtr<WebGLTexture> WebGLRenderingContextBase::createTexture() | 1937 WebGLTexture* WebGLRenderingContextBase::createTexture() |
1940 { | 1938 { |
1941 if (isContextLost()) | 1939 if (isContextLost()) |
1942 return nullptr; | 1940 return nullptr; |
1943 RefPtrWillBeRawPtr<WebGLTexture> o = WebGLTexture::create(this); | 1941 WebGLTexture* o = WebGLTexture::create(this); |
1944 addSharedObject(o.get()); | 1942 addSharedObject(o); |
1945 return o.release(); | 1943 return o; |
1946 } | 1944 } |
1947 | 1945 |
1948 PassRefPtrWillBeRawPtr<WebGLProgram> WebGLRenderingContextBase::createProgram() | 1946 WebGLProgram* WebGLRenderingContextBase::createProgram() |
1949 { | 1947 { |
1950 if (isContextLost()) | 1948 if (isContextLost()) |
1951 return nullptr; | 1949 return nullptr; |
1952 RefPtrWillBeRawPtr<WebGLProgram> o = WebGLProgram::create(this); | 1950 WebGLProgram* o = WebGLProgram::create(this); |
1953 addSharedObject(o.get()); | 1951 addSharedObject(o); |
1954 return o.release(); | 1952 return o; |
1955 } | 1953 } |
1956 | 1954 |
1957 PassRefPtrWillBeRawPtr<WebGLRenderbuffer> WebGLRenderingContextBase::createRende rbuffer() | 1955 WebGLRenderbuffer* WebGLRenderingContextBase::createRenderbuffer() |
1958 { | 1956 { |
1959 if (isContextLost()) | 1957 if (isContextLost()) |
1960 return nullptr; | 1958 return nullptr; |
1961 RefPtrWillBeRawPtr<WebGLRenderbuffer> o = WebGLRenderbuffer::create(this); | 1959 WebGLRenderbuffer* o = WebGLRenderbuffer::create(this); |
1962 addSharedObject(o.get()); | 1960 addSharedObject(o); |
1963 return o.release(); | 1961 return o; |
1964 } | 1962 } |
1965 | 1963 |
1966 WebGLRenderbuffer* WebGLRenderingContextBase::ensureEmulatedStencilBuffer(GLenum target, WebGLRenderbuffer* renderbuffer) | 1964 WebGLRenderbuffer* WebGLRenderingContextBase::ensureEmulatedStencilBuffer(GLenum target, WebGLRenderbuffer* renderbuffer) |
1967 { | 1965 { |
1968 if (isContextLost()) | 1966 if (isContextLost()) |
1969 return nullptr; | 1967 return nullptr; |
1970 if (!renderbuffer->emulatedStencilBuffer()) { | 1968 if (!renderbuffer->emulatedStencilBuffer()) { |
1971 renderbuffer->setEmulatedStencilBuffer(createRenderbuffer()); | 1969 renderbuffer->setEmulatedStencilBuffer(createRenderbuffer()); |
1972 webContext()->bindRenderbuffer(target, objectOrZero(renderbuffer->emulat edStencilBuffer())); | 1970 webContext()->bindRenderbuffer(target, objectOrZero(renderbuffer->emulat edStencilBuffer())); |
1973 webContext()->bindRenderbuffer(target, objectOrZero(m_renderbufferBindin g.get())); | 1971 webContext()->bindRenderbuffer(target, objectOrZero(m_renderbufferBindin g.get())); |
1974 } | 1972 } |
1975 return renderbuffer->emulatedStencilBuffer(); | 1973 return renderbuffer->emulatedStencilBuffer(); |
1976 } | 1974 } |
1977 | 1975 |
1978 PassRefPtrWillBeRawPtr<WebGLShader> WebGLRenderingContextBase::createShader(GLen um type) | 1976 WebGLShader* WebGLRenderingContextBase::createShader(GLenum type) |
1979 { | 1977 { |
1980 if (isContextLost()) | 1978 if (isContextLost()) |
1981 return nullptr; | 1979 return nullptr; |
1982 if (type != GL_VERTEX_SHADER && type != GL_FRAGMENT_SHADER) { | 1980 if (type != GL_VERTEX_SHADER && type != GL_FRAGMENT_SHADER) { |
1983 synthesizeGLError(GL_INVALID_ENUM, "createShader", "invalid shader type" ); | 1981 synthesizeGLError(GL_INVALID_ENUM, "createShader", "invalid shader type" ); |
1984 return nullptr; | 1982 return nullptr; |
1985 } | 1983 } |
1986 | 1984 |
1987 RefPtrWillBeRawPtr<WebGLShader> o = WebGLShader::create(this, type); | 1985 WebGLShader* o = WebGLShader::create(this, type); |
1988 addSharedObject(o.get()); | 1986 addSharedObject(o); |
1989 return o.release(); | 1987 return o; |
1990 } | 1988 } |
1991 | 1989 |
1992 void WebGLRenderingContextBase::cullFace(GLenum mode) | 1990 void WebGLRenderingContextBase::cullFace(GLenum mode) |
1993 { | 1991 { |
1994 if (isContextLost()) | 1992 if (isContextLost()) |
1995 return; | 1993 return; |
1996 switch (mode) { | 1994 switch (mode) { |
1997 case GL_FRONT_AND_BACK: | 1995 case GL_FRONT_AND_BACK: |
1998 case GL_FRONT: | 1996 case GL_FRONT: |
1999 case GL_BACK: | 1997 case GL_BACK: |
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2435 } | 2433 } |
2436 #endif | 2434 #endif |
2437 webContext()->generateMipmap(target); | 2435 webContext()->generateMipmap(target); |
2438 #if OS(MACOSX) | 2436 #if OS(MACOSX) |
2439 if (needToResetMinFilter) | 2437 if (needToResetMinFilter) |
2440 webContext()->texParameteri(target, GL_TEXTURE_MIN_FILTER, tex->getMinFi lter()); | 2438 webContext()->texParameteri(target, GL_TEXTURE_MIN_FILTER, tex->getMinFi lter()); |
2441 #endif | 2439 #endif |
2442 tex->generateMipmapLevelInfo(); | 2440 tex->generateMipmapLevelInfo(); |
2443 } | 2441 } |
2444 | 2442 |
2445 PassRefPtrWillBeRawPtr<WebGLActiveInfo> WebGLRenderingContextBase::getActiveAttr ib(WebGLProgram* program, GLuint index) | 2443 WebGLActiveInfo* WebGLRenderingContextBase::getActiveAttrib(WebGLProgram* progra m, GLuint index) |
2446 { | 2444 { |
2447 if (isContextLost() || !validateWebGLObject("getActiveAttrib", program)) | 2445 if (isContextLost() || !validateWebGLObject("getActiveAttrib", program)) |
2448 return nullptr; | 2446 return nullptr; |
2449 WebGraphicsContext3D::ActiveInfo info; | 2447 WebGraphicsContext3D::ActiveInfo info; |
2450 if (!webContext()->getActiveAttrib(objectOrZero(program), index, info)) | 2448 if (!webContext()->getActiveAttrib(objectOrZero(program), index, info)) |
2451 return nullptr; | 2449 return nullptr; |
2452 return WebGLActiveInfo::create(info.name, info.type, info.size); | 2450 return WebGLActiveInfo::create(info.name, info.type, info.size); |
2453 } | 2451 } |
2454 | 2452 |
2455 PassRefPtrWillBeRawPtr<WebGLActiveInfo> WebGLRenderingContextBase::getActiveUnif orm(WebGLProgram* program, GLuint index) | 2453 WebGLActiveInfo* WebGLRenderingContextBase::getActiveUniform(WebGLProgram* progr am, GLuint index) |
2456 { | 2454 { |
2457 if (isContextLost() || !validateWebGLObject("getActiveUniform", program)) | 2455 if (isContextLost() || !validateWebGLObject("getActiveUniform", program)) |
2458 return nullptr; | 2456 return nullptr; |
2459 WebGraphicsContext3D::ActiveInfo info; | 2457 WebGraphicsContext3D::ActiveInfo info; |
2460 if (!webContext()->getActiveUniform(objectOrZero(program), index, info)) | 2458 if (!webContext()->getActiveUniform(objectOrZero(program), index, info)) |
2461 return nullptr; | 2459 return nullptr; |
2462 return WebGLActiveInfo::create(info.name, info.type, info.size); | 2460 return WebGLActiveInfo::create(info.name, info.type, info.size); |
2463 } | 2461 } |
2464 | 2462 |
2465 Nullable<WillBeHeapVector<RefPtrWillBeMember<WebGLShader>>> WebGLRenderingContex tBase::getAttachedShaders(WebGLProgram* program) | 2463 Nullable<HeapVector<Member<WebGLShader>>> WebGLRenderingContextBase::getAttached Shaders(WebGLProgram* program) |
2466 { | 2464 { |
2467 if (isContextLost() || !validateWebGLObject("getAttachedShaders", program)) | 2465 if (isContextLost() || !validateWebGLObject("getAttachedShaders", program)) |
2468 return nullptr; | 2466 return nullptr; |
2469 | 2467 |
2470 WillBeHeapVector<RefPtrWillBeMember<WebGLShader>> shaderObjects; | 2468 HeapVector<Member<WebGLShader>> shaderObjects; |
2471 const GLenum shaderType[] = { | 2469 const GLenum shaderType[] = { |
2472 GL_VERTEX_SHADER, | 2470 GL_VERTEX_SHADER, |
2473 GL_FRAGMENT_SHADER | 2471 GL_FRAGMENT_SHADER |
2474 }; | 2472 }; |
2475 for (unsigned i = 0; i < sizeof(shaderType) / sizeof(GLenum); ++i) { | 2473 for (unsigned i = 0; i < sizeof(shaderType) / sizeof(GLenum); ++i) { |
2476 WebGLShader* shader = program->getAttachedShader(shaderType[i]); | 2474 WebGLShader* shader = program->getAttachedShader(shaderType[i]); |
2477 if (shader) | 2475 if (shader) |
2478 shaderObjects.append(shader); | 2476 shaderObjects.append(shader); |
2479 } | 2477 } |
2480 return shaderObjects; | 2478 return shaderObjects; |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2586 { | 2584 { |
2587 if (tracker->draft() && !RuntimeEnabledFeatures::webGLDraftExtensionsEnabled ()) | 2585 if (tracker->draft() && !RuntimeEnabledFeatures::webGLDraftExtensionsEnabled ()) |
2588 return false; | 2586 return false; |
2589 if (!tracker->supported(this)) | 2587 if (!tracker->supported(this)) |
2590 return false; | 2588 return false; |
2591 return true; | 2589 return true; |
2592 } | 2590 } |
2593 | 2591 |
2594 ScriptValue WebGLRenderingContextBase::getExtension(ScriptState* scriptState, co nst String& name) | 2592 ScriptValue WebGLRenderingContextBase::getExtension(ScriptState* scriptState, co nst String& name) |
2595 { | 2593 { |
2596 RefPtrWillBeRawPtr<WebGLExtension> extension = nullptr; | 2594 WebGLExtension* extension = nullptr; |
2597 | 2595 |
2598 if (!isContextLost()) { | 2596 if (!isContextLost()) { |
2599 for (size_t i = 0; i < m_extensions.size(); ++i) { | 2597 for (size_t i = 0; i < m_extensions.size(); ++i) { |
2600 ExtensionTracker* tracker = m_extensions[i].get(); | 2598 ExtensionTracker* tracker = m_extensions[i].get(); |
2601 if (tracker->matchesNameWithPrefixes(name)) { | 2599 if (tracker->matchesNameWithPrefixes(name)) { |
2602 if (extensionSupportedAndAllowed(tracker)) { | 2600 if (extensionSupportedAndAllowed(tracker)) { |
2603 extension = tracker->getExtension(this); | 2601 extension = tracker->getExtension(this); |
2604 if (extension) | 2602 if (extension) |
2605 m_extensionEnabled[extension->name()] = true; | 2603 m_extensionEnabled[extension->name()] = true; |
2606 } | 2604 } |
(...skipping 24 matching lines...) Expand all Loading... | |
2631 synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParameter", "invalid parameter name"); | 2629 synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParameter", "invalid parameter name"); |
2632 return ScriptValue::createNull(scriptState); | 2630 return ScriptValue::createNull(scriptState); |
2633 } | 2631 } |
2634 | 2632 |
2635 ASSERT(attachmentObject->isTexture() || attachmentObject->isRenderbuffer()); | 2633 ASSERT(attachmentObject->isTexture() || attachmentObject->isRenderbuffer()); |
2636 if (attachmentObject->isTexture()) { | 2634 if (attachmentObject->isTexture()) { |
2637 switch (pname) { | 2635 switch (pname) { |
2638 case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: | 2636 case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: |
2639 return WebGLAny(scriptState, GL_TEXTURE); | 2637 return WebGLAny(scriptState, GL_TEXTURE); |
2640 case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: | 2638 case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: |
2641 return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(att achmentObject)); | 2639 return WebGLAny(scriptState, attachmentObject); |
2642 case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: | 2640 case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: |
2643 case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: | 2641 case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: |
2644 { | 2642 { |
2645 GLint value = 0; | 2643 GLint value = 0; |
2646 webContext()->getFramebufferAttachmentParameteriv(target, attach ment, pname, &value); | 2644 webContext()->getFramebufferAttachmentParameteriv(target, attach ment, pname, &value); |
2647 return WebGLAny(scriptState, value); | 2645 return WebGLAny(scriptState, value); |
2648 } | 2646 } |
2649 case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: | 2647 case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: |
2650 if (extensionEnabled(EXTsRGBName)) { | 2648 if (extensionEnabled(EXTsRGBName)) { |
2651 GLint value = 0; | 2649 GLint value = 0; |
2652 webContext()->getFramebufferAttachmentParameteriv(target, attach ment, pname, &value); | 2650 webContext()->getFramebufferAttachmentParameteriv(target, attach ment, pname, &value); |
2653 return WebGLAny(scriptState, static_cast<unsigned>(value)); | 2651 return WebGLAny(scriptState, static_cast<unsigned>(value)); |
2654 } | 2652 } |
2655 synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParamete r", "invalid parameter name for renderbuffer attachment"); | 2653 synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParamete r", "invalid parameter name for renderbuffer attachment"); |
2656 return ScriptValue::createNull(scriptState); | 2654 return ScriptValue::createNull(scriptState); |
2657 default: | 2655 default: |
2658 synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParamete r", "invalid parameter name for texture attachment"); | 2656 synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParamete r", "invalid parameter name for texture attachment"); |
2659 return ScriptValue::createNull(scriptState); | 2657 return ScriptValue::createNull(scriptState); |
2660 } | 2658 } |
2661 } else { | 2659 } else { |
2662 switch (pname) { | 2660 switch (pname) { |
2663 case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: | 2661 case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: |
2664 return WebGLAny(scriptState, GL_RENDERBUFFER); | 2662 return WebGLAny(scriptState, GL_RENDERBUFFER); |
2665 case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: | 2663 case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: |
2666 return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(att achmentObject)); | 2664 return WebGLAny(scriptState, attachmentObject); |
2667 case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: | 2665 case GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: |
2668 if (extensionEnabled(EXTsRGBName) || isWebGL2OrHigher()) { | 2666 if (extensionEnabled(EXTsRGBName) || isWebGL2OrHigher()) { |
2669 GLint value = 0; | 2667 GLint value = 0; |
2670 webContext()->getFramebufferAttachmentParameteriv(target, attach ment, pname, &value); | 2668 webContext()->getFramebufferAttachmentParameteriv(target, attach ment, pname, &value); |
2671 return WebGLAny(scriptState, value); | 2669 return WebGLAny(scriptState, value); |
2672 } | 2670 } |
2673 synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParamete r", "invalid parameter name for renderbuffer attachment"); | 2671 synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParamete r", "invalid parameter name for renderbuffer attachment"); |
2674 return ScriptValue::createNull(scriptState); | 2672 return ScriptValue::createNull(scriptState); |
2675 default: | 2673 default: |
2676 synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParamete r", "invalid parameter name for renderbuffer attachment"); | 2674 synthesizeGLError(GL_INVALID_ENUM, "getFramebufferAttachmentParamete r", "invalid parameter name for renderbuffer attachment"); |
(...skipping 10 matching lines...) Expand all Loading... | |
2687 switch (pname) { | 2685 switch (pname) { |
2688 case GL_ACTIVE_TEXTURE: | 2686 case GL_ACTIVE_TEXTURE: |
2689 return getUnsignedIntParameter(scriptState, pname); | 2687 return getUnsignedIntParameter(scriptState, pname); |
2690 case GL_ALIASED_LINE_WIDTH_RANGE: | 2688 case GL_ALIASED_LINE_WIDTH_RANGE: |
2691 return getWebGLFloatArrayParameter(scriptState, pname); | 2689 return getWebGLFloatArrayParameter(scriptState, pname); |
2692 case GL_ALIASED_POINT_SIZE_RANGE: | 2690 case GL_ALIASED_POINT_SIZE_RANGE: |
2693 return getWebGLFloatArrayParameter(scriptState, pname); | 2691 return getWebGLFloatArrayParameter(scriptState, pname); |
2694 case GL_ALPHA_BITS: | 2692 case GL_ALPHA_BITS: |
2695 return getIntParameter(scriptState, pname); | 2693 return getIntParameter(scriptState, pname); |
2696 case GL_ARRAY_BUFFER_BINDING: | 2694 case GL_ARRAY_BUFFER_BINDING: |
2697 return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(m_bound ArrayBuffer.get())); | 2695 return WebGLAny(scriptState, m_boundArrayBuffer.get()); |
2698 case GL_BLEND: | 2696 case GL_BLEND: |
2699 return getBooleanParameter(scriptState, pname); | 2697 return getBooleanParameter(scriptState, pname); |
2700 case GL_BLEND_COLOR: | 2698 case GL_BLEND_COLOR: |
2701 return getWebGLFloatArrayParameter(scriptState, pname); | 2699 return getWebGLFloatArrayParameter(scriptState, pname); |
2702 case GL_BLEND_DST_ALPHA: | 2700 case GL_BLEND_DST_ALPHA: |
2703 return getUnsignedIntParameter(scriptState, pname); | 2701 return getUnsignedIntParameter(scriptState, pname); |
2704 case GL_BLEND_DST_RGB: | 2702 case GL_BLEND_DST_RGB: |
2705 return getUnsignedIntParameter(scriptState, pname); | 2703 return getUnsignedIntParameter(scriptState, pname); |
2706 case GL_BLEND_EQUATION_ALPHA: | 2704 case GL_BLEND_EQUATION_ALPHA: |
2707 return getUnsignedIntParameter(scriptState, pname); | 2705 return getUnsignedIntParameter(scriptState, pname); |
2708 case GL_BLEND_EQUATION_RGB: | 2706 case GL_BLEND_EQUATION_RGB: |
2709 return getUnsignedIntParameter(scriptState, pname); | 2707 return getUnsignedIntParameter(scriptState, pname); |
2710 case GL_BLEND_SRC_ALPHA: | 2708 case GL_BLEND_SRC_ALPHA: |
2711 return getUnsignedIntParameter(scriptState, pname); | 2709 return getUnsignedIntParameter(scriptState, pname); |
2712 case GL_BLEND_SRC_RGB: | 2710 case GL_BLEND_SRC_RGB: |
2713 return getUnsignedIntParameter(scriptState, pname); | 2711 return getUnsignedIntParameter(scriptState, pname); |
2714 case GL_BLUE_BITS: | 2712 case GL_BLUE_BITS: |
2715 return getIntParameter(scriptState, pname); | 2713 return getIntParameter(scriptState, pname); |
2716 case GL_COLOR_CLEAR_VALUE: | 2714 case GL_COLOR_CLEAR_VALUE: |
2717 return getWebGLFloatArrayParameter(scriptState, pname); | 2715 return getWebGLFloatArrayParameter(scriptState, pname); |
2718 case GL_COLOR_WRITEMASK: | 2716 case GL_COLOR_WRITEMASK: |
2719 return getBooleanArrayParameter(scriptState, pname); | 2717 return getBooleanArrayParameter(scriptState, pname); |
2720 case GL_COMPRESSED_TEXTURE_FORMATS: | 2718 case GL_COMPRESSED_TEXTURE_FORMATS: |
2721 return WebGLAny(scriptState, DOMUint32Array::create(m_compressedTextureF ormats.data(), m_compressedTextureFormats.size())); | 2719 return WebGLAny(scriptState, DOMUint32Array::create(m_compressedTextureF ormats.data(), m_compressedTextureFormats.size())); |
2722 case GL_CULL_FACE: | 2720 case GL_CULL_FACE: |
2723 return getBooleanParameter(scriptState, pname); | 2721 return getBooleanParameter(scriptState, pname); |
2724 case GL_CULL_FACE_MODE: | 2722 case GL_CULL_FACE_MODE: |
2725 return getUnsignedIntParameter(scriptState, pname); | 2723 return getUnsignedIntParameter(scriptState, pname); |
2726 case GL_CURRENT_PROGRAM: | 2724 case GL_CURRENT_PROGRAM: |
2727 return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(m_curre ntProgram.get())); | 2725 return WebGLAny(scriptState, m_currentProgram.get()); |
2728 case GL_DEPTH_BITS: | 2726 case GL_DEPTH_BITS: |
2729 if (!m_framebufferBinding && !m_requestedAttributes.depth()) | 2727 if (!m_framebufferBinding && !m_requestedAttributes.depth()) |
2730 return WebGLAny(scriptState, intZero); | 2728 return WebGLAny(scriptState, intZero); |
2731 return getIntParameter(scriptState, pname); | 2729 return getIntParameter(scriptState, pname); |
2732 case GL_DEPTH_CLEAR_VALUE: | 2730 case GL_DEPTH_CLEAR_VALUE: |
2733 return getFloatParameter(scriptState, pname); | 2731 return getFloatParameter(scriptState, pname); |
2734 case GL_DEPTH_FUNC: | 2732 case GL_DEPTH_FUNC: |
2735 return getUnsignedIntParameter(scriptState, pname); | 2733 return getUnsignedIntParameter(scriptState, pname); |
2736 case GL_DEPTH_RANGE: | 2734 case GL_DEPTH_RANGE: |
2737 return getWebGLFloatArrayParameter(scriptState, pname); | 2735 return getWebGLFloatArrayParameter(scriptState, pname); |
2738 case GL_DEPTH_TEST: | 2736 case GL_DEPTH_TEST: |
2739 return getBooleanParameter(scriptState, pname); | 2737 return getBooleanParameter(scriptState, pname); |
2740 case GL_DEPTH_WRITEMASK: | 2738 case GL_DEPTH_WRITEMASK: |
2741 return getBooleanParameter(scriptState, pname); | 2739 return getBooleanParameter(scriptState, pname); |
2742 case GL_DITHER: | 2740 case GL_DITHER: |
2743 return getBooleanParameter(scriptState, pname); | 2741 return getBooleanParameter(scriptState, pname); |
2744 case GL_ELEMENT_ARRAY_BUFFER_BINDING: | 2742 case GL_ELEMENT_ARRAY_BUFFER_BINDING: |
2745 return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(m_bound VertexArrayObject->boundElementArrayBuffer())); | 2743 return WebGLAny(scriptState, m_boundVertexArrayObject->boundElementArray Buffer()); |
2746 case GL_FRAMEBUFFER_BINDING: | 2744 case GL_FRAMEBUFFER_BINDING: |
2747 return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(m_frame bufferBinding.get())); | 2745 return WebGLAny(scriptState, m_framebufferBinding.get()); |
2748 case GL_FRONT_FACE: | 2746 case GL_FRONT_FACE: |
2749 return getUnsignedIntParameter(scriptState, pname); | 2747 return getUnsignedIntParameter(scriptState, pname); |
2750 case GL_GENERATE_MIPMAP_HINT: | 2748 case GL_GENERATE_MIPMAP_HINT: |
2751 return getUnsignedIntParameter(scriptState, pname); | 2749 return getUnsignedIntParameter(scriptState, pname); |
2752 case GL_GREEN_BITS: | 2750 case GL_GREEN_BITS: |
2753 return getIntParameter(scriptState, pname); | 2751 return getIntParameter(scriptState, pname); |
2754 case GL_IMPLEMENTATION_COLOR_READ_FORMAT: | 2752 case GL_IMPLEMENTATION_COLOR_READ_FORMAT: |
2755 return getIntParameter(scriptState, pname); | 2753 return getIntParameter(scriptState, pname); |
2756 case GL_IMPLEMENTATION_COLOR_READ_TYPE: | 2754 case GL_IMPLEMENTATION_COLOR_READ_TYPE: |
2757 return getIntParameter(scriptState, pname); | 2755 return getIntParameter(scriptState, pname); |
(...skipping 28 matching lines...) Expand all Loading... | |
2786 return getIntParameter(scriptState, pname); | 2784 return getIntParameter(scriptState, pname); |
2787 case GL_POLYGON_OFFSET_FACTOR: | 2785 case GL_POLYGON_OFFSET_FACTOR: |
2788 return getFloatParameter(scriptState, pname); | 2786 return getFloatParameter(scriptState, pname); |
2789 case GL_POLYGON_OFFSET_FILL: | 2787 case GL_POLYGON_OFFSET_FILL: |
2790 return getBooleanParameter(scriptState, pname); | 2788 return getBooleanParameter(scriptState, pname); |
2791 case GL_POLYGON_OFFSET_UNITS: | 2789 case GL_POLYGON_OFFSET_UNITS: |
2792 return getFloatParameter(scriptState, pname); | 2790 return getFloatParameter(scriptState, pname); |
2793 case GL_RED_BITS: | 2791 case GL_RED_BITS: |
2794 return getIntParameter(scriptState, pname); | 2792 return getIntParameter(scriptState, pname); |
2795 case GL_RENDERBUFFER_BINDING: | 2793 case GL_RENDERBUFFER_BINDING: |
2796 return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(m_rende rbufferBinding.get())); | 2794 return WebGLAny(scriptState, m_renderbufferBinding.get()); |
2797 case GL_RENDERER: | 2795 case GL_RENDERER: |
2798 return WebGLAny(scriptState, String("WebKit WebGL")); | 2796 return WebGLAny(scriptState, String("WebKit WebGL")); |
2799 case GL_SAMPLE_BUFFERS: | 2797 case GL_SAMPLE_BUFFERS: |
2800 return getIntParameter(scriptState, pname); | 2798 return getIntParameter(scriptState, pname); |
2801 case GL_SAMPLE_COVERAGE_INVERT: | 2799 case GL_SAMPLE_COVERAGE_INVERT: |
2802 return getBooleanParameter(scriptState, pname); | 2800 return getBooleanParameter(scriptState, pname); |
2803 case GL_SAMPLE_COVERAGE_VALUE: | 2801 case GL_SAMPLE_COVERAGE_VALUE: |
2804 return getFloatParameter(scriptState, pname); | 2802 return getFloatParameter(scriptState, pname); |
2805 case GL_SAMPLES: | 2803 case GL_SAMPLES: |
2806 return getIntParameter(scriptState, pname); | 2804 return getIntParameter(scriptState, pname); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2842 return getIntParameter(scriptState, pname); | 2840 return getIntParameter(scriptState, pname); |
2843 case GL_STENCIL_TEST: | 2841 case GL_STENCIL_TEST: |
2844 return getBooleanParameter(scriptState, pname); | 2842 return getBooleanParameter(scriptState, pname); |
2845 case GL_STENCIL_VALUE_MASK: | 2843 case GL_STENCIL_VALUE_MASK: |
2846 return getUnsignedIntParameter(scriptState, pname); | 2844 return getUnsignedIntParameter(scriptState, pname); |
2847 case GL_STENCIL_WRITEMASK: | 2845 case GL_STENCIL_WRITEMASK: |
2848 return getUnsignedIntParameter(scriptState, pname); | 2846 return getUnsignedIntParameter(scriptState, pname); |
2849 case GL_SUBPIXEL_BITS: | 2847 case GL_SUBPIXEL_BITS: |
2850 return getIntParameter(scriptState, pname); | 2848 return getIntParameter(scriptState, pname); |
2851 case GL_TEXTURE_BINDING_2D: | 2849 case GL_TEXTURE_BINDING_2D: |
2852 return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(m_textu reUnits[m_activeTextureUnit].m_texture2DBinding.get())); | 2850 return WebGLAny(scriptState, m_textureUnits[m_activeTextureUnit].m_textu re2DBinding.get()); |
2853 case GL_TEXTURE_BINDING_CUBE_MAP: | 2851 case GL_TEXTURE_BINDING_CUBE_MAP: |
2854 return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(m_textu reUnits[m_activeTextureUnit].m_textureCubeMapBinding.get())); | 2852 return WebGLAny(scriptState, m_textureUnits[m_activeTextureUnit].m_textu reCubeMapBinding.get()); |
2855 case GL_UNPACK_ALIGNMENT: | 2853 case GL_UNPACK_ALIGNMENT: |
2856 return getIntParameter(scriptState, pname); | 2854 return getIntParameter(scriptState, pname); |
2857 case GC3D_UNPACK_FLIP_Y_WEBGL: | 2855 case GC3D_UNPACK_FLIP_Y_WEBGL: |
2858 return WebGLAny(scriptState, m_unpackFlipY); | 2856 return WebGLAny(scriptState, m_unpackFlipY); |
2859 case GC3D_UNPACK_PREMULTIPLY_ALPHA_WEBGL: | 2857 case GC3D_UNPACK_PREMULTIPLY_ALPHA_WEBGL: |
2860 return WebGLAny(scriptState, m_unpackPremultiplyAlpha); | 2858 return WebGLAny(scriptState, m_unpackPremultiplyAlpha); |
2861 case GC3D_UNPACK_COLORSPACE_CONVERSION_WEBGL: | 2859 case GC3D_UNPACK_COLORSPACE_CONVERSION_WEBGL: |
2862 return WebGLAny(scriptState, m_unpackColorspaceConversion); | 2860 return WebGLAny(scriptState, m_unpackColorspaceConversion); |
2863 case GL_VENDOR: | 2861 case GL_VENDOR: |
2864 return WebGLAny(scriptState, String("WebKit")); | 2862 return WebGLAny(scriptState, String("WebKit")); |
(...skipping 12 matching lines...) Expand all Loading... | |
2877 synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter na me, WEBGL_debug_renderer_info not enabled"); | 2875 synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter na me, WEBGL_debug_renderer_info not enabled"); |
2878 return ScriptValue::createNull(scriptState); | 2876 return ScriptValue::createNull(scriptState); |
2879 case WebGLDebugRendererInfo::UNMASKED_VENDOR_WEBGL: | 2877 case WebGLDebugRendererInfo::UNMASKED_VENDOR_WEBGL: |
2880 if (extensionEnabled(WebGLDebugRendererInfoName)) | 2878 if (extensionEnabled(WebGLDebugRendererInfoName)) |
2881 return WebGLAny(scriptState, webContext()->getString(GL_VENDOR)); | 2879 return WebGLAny(scriptState, webContext()->getString(GL_VENDOR)); |
2882 synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter na me, WEBGL_debug_renderer_info not enabled"); | 2880 synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter na me, WEBGL_debug_renderer_info not enabled"); |
2883 return ScriptValue::createNull(scriptState); | 2881 return ScriptValue::createNull(scriptState); |
2884 case GL_VERTEX_ARRAY_BINDING_OES: // OES_vertex_array_object | 2882 case GL_VERTEX_ARRAY_BINDING_OES: // OES_vertex_array_object |
2885 if (extensionEnabled(OESVertexArrayObjectName) || isWebGL2OrHigher()) { | 2883 if (extensionEnabled(OESVertexArrayObjectName) || isWebGL2OrHigher()) { |
2886 if (!m_boundVertexArrayObject->isDefaultObject()) | 2884 if (!m_boundVertexArrayObject->isDefaultObject()) |
2887 return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject> (m_boundVertexArrayObject.get())); | 2885 return WebGLAny(scriptState, m_boundVertexArrayObject.get()); |
2888 return ScriptValue::createNull(scriptState); | 2886 return ScriptValue::createNull(scriptState); |
2889 } | 2887 } |
2890 synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter na me, OES_vertex_array_object not enabled"); | 2888 synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter na me, OES_vertex_array_object not enabled"); |
2891 return ScriptValue::createNull(scriptState); | 2889 return ScriptValue::createNull(scriptState); |
2892 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: // EXT_texture_filter_anisotropic | 2890 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: // EXT_texture_filter_anisotropic |
2893 if (extensionEnabled(EXTTextureFilterAnisotropicName)) | 2891 if (extensionEnabled(EXTTextureFilterAnisotropicName)) |
2894 return getUnsignedIntParameter(scriptState, GL_MAX_TEXTURE_MAX_ANISO TROPY_EXT); | 2892 return getUnsignedIntParameter(scriptState, GL_MAX_TEXTURE_MAX_ANISO TROPY_EXT); |
2895 synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter na me, EXT_texture_filter_anisotropic not enabled"); | 2893 synthesizeGLError(GL_INVALID_ENUM, "getParameter", "invalid parameter na me, EXT_texture_filter_anisotropic not enabled"); |
2896 return ScriptValue::createNull(scriptState); | 2894 return ScriptValue::createNull(scriptState); |
2897 case GL_MAX_COLOR_ATTACHMENTS_EXT: // EXT_draw_buffers BEGIN | 2895 case GL_MAX_COLOR_ATTACHMENTS_EXT: // EXT_draw_buffers BEGIN |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3029 } | 3027 } |
3030 } | 3028 } |
3031 | 3029 |
3032 String WebGLRenderingContextBase::getShaderInfoLog(WebGLShader* shader) | 3030 String WebGLRenderingContextBase::getShaderInfoLog(WebGLShader* shader) |
3033 { | 3031 { |
3034 if (isContextLost() || !validateWebGLObject("getShaderInfoLog", shader)) | 3032 if (isContextLost() || !validateWebGLObject("getShaderInfoLog", shader)) |
3035 return String(); | 3033 return String(); |
3036 return ensureNotNull(webContext()->getShaderInfoLog(objectOrZero(shader))); | 3034 return ensureNotNull(webContext()->getShaderInfoLog(objectOrZero(shader))); |
3037 } | 3035 } |
3038 | 3036 |
3039 PassRefPtrWillBeRawPtr<WebGLShaderPrecisionFormat> WebGLRenderingContextBase::ge tShaderPrecisionFormat(GLenum shaderType, GLenum precisionType) | 3037 WebGLShaderPrecisionFormat* WebGLRenderingContextBase::getShaderPrecisionFormat( GLenum shaderType, GLenum precisionType) |
3040 { | 3038 { |
3041 if (isContextLost()) | 3039 if (isContextLost()) |
3042 return nullptr; | 3040 return nullptr; |
3043 switch (shaderType) { | 3041 switch (shaderType) { |
3044 case GL_VERTEX_SHADER: | 3042 case GL_VERTEX_SHADER: |
3045 case GL_FRAGMENT_SHADER: | 3043 case GL_FRAGMENT_SHADER: |
3046 break; | 3044 break; |
3047 default: | 3045 default: |
3048 synthesizeGLError(GL_INVALID_ENUM, "getShaderPrecisionFormat", "invalid shader type"); | 3046 synthesizeGLError(GL_INVALID_ENUM, "getShaderPrecisionFormat", "invalid shader type"); |
3049 return nullptr; | 3047 return nullptr; |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3325 notImplemented(); | 3323 notImplemented(); |
3326 } | 3324 } |
3327 } | 3325 } |
3328 } | 3326 } |
3329 } | 3327 } |
3330 // If we get here, something went wrong in our unfortunately complex logic a bove | 3328 // If we get here, something went wrong in our unfortunately complex logic a bove |
3331 synthesizeGLError(GL_INVALID_VALUE, "getUniform", "unknown error"); | 3329 synthesizeGLError(GL_INVALID_VALUE, "getUniform", "unknown error"); |
3332 return ScriptValue::createNull(scriptState); | 3330 return ScriptValue::createNull(scriptState); |
3333 } | 3331 } |
3334 | 3332 |
3335 PassRefPtrWillBeRawPtr<WebGLUniformLocation> WebGLRenderingContextBase::getUnifo rmLocation(WebGLProgram* program, const String& name) | 3333 WebGLUniformLocation* WebGLRenderingContextBase::getUniformLocation(WebGLProgram * program, const String& name) |
3336 { | 3334 { |
3337 if (isContextLost() || !validateWebGLObject("getUniformLocation", program)) | 3335 if (isContextLost() || !validateWebGLObject("getUniformLocation", program)) |
3338 return nullptr; | 3336 return nullptr; |
3339 if (!validateLocationLength("getUniformLocation", name)) | 3337 if (!validateLocationLength("getUniformLocation", name)) |
3340 return nullptr; | 3338 return nullptr; |
3341 if (!validateString("getUniformLocation", name)) | 3339 if (!validateString("getUniformLocation", name)) |
3342 return nullptr; | 3340 return nullptr; |
3343 if (isPrefixReserved(name)) | 3341 if (isPrefixReserved(name)) |
3344 return nullptr; | 3342 return nullptr; |
3345 if (!program->linkStatus()) { | 3343 if (!program->linkStatus()) { |
(...skipping 17 matching lines...) Expand all Loading... | |
3363 const WebGLVertexArrayObjectBase::VertexAttribState* state = m_boundVertexAr rayObject->getVertexAttribState(index); | 3361 const WebGLVertexArrayObjectBase::VertexAttribState* state = m_boundVertexAr rayObject->getVertexAttribState(index); |
3364 | 3362 |
3365 if ((extensionEnabled(ANGLEInstancedArraysName) || isWebGL2OrHigher()) | 3363 if ((extensionEnabled(ANGLEInstancedArraysName) || isWebGL2OrHigher()) |
3366 && pname == GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE) | 3364 && pname == GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE) |
3367 return WebGLAny(scriptState, state->divisor); | 3365 return WebGLAny(scriptState, state->divisor); |
3368 | 3366 |
3369 switch (pname) { | 3367 switch (pname) { |
3370 case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: | 3368 case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: |
3371 if (!state->bufferBinding || !state->bufferBinding->object()) | 3369 if (!state->bufferBinding || !state->bufferBinding->object()) |
3372 return ScriptValue::createNull(scriptState); | 3370 return ScriptValue::createNull(scriptState); |
3373 return WebGLAny(scriptState, PassRefPtrWillBeRawPtr<WebGLObject>(state-> bufferBinding.get())); | 3371 return WebGLAny(scriptState, state->bufferBinding.get()); |
3374 case GL_VERTEX_ATTRIB_ARRAY_ENABLED: | 3372 case GL_VERTEX_ATTRIB_ARRAY_ENABLED: |
3375 return WebGLAny(scriptState, state->enabled); | 3373 return WebGLAny(scriptState, state->enabled); |
3376 case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: | 3374 case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: |
3377 return WebGLAny(scriptState, state->normalized); | 3375 return WebGLAny(scriptState, state->normalized); |
3378 case GL_VERTEX_ATTRIB_ARRAY_SIZE: | 3376 case GL_VERTEX_ATTRIB_ARRAY_SIZE: |
3379 return WebGLAny(scriptState, state->size); | 3377 return WebGLAny(scriptState, state->size); |
3380 case GL_VERTEX_ATTRIB_ARRAY_STRIDE: | 3378 case GL_VERTEX_ATTRIB_ARRAY_STRIDE: |
3381 return WebGLAny(scriptState, state->originalStride); | 3379 return WebGLAny(scriptState, state->originalStride); |
3382 case GL_VERTEX_ATTRIB_ARRAY_TYPE: | 3380 case GL_VERTEX_ATTRIB_ARRAY_TYPE: |
3383 return WebGLAny(scriptState, state->type); | 3381 return WebGLAny(scriptState, state->type); |
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3957 webContext()->stencilOp(fail, zfail, zpass); | 3955 webContext()->stencilOp(fail, zfail, zpass); |
3958 } | 3956 } |
3959 | 3957 |
3960 void WebGLRenderingContextBase::stencilOpSeparate(GLenum face, GLenum fail, GLen um zfail, GLenum zpass) | 3958 void WebGLRenderingContextBase::stencilOpSeparate(GLenum face, GLenum fail, GLen um zfail, GLenum zpass) |
3961 { | 3959 { |
3962 if (isContextLost()) | 3960 if (isContextLost()) |
3963 return; | 3961 return; |
3964 webContext()->stencilOpSeparate(face, fail, zfail, zpass); | 3962 webContext()->stencilOpSeparate(face, fail, zfail, zpass); |
3965 } | 3963 } |
3966 | 3964 |
3967 PassRefPtrWillBeRawPtr<CHROMIUMValuebuffer> WebGLRenderingContextBase::createVal uebufferCHROMIUM() | 3965 CHROMIUMValuebuffer* WebGLRenderingContextBase::createValuebufferCHROMIUM() |
3968 { | 3966 { |
3969 if (isContextLost()) | 3967 if (isContextLost()) |
3970 return nullptr; | 3968 return nullptr; |
3971 RefPtrWillBeRawPtr<CHROMIUMValuebuffer> o = CHROMIUMValuebuffer::create(this ); | 3969 CHROMIUMValuebuffer* o = CHROMIUMValuebuffer::create(this); |
3972 addSharedObject(o.get()); | 3970 addSharedObject(o); |
3973 return o.release(); | 3971 return o; |
3974 } | 3972 } |
3975 | 3973 |
3976 void WebGLRenderingContextBase::deleteValuebufferCHROMIUM(CHROMIUMValuebuffer *v aluebuffer) | 3974 void WebGLRenderingContextBase::deleteValuebufferCHROMIUM(CHROMIUMValuebuffer *v aluebuffer) |
3977 { | 3975 { |
3978 if (!deleteObject(valuebuffer)) | 3976 if (!deleteObject(valuebuffer)) |
3979 return; | 3977 return; |
3980 if (valuebuffer == m_valuebufferBinding) | 3978 if (valuebuffer == m_valuebufferBinding) |
3981 m_valuebufferBinding = nullptr; | 3979 m_valuebufferBinding = nullptr; |
3982 } | 3980 } |
3983 | 3981 |
(...skipping 1155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5139 | 5137 |
5140 void WebGLRenderingContextBase::addContextObject(WebGLContextObject* object) | 5138 void WebGLRenderingContextBase::addContextObject(WebGLContextObject* object) |
5141 { | 5139 { |
5142 ASSERT(!isContextLost()); | 5140 ASSERT(!isContextLost()); |
5143 m_contextObjects.add(object); | 5141 m_contextObjects.add(object); |
5144 } | 5142 } |
5145 | 5143 |
5146 void WebGLRenderingContextBase::detachAndRemoveAllObjects() | 5144 void WebGLRenderingContextBase::detachAndRemoveAllObjects() |
5147 { | 5145 { |
5148 while (m_contextObjects.size() > 0) { | 5146 while (m_contextObjects.size() > 0) { |
5149 WillBeHeapHashSet<RawPtrWillBeWeakMember<WebGLContextObject>>::iterator it = m_contextObjects.begin(); | 5147 auto it = m_contextObjects.begin(); |
haraken
2015/08/04 00:06:52
It would be worth having a comment and mention tha
peria
2015/08/04 09:10:26
Done.
| |
5150 (*it)->detachContext(); | 5148 (*it)->detachContext(); |
5151 } | 5149 } |
5152 } | 5150 } |
5153 | 5151 |
5154 void WebGLRenderingContextBase::stop() | 5152 void WebGLRenderingContextBase::stop() |
5155 { | 5153 { |
5156 if (!isContextLost()) { | 5154 if (!isContextLost()) { |
5157 // Never attempt to restore the context because the page is being torn d own. | 5155 // Never attempt to restore the context because the page is being torn d own. |
5158 forceLostContext(SyntheticLostContext, Manual); | 5156 forceLostContext(SyntheticLostContext, Manual); |
5159 } | 5157 } |
(...skipping 867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
6027 return false; | 6025 return false; |
6028 } | 6026 } |
6029 return true; | 6027 return true; |
6030 } | 6028 } |
6031 | 6029 |
6032 WebGLBuffer* WebGLRenderingContextBase::validateBufferDataTarget(const char* fun ctionName, GLenum target) | 6030 WebGLBuffer* WebGLRenderingContextBase::validateBufferDataTarget(const char* fun ctionName, GLenum target) |
6033 { | 6031 { |
6034 WebGLBuffer* buffer = nullptr; | 6032 WebGLBuffer* buffer = nullptr; |
6035 switch (target) { | 6033 switch (target) { |
6036 case GL_ELEMENT_ARRAY_BUFFER: | 6034 case GL_ELEMENT_ARRAY_BUFFER: |
6037 buffer = m_boundVertexArrayObject->boundElementArrayBuffer().get(); | 6035 buffer = m_boundVertexArrayObject->boundElementArrayBuffer(); |
6038 break; | 6036 break; |
6039 case GL_ARRAY_BUFFER: | 6037 case GL_ARRAY_BUFFER: |
6040 buffer = m_boundArrayBuffer.get(); | 6038 buffer = m_boundArrayBuffer.get(); |
6041 break; | 6039 break; |
6042 default: | 6040 default: |
6043 synthesizeGLError(GL_INVALID_ENUM, functionName, "invalid target"); | 6041 synthesizeGLError(GL_INVALID_ENUM, functionName, "invalid target"); |
6044 return nullptr; | 6042 return nullptr; |
6045 } | 6043 } |
6046 if (!buffer) { | 6044 if (!buffer) { |
6047 synthesizeGLError(GL_INVALID_OPERATION, functionName, "no buffer"); | 6045 synthesizeGLError(GL_INVALID_OPERATION, functionName, "no buffer"); |
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
6553 DEFINE_TRACE(WebGLRenderingContextBase::TextureUnitState) | 6551 DEFINE_TRACE(WebGLRenderingContextBase::TextureUnitState) |
6554 { | 6552 { |
6555 visitor->trace(m_texture2DBinding); | 6553 visitor->trace(m_texture2DBinding); |
6556 visitor->trace(m_textureCubeMapBinding); | 6554 visitor->trace(m_textureCubeMapBinding); |
6557 visitor->trace(m_texture3DBinding); | 6555 visitor->trace(m_texture3DBinding); |
6558 visitor->trace(m_texture2DArrayBinding); | 6556 visitor->trace(m_texture2DArrayBinding); |
6559 } | 6557 } |
6560 | 6558 |
6561 DEFINE_TRACE(WebGLRenderingContextBase) | 6559 DEFINE_TRACE(WebGLRenderingContextBase) |
6562 { | 6560 { |
6563 #if ENABLE(OILPAN) | |
6564 visitor->trace(m_contextObjects); | 6561 visitor->trace(m_contextObjects); |
6565 visitor->trace(m_contextLostCallbackAdapter); | 6562 visitor->trace(m_contextLostCallbackAdapter); |
6566 visitor->trace(m_errorMessageCallbackAdapter); | 6563 visitor->trace(m_errorMessageCallbackAdapter); |
6567 visitor->trace(m_boundArrayBuffer); | 6564 visitor->trace(m_boundArrayBuffer); |
6568 visitor->trace(m_defaultVertexArrayObject); | 6565 visitor->trace(m_defaultVertexArrayObject); |
6569 visitor->trace(m_boundVertexArrayObject); | 6566 visitor->trace(m_boundVertexArrayObject); |
6570 visitor->trace(m_vertexAttrib0Buffer); | 6567 visitor->trace(m_vertexAttrib0Buffer); |
6571 visitor->trace(m_currentProgram); | 6568 visitor->trace(m_currentProgram); |
6572 visitor->trace(m_framebufferBinding); | 6569 visitor->trace(m_framebufferBinding); |
6573 visitor->trace(m_renderbufferBinding); | 6570 visitor->trace(m_renderbufferBinding); |
6574 visitor->trace(m_valuebufferBinding); | 6571 visitor->trace(m_valuebufferBinding); |
6575 visitor->trace(m_textureUnits); | 6572 visitor->trace(m_textureUnits); |
6576 visitor->trace(m_blackTexture2D); | 6573 visitor->trace(m_blackTexture2D); |
6577 visitor->trace(m_blackTextureCubeMap); | 6574 visitor->trace(m_blackTextureCubeMap); |
6578 visitor->trace(m_requestedAttributes); | |
6579 visitor->trace(m_extensions); | 6575 visitor->trace(m_extensions); |
6580 #endif | |
6581 CanvasRenderingContext::trace(visitor); | 6576 CanvasRenderingContext::trace(visitor); |
6582 } | 6577 } |
6583 | 6578 |
6584 int WebGLRenderingContextBase::externallyAllocatedBytesPerPixel() | 6579 int WebGLRenderingContextBase::externallyAllocatedBytesPerPixel() |
6585 { | 6580 { |
6586 if (isContextLost()) | 6581 if (isContextLost()) |
6587 return 0; | 6582 return 0; |
6588 | 6583 |
6589 int bytesPerPixel = 4; | 6584 int bytesPerPixel = 4; |
6590 int totalBytesPerPixel = bytesPerPixel * 2; // WebGL's front and back color buffers. | 6585 int totalBytesPerPixel = bytesPerPixel * 2; // WebGL's front and back color buffers. |
(...skipping 15 matching lines...) Expand all Loading... | |
6606 | 6601 |
6607 return totalBytesPerPixel; | 6602 return totalBytesPerPixel; |
6608 } | 6603 } |
6609 | 6604 |
6610 DrawingBuffer* WebGLRenderingContextBase::drawingBuffer() const | 6605 DrawingBuffer* WebGLRenderingContextBase::drawingBuffer() const |
6611 { | 6606 { |
6612 return m_drawingBuffer.get(); | 6607 return m_drawingBuffer.get(); |
6613 } | 6608 } |
6614 | 6609 |
6615 } // namespace blink | 6610 } // namespace blink |
OLD | NEW |