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

Side by Side Diff: third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp

Issue 1832263002: Remove WGC3D typedefs and move WebGraphicsInfo to Platform. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: webgraphicsinfo: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 496
497 class WebGLRenderingContextErrorMessageCallback final : public GarbageCollectedF inalized<WebGLRenderingContextErrorMessageCallback>, public WebGraphicsContext3D ::WebGraphicsErrorMessageCallback { 497 class WebGLRenderingContextErrorMessageCallback final : public GarbageCollectedF inalized<WebGLRenderingContextErrorMessageCallback>, public WebGraphicsContext3D ::WebGraphicsErrorMessageCallback {
498 public: 498 public:
499 static WebGLRenderingContextErrorMessageCallback* create(WebGLRenderingConte xtBase* context) 499 static WebGLRenderingContextErrorMessageCallback* create(WebGLRenderingConte xtBase* context)
500 { 500 {
501 return new WebGLRenderingContextErrorMessageCallback(context); 501 return new WebGLRenderingContextErrorMessageCallback(context);
502 } 502 }
503 503
504 ~WebGLRenderingContextErrorMessageCallback() override { } 504 ~WebGLRenderingContextErrorMessageCallback() override { }
505 505
506 virtual void onErrorMessage(const WebString& message, WGC3Dint) 506 virtual void onErrorMessage(const WebString& message, GLint)
507 { 507 {
508 if (m_context->m_synthesizedErrorsToConsole) 508 if (m_context->m_synthesizedErrorsToConsole)
509 m_context->printGLErrorToConsole(message); 509 m_context->printGLErrorToConsole(message);
510 InspectorInstrumentation::didFireWebGLErrorOrWarning(m_context->canvas() , message); 510 InspectorInstrumentation::didFireWebGLErrorOrWarning(m_context->canvas() , message);
511 } 511 }
512 512
513 DEFINE_INLINE_TRACE() 513 DEFINE_INLINE_TRACE()
514 { 514 {
515 visitor->trace(m_context); 515 visitor->trace(m_context);
516 } 516 }
517 517
518 private: 518 private:
519 explicit WebGLRenderingContextErrorMessageCallback(WebGLRenderingContextBase * context) 519 explicit WebGLRenderingContextErrorMessageCallback(WebGLRenderingContextBase * context)
520 : m_context(context) { } 520 : m_context(context) { }
521 521
522 RawPtrWillBeMember<WebGLRenderingContextBase> m_context; 522 RawPtrWillBeMember<WebGLRenderingContextBase> m_context;
523 }; 523 };
524 524
525 static void formatWebGLStatusString(const String& glInfo, const String& infostri ng, String& statusMessage) 525 static void formatWebGLStatusString(const String& glInfo, const String& infostri ng, String& statusMessage)
526 { 526 {
527 if (!infostring.isEmpty()) 527 if (!infostring.isEmpty())
528 statusMessage.append(", " + glInfo + " = " + infostring); 528 statusMessage.append(", " + glInfo + " = " + infostring);
529 } 529 }
530 530
531 static String extractWebGLContextCreationError(const WebGraphicsContext3D::WebGr aphicsInfo& info) 531 static String extractWebGLContextCreationError(const Platform::GraphicsInfo& inf o)
532 { 532 {
533 String statusMessage("Could not create a WebGL context"); 533 String statusMessage("Could not create a WebGL context");
534 formatWebGLStatusString("VENDOR", info.vendorId ? String::format("0x%04x", i nfo.vendorId).utf8().data() : "0xffff", statusMessage); 534 formatWebGLStatusString("VENDOR", info.vendorId ? String::format("0x%04x", i nfo.vendorId).utf8().data() : "0xffff", statusMessage);
535 formatWebGLStatusString("DEVICE", info.deviceId ? String::format("0x%04x", i nfo.deviceId).utf8().data() : "0xffff", statusMessage); 535 formatWebGLStatusString("DEVICE", info.deviceId ? String::format("0x%04x", i nfo.deviceId).utf8().data() : "0xffff", statusMessage);
536 formatWebGLStatusString("GL_VENDOR", info.vendorInfo.utf8().data(), statusMe ssage); 536 formatWebGLStatusString("GL_VENDOR", info.vendorInfo.utf8().data(), statusMe ssage);
537 formatWebGLStatusString("GL_RENDERER", info.rendererInfo.utf8().data(), stat usMessage); 537 formatWebGLStatusString("GL_RENDERER", info.rendererInfo.utf8().data(), stat usMessage);
538 formatWebGLStatusString("GL_VERSION", info.driverVersion.utf8().data(), stat usMessage); 538 formatWebGLStatusString("GL_VERSION", info.driverVersion.utf8().data(), stat usMessage);
539 formatWebGLStatusString("Sandboxed", info.sandboxed ? "yes" : "no", statusMe ssage); 539 formatWebGLStatusString("Sandboxed", info.sandboxed ? "yes" : "no", statusMe ssage);
540 formatWebGLStatusString("Optimus", info.optimus ? "yes" : "no", statusMessag e); 540 formatWebGLStatusString("Optimus", info.optimus ? "yes" : "no", statusMessag e);
541 formatWebGLStatusString("AMD switchable", info.amdSwitchable ? "yes" : "no", statusMessage); 541 formatWebGLStatusString("AMD switchable", info.amdSwitchable ? "yes" : "no", statusMessage);
(...skipping 15 matching lines...) Expand all
557 Settings* settings = frame->settings(); 557 Settings* settings = frame->settings();
558 558
559 // The FrameLoaderClient might block creation of a new WebGL context despite the page settings; in 559 // The FrameLoaderClient might block creation of a new WebGL context despite the page settings; in
560 // particular, if WebGL contexts were lost one or more times via the GL_ARB_ robustness extension. 560 // particular, if WebGL contexts were lost one or more times via the GL_ARB_ robustness extension.
561 if (!frame->loader().client()->allowWebGL(settings && settings->webGLEnabled ())) { 561 if (!frame->loader().client()->allowWebGL(settings && settings->webGLEnabled ())) {
562 canvas->dispatchEvent(WebGLContextEvent::create(EventTypeNames::webglcon textcreationerror, false, true, "Web page was not allowed to create a WebGL cont ext.")); 562 canvas->dispatchEvent(WebGLContextEvent::create(EventTypeNames::webglcon textcreationerror, false, true, "Web page was not allowed to create a WebGL cont ext."));
563 return nullptr; 563 return nullptr;
564 } 564 }
565 565
566 WebGraphicsContext3D::Attributes wgc3dAttributes = toWebGraphicsContext3DAtt ributes(attributes, document.topDocument().url().getString(), settings, webGLVer sion); 566 WebGraphicsContext3D::Attributes wgc3dAttributes = toWebGraphicsContext3DAtt ributes(attributes, document.topDocument().url().getString(), settings, webGLVer sion);
567 WebGraphicsContext3D::WebGraphicsInfo glInfo; 567 Platform::GraphicsInfo glInfo;
568 glInfo.testFailContext = shouldFailContextCreationForTesting; 568 glInfo.testFailContext = shouldFailContextCreationForTesting;
569 OwnPtr<WebGraphicsContext3DProvider> contextProvider = adoptPtr(Platform::cu rrent()->createOffscreenGraphicsContext3DProvider(wgc3dAttributes, 0, &glInfo)); 569 OwnPtr<WebGraphicsContext3DProvider> contextProvider = adoptPtr(Platform::cu rrent()->createOffscreenGraphicsContext3DProvider(wgc3dAttributes, 0, &glInfo));
570 if (!contextProvider || shouldFailContextCreationForTesting) { 570 if (!contextProvider || shouldFailContextCreationForTesting) {
571 shouldFailContextCreationForTesting = false; 571 shouldFailContextCreationForTesting = false;
572 canvas->dispatchEvent(WebGLContextEvent::create(EventTypeNames::webglcon textcreationerror, false, true, extractWebGLContextCreationError(glInfo))); 572 canvas->dispatchEvent(WebGLContextEvent::create(EventTypeNames::webglcon textcreationerror, false, true, extractWebGLContextCreationError(glInfo)));
573 return nullptr; 573 return nullptr;
574 } 574 }
575 gpu::gles2::GLES2Interface* gl = contextProvider->contextGL(); 575 gpu::gles2::GLES2Interface* gl = contextProvider->contextGL();
576 if (!String(gl->GetString(GL_EXTENSIONS)).contains("GL_OES_packed_depth_sten cil")) { 576 if (!String(gl->GetString(GL_EXTENSIONS)).contains("GL_OES_packed_depth_sten cil")) {
577 canvas->dispatchEvent(WebGLContextEvent::create(EventTypeNames::webglcon textcreationerror, false, true, "OES_packed_depth_stencil support is required.") ); 577 canvas->dispatchEvent(WebGLContextEvent::create(EventTypeNames::webglcon textcreationerror, false, true, "OES_packed_depth_stencil support is required.") );
(...skipping 5411 matching lines...) Expand 10 before | Expand all | Expand 10 after
5989 if (!frame->loader().client()->allowWebGL(settings && settings->webGLEnabled ())) 5989 if (!frame->loader().client()->allowWebGL(settings && settings->webGLEnabled ()))
5990 return; 5990 return;
5991 5991
5992 // If the context was lost due to RealLostContext, we need to destroy the ol d DrawingBuffer before creating new DrawingBuffer to ensure resource budget enou gh. 5992 // If the context was lost due to RealLostContext, we need to destroy the ol d DrawingBuffer before creating new DrawingBuffer to ensure resource budget enou gh.
5993 if (drawingBuffer()) { 5993 if (drawingBuffer()) {
5994 m_drawingBuffer->beginDestruction(); 5994 m_drawingBuffer->beginDestruction();
5995 m_drawingBuffer.clear(); 5995 m_drawingBuffer.clear();
5996 } 5996 }
5997 5997
5998 WebGraphicsContext3D::Attributes attributes = toWebGraphicsContext3DAttribut es(m_requestedAttributes, canvas()->document().topDocument().url().getString(), settings, version()); 5998 WebGraphicsContext3D::Attributes attributes = toWebGraphicsContext3DAttribut es(m_requestedAttributes, canvas()->document().topDocument().url().getString(), settings, version());
5999 blink::WebGraphicsContext3D::WebGraphicsInfo glInfo; 5999 Platform::GraphicsInfo glInfo;
6000 OwnPtr<WebGraphicsContext3DProvider> contextProvider = adoptPtr(Platform::cu rrent()->createOffscreenGraphicsContext3DProvider(attributes, 0, &glInfo)); 6000 OwnPtr<WebGraphicsContext3DProvider> contextProvider = adoptPtr(Platform::cu rrent()->createOffscreenGraphicsContext3DProvider(attributes, 0, &glInfo));
6001 RefPtr<DrawingBuffer> buffer; 6001 RefPtr<DrawingBuffer> buffer;
6002 if (contextProvider) { 6002 if (contextProvider) {
6003 // Construct a new drawing buffer with the new WebGraphicsContext3D. 6003 // Construct a new drawing buffer with the new WebGraphicsContext3D.
6004 buffer = createDrawingBuffer(contextProvider.release()); 6004 buffer = createDrawingBuffer(contextProvider.release());
6005 // If DrawingBuffer::create() fails to allocate a fbo, |drawingBuffer| i s set to null. 6005 // If DrawingBuffer::create() fails to allocate a fbo, |drawingBuffer| i s set to null.
6006 } 6006 }
6007 if (!buffer) { 6007 if (!buffer) {
6008 if (m_contextLostMode == RealLostContext) { 6008 if (m_contextLostMode == RealLostContext) {
6009 m_restoreTimer.startOneShot(secondsBetweenRestoreAttempts, BLINK_FRO M_HERE); 6009 m_restoreTimer.startOneShot(secondsBetweenRestoreAttempts, BLINK_FRO M_HERE);
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
6339 contextGL()->PixelStorei(GL_UNPACK_ALIGNMENT, 1); 6339 contextGL()->PixelStorei(GL_UNPACK_ALIGNMENT, 1);
6340 } 6340 }
6341 6341
6342 void WebGLRenderingContextBase::restoreUnpackParameters() 6342 void WebGLRenderingContextBase::restoreUnpackParameters()
6343 { 6343 {
6344 if (m_unpackAlignment != 1) 6344 if (m_unpackAlignment != 1)
6345 contextGL()->PixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment); 6345 contextGL()->PixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment);
6346 } 6346 }
6347 6347
6348 } // namespace blink 6348 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698