| 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 12 matching lines...) Expand all Loading... |
| 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 24 */ | 24 */ |
| 25 | 25 |
| 26 #ifndef WebGLRenderingContextBase_h | 26 #ifndef WebGLRenderingContextBase_h |
| 27 #define WebGLRenderingContextBase_h | 27 #define WebGLRenderingContextBase_h |
| 28 | 28 |
| 29 #include "bindings/core/v8/Nullable.h" | 29 #include "bindings/core/v8/Nullable.h" |
| 30 #include "bindings/core/v8/ScriptState.h" | 30 #include "bindings/core/v8/ScriptState.h" |
| 31 #include "bindings/core/v8/ScriptValue.h" | 31 #include "bindings/core/v8/ScriptValue.h" |
| 32 #include "bindings/core/v8/ScriptWrappable.h" | 32 #include "bindings/core/v8/ScriptWrappable.h" |
| 33 #include "bindings/core/v8/ScriptWrappableVisitor.h" |
| 33 #include "core/CoreExport.h" | 34 #include "core/CoreExport.h" |
| 34 #include "core/dom/DOMTypedArray.h" | 35 #include "core/dom/DOMTypedArray.h" |
| 35 #include "core/dom/TypedFlexibleArrayBufferView.h" | 36 #include "core/dom/TypedFlexibleArrayBufferView.h" |
| 36 #include "core/html/canvas/CanvasContextCreationAttributes.h" | 37 #include "core/html/canvas/CanvasContextCreationAttributes.h" |
| 37 #include "core/html/canvas/CanvasRenderingContext.h" | 38 #include "core/html/canvas/CanvasRenderingContext.h" |
| 38 #include "core/layout/ContentChangeType.h" | 39 #include "core/layout/ContentChangeType.h" |
| 39 #include "modules/webgl/WebGLContextAttributes.h" | 40 #include "modules/webgl/WebGLContextAttributes.h" |
| 40 #include "modules/webgl/WebGLExtensionName.h" | 41 #include "modules/webgl/WebGLExtensionName.h" |
| 41 #include "modules/webgl/WebGLTexture.h" | 42 #include "modules/webgl/WebGLTexture.h" |
| 42 #include "modules/webgl/WebGLVertexArrayObjectBase.h" | 43 #include "modules/webgl/WebGLVertexArrayObjectBase.h" |
| (...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 579 | 580 |
| 580 DECLARE_VIRTUAL_TRACE_WRAPPERS(); | 581 DECLARE_VIRTUAL_TRACE_WRAPPERS(); |
| 581 | 582 |
| 582 // Returns approximate gpu memory allocated per pixel. | 583 // Returns approximate gpu memory allocated per pixel. |
| 583 int externallyAllocatedBytesPerPixel() override; | 584 int externallyAllocatedBytesPerPixel() override; |
| 584 | 585 |
| 585 class TextureUnitState { | 586 class TextureUnitState { |
| 586 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); | 587 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); |
| 587 | 588 |
| 588 public: | 589 public: |
| 589 Member<WebGLTexture> m_texture2DBinding; | 590 TraceWrapperMember<WebGLTexture> m_texture2DBinding; |
| 590 Member<WebGLTexture> m_textureCubeMapBinding; | 591 TraceWrapperMember<WebGLTexture> m_textureCubeMapBinding; |
| 591 Member<WebGLTexture> m_texture3DBinding; | 592 TraceWrapperMember<WebGLTexture> m_texture3DBinding; |
| 592 Member<WebGLTexture> m_texture2DArrayBinding; | 593 TraceWrapperMember<WebGLTexture> m_texture2DArrayBinding; |
| 593 | 594 |
| 594 DECLARE_TRACE(); | 595 DECLARE_TRACE(); |
| 596 DECLARE_TRACE_WRAPPERS(); |
| 595 }; | 597 }; |
| 596 | 598 |
| 597 PassRefPtr<Image> getImage(AccelerationHint, SnapshotReason) const override; | 599 PassRefPtr<Image> getImage(AccelerationHint, SnapshotReason) const override; |
| 598 void setFilterQuality(SkFilterQuality) override; | 600 void setFilterQuality(SkFilterQuality) override; |
| 599 bool isWebGL2OrHigher() { return version() >= 2; } | 601 bool isWebGL2OrHigher() { return version() >= 2; } |
| 600 | 602 |
| 601 void getHTMLOrOffscreenCanvas(HTMLCanvasElementOrOffscreenCanvas&) const; | 603 void getHTMLOrOffscreenCanvas(HTMLCanvasElementOrOffscreenCanvas&) const; |
| 602 | 604 |
| 603 void commit(ExceptionState&); | 605 void commit(ExceptionState&); |
| 604 | 606 |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 704 // was lost. For better portability we always defer the dispatch of the event. | 706 // was lost. For better portability we always defer the dispatch of the event. |
| 705 Timer<WebGLRenderingContextBase> m_dispatchContextLostEventTimer; | 707 Timer<WebGLRenderingContextBase> m_dispatchContextLostEventTimer; |
| 706 bool m_restoreAllowed; | 708 bool m_restoreAllowed; |
| 707 Timer<WebGLRenderingContextBase> m_restoreTimer; | 709 Timer<WebGLRenderingContextBase> m_restoreTimer; |
| 708 | 710 |
| 709 bool m_markedCanvasDirty; | 711 bool m_markedCanvasDirty; |
| 710 HeapHashSet<WeakMember<WebGLContextObject>> m_contextObjects; | 712 HeapHashSet<WeakMember<WebGLContextObject>> m_contextObjects; |
| 711 | 713 |
| 712 // List of bound VBO's. Used to maintain info about sizes for ARRAY_BUFFER and | 714 // List of bound VBO's. Used to maintain info about sizes for ARRAY_BUFFER and |
| 713 // stored values for ELEMENT_ARRAY_BUFFER | 715 // stored values for ELEMENT_ARRAY_BUFFER |
| 714 Member<WebGLBuffer> m_boundArrayBuffer; | 716 TraceWrapperMember<WebGLBuffer> m_boundArrayBuffer; |
| 715 | 717 |
| 716 Member<WebGLVertexArrayObjectBase> m_defaultVertexArrayObject; | 718 Member<WebGLVertexArrayObjectBase> m_defaultVertexArrayObject; |
| 717 Member<WebGLVertexArrayObjectBase> m_boundVertexArrayObject; | 719 TraceWrapperMember<WebGLVertexArrayObjectBase> m_boundVertexArrayObject; |
| 718 void setBoundVertexArrayObject(WebGLVertexArrayObjectBase*); | 720 void setBoundVertexArrayObject(WebGLVertexArrayObjectBase*); |
| 719 | 721 |
| 720 enum VertexAttribValueType { | 722 enum VertexAttribValueType { |
| 721 Float32ArrayType, | 723 Float32ArrayType, |
| 722 Int32ArrayType, | 724 Int32ArrayType, |
| 723 Uint32ArrayType, | 725 Uint32ArrayType, |
| 724 }; | 726 }; |
| 725 | 727 |
| 726 Vector<VertexAttribValueType> m_vertexAttribType; | 728 Vector<VertexAttribValueType> m_vertexAttribType; |
| 727 unsigned m_maxVertexAttribs; | 729 unsigned m_maxVertexAttribs; |
| 728 void setVertexAttribType(GLuint index, VertexAttribValueType); | 730 void setVertexAttribType(GLuint index, VertexAttribValueType); |
| 729 | 731 |
| 730 Member<WebGLProgram> m_currentProgram; | 732 TraceWrapperMember<WebGLProgram> m_currentProgram; |
| 731 Member<WebGLFramebuffer> m_framebufferBinding; | 733 TraceWrapperMember<WebGLFramebuffer> m_framebufferBinding; |
| 732 Member<WebGLRenderbuffer> m_renderbufferBinding; | 734 TraceWrapperMember<WebGLRenderbuffer> m_renderbufferBinding; |
| 733 | 735 |
| 734 HeapVector<TextureUnitState> m_textureUnits; | 736 HeapVector<TextureUnitState> m_textureUnits; |
| 735 unsigned long m_activeTextureUnit; | 737 unsigned long m_activeTextureUnit; |
| 736 | 738 |
| 737 Vector<GLenum> m_compressedTextureFormats; | 739 Vector<GLenum> m_compressedTextureFormats; |
| 738 | 740 |
| 739 // Fixed-size cache of reusable image buffers for video texImage2D calls. | 741 // Fixed-size cache of reusable image buffers for video texImage2D calls. |
| 740 class LRUImageBufferCache { | 742 class LRUImageBufferCache { |
| 741 public: | 743 public: |
| 742 LRUImageBufferCache(int capacity); | 744 LRUImageBufferCache(int capacity); |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 877 : ExtensionTracker(flags, prefixes), m_extensionField(extensionField) {} | 879 : ExtensionTracker(flags, prefixes), m_extensionField(extensionField) {} |
| 878 | 880 |
| 879 GC_PLUGIN_IGNORE("http://crbug.com/519953") | 881 GC_PLUGIN_IGNORE("http://crbug.com/519953") |
| 880 Member<T>& m_extensionField; | 882 Member<T>& m_extensionField; |
| 881 // ExtensionTracker holds it's own reference to the extension to ensure | 883 // ExtensionTracker holds it's own reference to the extension to ensure |
| 882 // that it is not deleted before this object's destructor is called | 884 // that it is not deleted before this object's destructor is called |
| 883 Member<T> m_extension; | 885 Member<T> m_extension; |
| 884 }; | 886 }; |
| 885 | 887 |
| 886 bool m_extensionEnabled[WebGLExtensionNameCount]; | 888 bool m_extensionEnabled[WebGLExtensionNameCount]; |
| 887 HeapVector<Member<ExtensionTracker>> m_extensions; | 889 HeapVector<TraceWrapperMember<ExtensionTracker>> m_extensions; |
| 888 | 890 |
| 889 template <typename T> | 891 template <typename T> |
| 890 void registerExtension(Member<T>& extensionPtr, | 892 void registerExtension(Member<T>& extensionPtr, |
| 891 ExtensionFlags flags = ApprovedExtension, | 893 ExtensionFlags flags = ApprovedExtension, |
| 892 const char* const* prefixes = nullptr) { | 894 const char* const* prefixes = nullptr) { |
| 893 m_extensions.append( | 895 m_extensions.append(TraceWrapperMember<ExtensionTracker>( |
| 894 TypedExtensionTracker<T>::create(extensionPtr, flags, prefixes)); | 896 this, TypedExtensionTracker<T>::create(extensionPtr, flags, prefixes))); |
| 895 } | 897 } |
| 896 | 898 |
| 897 bool extensionSupportedAndAllowed(const ExtensionTracker*); | 899 bool extensionSupportedAndAllowed(const ExtensionTracker*); |
| 898 | 900 |
| 899 inline bool extensionEnabled(WebGLExtensionName name) { | 901 inline bool extensionEnabled(WebGLExtensionName name) { |
| 900 return m_extensionEnabled[name]; | 902 return m_extensionEnabled[name]; |
| 901 } | 903 } |
| 902 | 904 |
| 903 // ScopedDrawingBufferBinder is used for | 905 // ScopedDrawingBufferBinder is used for |
| 904 // ReadPixels/CopyTexImage2D/CopySubImage2D to read from a multisampled | 906 // ReadPixels/CopyTexImage2D/CopySubImage2D to read from a multisampled |
| (...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1550 context, | 1552 context, |
| 1551 context->is3d(), | 1553 context->is3d(), |
| 1552 context.is3d()); | 1554 context.is3d()); |
| 1553 | 1555 |
| 1554 } // namespace blink | 1556 } // namespace blink |
| 1555 | 1557 |
| 1556 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS( | 1558 WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS( |
| 1557 blink::WebGLRenderingContextBase::TextureUnitState); | 1559 blink::WebGLRenderingContextBase::TextureUnitState); |
| 1558 | 1560 |
| 1559 #endif // WebGLRenderingContextBase_h | 1561 #endif // WebGLRenderingContextBase_h |
| OLD | NEW |