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

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

Issue 2125023002: Reland "webgl: use immutable texture for the default FBO." (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: m_webGLVersion > WebGL1 (for future versions) Created 4 years, 5 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 867 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 case GL_SRGB8: 878 case GL_SRGB8:
879 case GL_SRGB8_ALPHA8: 879 case GL_SRGB8_ALPHA8:
880 return true; 880 return true;
881 default: 881 default:
882 return false; 882 return false;
883 } 883 }
884 } 884 }
885 885
886 } // namespace 886 } // namespace
887 887
888 WebGLRenderingContextBase::WebGLRenderingContextBase(OffscreenCanvas* passedOffs creenCanvas, std::unique_ptr<WebGraphicsContext3DProvider> contextProvider, cons t WebGLContextAttributes& requestedAttributes) 888 WebGLRenderingContextBase::WebGLRenderingContextBase(OffscreenCanvas* passedOffs creenCanvas,
889 : WebGLRenderingContextBase(nullptr, passedOffscreenCanvas, std::move(contex tProvider), requestedAttributes) 889 std::unique_ptr<WebGraphicsContext3DProvider> contextProvider,
890 const WebGLContextAttributes& requestedAttributes, unsigned version)
891 : WebGLRenderingContextBase(nullptr, passedOffscreenCanvas, std::move(contex tProvider), requestedAttributes, version)
890 { } 892 { }
891 893
892 WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement* passedCa nvas, std::unique_ptr<WebGraphicsContext3DProvider> contextProvider, const WebGL ContextAttributes& requestedAttributes) 894 WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement* passedCa nvas,
893 : WebGLRenderingContextBase(passedCanvas, nullptr, std::move(contextProvider ), requestedAttributes) 895 std::unique_ptr<WebGraphicsContext3DProvider> contextProvider,
896 const WebGLContextAttributes& requestedAttributes, unsigned version)
897 : WebGLRenderingContextBase(passedCanvas, nullptr, std::move(contextProvider ), requestedAttributes, version)
894 { } 898 { }
895 899
896 WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement* passedCa nvas, OffscreenCanvas* passedOffscreenCanvas, std::unique_ptr<WebGraphicsContext 3DProvider> contextProvider, const WebGLContextAttributes& requestedAttributes) 900 WebGLRenderingContextBase::WebGLRenderingContextBase(HTMLCanvasElement* passedCa nvas,
901 OffscreenCanvas* passedOffscreenCanvas, std::unique_ptr<WebGraphicsContext3D Provider> contextProvider,
902 const WebGLContextAttributes& requestedAttributes, unsigned version)
897 : CanvasRenderingContext(passedCanvas, passedOffscreenCanvas) 903 : CanvasRenderingContext(passedCanvas, passedOffscreenCanvas)
898 , m_isHidden(false) 904 , m_isHidden(false)
899 , m_contextLostMode(NotLostContext) 905 , m_contextLostMode(NotLostContext)
900 , m_autoRecoveryMethod(Manual) 906 , m_autoRecoveryMethod(Manual)
901 , m_dispatchContextLostEventTimer(this, &WebGLRenderingContextBase::dispatch ContextLostEvent) 907 , m_dispatchContextLostEventTimer(this, &WebGLRenderingContextBase::dispatch ContextLostEvent)
902 , m_restoreAllowed(false) 908 , m_restoreAllowed(false)
903 , m_restoreTimer(this, &WebGLRenderingContextBase::maybeRestoreContext) 909 , m_restoreTimer(this, &WebGLRenderingContextBase::maybeRestoreContext)
904 , m_preservedDefaultVAOObjectWrapper(false) 910 , m_preservedDefaultVAOObjectWrapper(false)
905 , m_generatedImageCache(4) 911 , m_generatedImageCache(4)
906 , m_requestedAttributes(requestedAttributes) 912 , m_requestedAttributes(requestedAttributes)
907 , m_synthesizedErrorsToConsole(true) 913 , m_synthesizedErrorsToConsole(true)
908 , m_numGLErrorsToConsoleAllowed(maxGLErrorsAllowedToConsole) 914 , m_numGLErrorsToConsoleAllowed(maxGLErrorsAllowedToConsole)
909 , m_onePlusMaxNonDefaultTextureUnit(0) 915 , m_onePlusMaxNonDefaultTextureUnit(0)
910 , m_isWebGL2FormatsTypesAdded(false) 916 , m_isWebGL2FormatsTypesAdded(false)
911 , m_isWebGL2InternalFormatsCopyTexImageAdded(false) 917 , m_isWebGL2InternalFormatsCopyTexImageAdded(false)
912 , m_isOESTextureFloatFormatsTypesAdded(false) 918 , m_isOESTextureFloatFormatsTypesAdded(false)
913 , m_isOESTextureHalfFloatFormatsTypesAdded(false) 919 , m_isOESTextureHalfFloatFormatsTypesAdded(false)
914 , m_isWebGLDepthTextureFormatsTypesAdded(false) 920 , m_isWebGLDepthTextureFormatsTypesAdded(false)
915 , m_isEXTsRGBFormatsTypesAdded(false) 921 , m_isEXTsRGBFormatsTypesAdded(false)
922 , m_version(version)
916 { 923 {
917 ASSERT(contextProvider); 924 ASSERT(contextProvider);
918 925
919 m_contextGroup = WebGLContextGroup::create(); 926 m_contextGroup = WebGLContextGroup::create();
920 m_contextGroup->addContext(this); 927 m_contextGroup->addContext(this);
921 928
922 m_maxViewportDims[0] = m_maxViewportDims[1] = 0; 929 m_maxViewportDims[0] = m_maxViewportDims[1] = 0;
923 contextProvider->contextGL()->GetIntegerv(GL_MAX_VIEWPORT_DIMS, m_maxViewpor tDims); 930 contextProvider->contextGL()->GetIntegerv(GL_MAX_VIEWPORT_DIMS, m_maxViewpor tDims);
924 931
925 RefPtr<DrawingBuffer> buffer = createDrawingBuffer(std::move(contextProvider )); 932 RefPtr<DrawingBuffer> buffer = createDrawingBuffer(std::move(contextProvider ));
(...skipping 19 matching lines...) Expand all
945 } 952 }
946 953
947 PassRefPtr<DrawingBuffer> WebGLRenderingContextBase::createDrawingBuffer(std::un ique_ptr<WebGraphicsContext3DProvider> contextProvider) 954 PassRefPtr<DrawingBuffer> WebGLRenderingContextBase::createDrawingBuffer(std::un ique_ptr<WebGraphicsContext3DProvider> contextProvider)
948 { 955 {
949 bool premultipliedAlpha = m_requestedAttributes.premultipliedAlpha(); 956 bool premultipliedAlpha = m_requestedAttributes.premultipliedAlpha();
950 bool wantAlphaChannel = m_requestedAttributes.alpha(); 957 bool wantAlphaChannel = m_requestedAttributes.alpha();
951 bool wantDepthBuffer = m_requestedAttributes.depth(); 958 bool wantDepthBuffer = m_requestedAttributes.depth();
952 bool wantStencilBuffer = m_requestedAttributes.stencil(); 959 bool wantStencilBuffer = m_requestedAttributes.stencil();
953 bool wantAntialiasing = m_requestedAttributes.antialias(); 960 bool wantAntialiasing = m_requestedAttributes.antialias();
954 DrawingBuffer::PreserveDrawingBuffer preserve = m_requestedAttributes.preser veDrawingBuffer() ? DrawingBuffer::Preserve : DrawingBuffer::Discard; 961 DrawingBuffer::PreserveDrawingBuffer preserve = m_requestedAttributes.preser veDrawingBuffer() ? DrawingBuffer::Preserve : DrawingBuffer::Discard;
962 DrawingBuffer::WebGLVersion webGLVersion = DrawingBuffer::WebGL1;
963 if (version() == 1) {
964 webGLVersion = DrawingBuffer::WebGL1;
965 } else if (version() == 2) {
966 webGLVersion = DrawingBuffer::WebGL2;
967 } else {
968 NOTREACHED();
969 }
955 return DrawingBuffer::create( 970 return DrawingBuffer::create(
956 std::move(contextProvider), 971 std::move(contextProvider),
957 clampedCanvasSize(), 972 clampedCanvasSize(),
958 premultipliedAlpha, 973 premultipliedAlpha,
959 wantAlphaChannel, 974 wantAlphaChannel,
960 wantDepthBuffer, 975 wantDepthBuffer,
961 wantStencilBuffer, 976 wantStencilBuffer,
962 wantAntialiasing, 977 wantAntialiasing,
963 preserve); 978 preserve,
979 webGLVersion);
964 } 980 }
965 981
966 void WebGLRenderingContextBase::initializeNewContext() 982 void WebGLRenderingContextBase::initializeNewContext()
967 { 983 {
968 ASSERT(!isContextLost()); 984 ASSERT(!isContextLost());
969 ASSERT(drawingBuffer()); 985 ASSERT(drawingBuffer());
970 986
971 m_markedCanvasDirty = false; 987 m_markedCanvasDirty = false;
972 m_activeTextureUnit = 0; 988 m_activeTextureUnit = 0;
973 m_packAlignment = 4; 989 m_packAlignment = 4;
(...skipping 5497 matching lines...) Expand 10 before | Expand all | Expand 10 after
6471 contextGL()->PixelStorei(GL_UNPACK_ALIGNMENT, 1); 6487 contextGL()->PixelStorei(GL_UNPACK_ALIGNMENT, 1);
6472 } 6488 }
6473 6489
6474 void WebGLRenderingContextBase::restoreUnpackParameters() 6490 void WebGLRenderingContextBase::restoreUnpackParameters()
6475 { 6491 {
6476 if (m_unpackAlignment != 1) 6492 if (m_unpackAlignment != 1)
6477 contextGL()->PixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment); 6493 contextGL()->PixelStorei(GL_UNPACK_ALIGNMENT, m_unpackAlignment);
6478 } 6494 }
6479 6495
6480 } // namespace blink 6496 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698