| 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 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 | 531 |
| 532 GLuint m_onePlusMaxEnabledAttribIndex; | 532 GLuint m_onePlusMaxEnabledAttribIndex; |
| 533 unsigned long m_onePlusMaxNonDefaultTextureUnit; | 533 unsigned long m_onePlusMaxNonDefaultTextureUnit; |
| 534 | 534 |
| 535 OwnPtr<Extensions3DUtil> m_extensionsUtil; | 535 OwnPtr<Extensions3DUtil> m_extensionsUtil; |
| 536 | 536 |
| 537 enum ExtensionFlags { | 537 enum ExtensionFlags { |
| 538 ApprovedExtension = 0x00, | 538 ApprovedExtension = 0x00, |
| 539 // Extension that is behind the draft extensions runtime flag: | 539 // Extension that is behind the draft extensions runtime flag: |
| 540 DraftExtension = 0x01, | 540 DraftExtension = 0x01, |
| 541 PrivilegedExtension = 0x02, | |
| 542 // Extension that is still in draft state, but has been selectively enab
led by default under a prefix. Do not use | 541 // Extension that is still in draft state, but has been selectively enab
led by default under a prefix. Do not use |
| 543 // this for enabling new draft extensions; use the DraftExtension flag i
nstead, and do not use vendor prefixes: | 542 // this for enabling new draft extensions; use the DraftExtension flag i
nstead, and do not use vendor prefixes: |
| 544 EnabledDraftExtension = 0x04, | 543 EnabledDraftExtension = 0x04, |
| 545 WebGLDebugRendererInfoExtension = 0x08, | |
| 546 }; | 544 }; |
| 547 | 545 |
| 548 class ExtensionTracker { | 546 class ExtensionTracker { |
| 549 public: | 547 public: |
| 550 ExtensionTracker(ExtensionFlags flags, const char* const* prefixes) | 548 ExtensionTracker(ExtensionFlags flags, const char* const* prefixes) |
| 551 : m_privileged(flags & PrivilegedExtension) | 549 : m_draft(flags & DraftExtension) |
| 552 , m_draft(flags & DraftExtension) | |
| 553 , m_webglDebugRendererInfo(flags & WebGLDebugRendererInfoExtension) | |
| 554 , m_prefixes(prefixes) | 550 , m_prefixes(prefixes) |
| 555 { | 551 { |
| 556 } | 552 } |
| 557 | 553 |
| 558 virtual ~ExtensionTracker() | 554 virtual ~ExtensionTracker() |
| 559 { | 555 { |
| 560 } | 556 } |
| 561 | 557 |
| 562 bool privileged() const | |
| 563 { | |
| 564 return m_privileged; | |
| 565 } | |
| 566 | |
| 567 bool draft() const | 558 bool draft() const |
| 568 { | 559 { |
| 569 return m_draft; | 560 return m_draft; |
| 570 } | 561 } |
| 571 | 562 |
| 572 bool webglDebugRendererInfo() const | |
| 573 { | |
| 574 return m_webglDebugRendererInfo; | |
| 575 } | |
| 576 | |
| 577 const char* const* prefixes() const; | 563 const char* const* prefixes() const; |
| 578 bool matchesNameWithPrefixes(const String&) const; | 564 bool matchesNameWithPrefixes(const String&) const; |
| 579 | 565 |
| 580 virtual PassRefPtr<WebGLExtension> getExtension(WebGLRenderingContextBas
e*) = 0; | 566 virtual PassRefPtr<WebGLExtension> getExtension(WebGLRenderingContextBas
e*) = 0; |
| 581 virtual bool supported(WebGLRenderingContextBase*) const = 0; | 567 virtual bool supported(WebGLRenderingContextBase*) const = 0; |
| 582 virtual const char* extensionName() const = 0; | 568 virtual const char* extensionName() const = 0; |
| 583 virtual void loseExtension() = 0; | 569 virtual void loseExtension() = 0; |
| 584 | 570 |
| 585 private: | 571 private: |
| 586 bool m_privileged; | |
| 587 bool m_draft; | 572 bool m_draft; |
| 588 bool m_webglDebugRendererInfo; | |
| 589 const char* const* m_prefixes; | 573 const char* const* m_prefixes; |
| 590 }; | 574 }; |
| 591 | 575 |
| 592 template <typename T> | 576 template <typename T> |
| 593 class TypedExtensionTracker FINAL : public ExtensionTracker { | 577 class TypedExtensionTracker FINAL : public ExtensionTracker { |
| 594 public: | 578 public: |
| 595 TypedExtensionTracker(RefPtr<T>& extensionField, ExtensionFlags flags, c
onst char* const* prefixes) | 579 TypedExtensionTracker(RefPtr<T>& extensionField, ExtensionFlags flags, c
onst char* const* prefixes) |
| 596 : ExtensionTracker(flags, prefixes) | 580 : ExtensionTracker(flags, prefixes) |
| 597 , m_extensionField(extensionField) | 581 , m_extensionField(extensionField) |
| 598 , m_extension(nullptr) | 582 , m_extension(nullptr) |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 859 | 843 |
| 860 // Helper function for bind* (bindBuffer, bindTexture, etc) and useProgram. | 844 // Helper function for bind* (bindBuffer, bindTexture, etc) and useProgram. |
| 861 // If the object has already been deleted, set deleted to true upon return. | 845 // If the object has already been deleted, set deleted to true upon return. |
| 862 // Return false if caller should return without further processing. | 846 // Return false if caller should return without further processing. |
| 863 bool checkObjectToBeBound(const char* functionName, WebGLObject*, bool& dele
ted); | 847 bool checkObjectToBeBound(const char* functionName, WebGLObject*, bool& dele
ted); |
| 864 | 848 |
| 865 void dispatchContextLostEvent(Timer<WebGLRenderingContextBase>*); | 849 void dispatchContextLostEvent(Timer<WebGLRenderingContextBase>*); |
| 866 // Helper for restoration after context lost. | 850 // Helper for restoration after context lost. |
| 867 void maybeRestoreContext(Timer<WebGLRenderingContextBase>*); | 851 void maybeRestoreContext(Timer<WebGLRenderingContextBase>*); |
| 868 | 852 |
| 869 // Determine if we are running privileged code in the browser, for example, | |
| 870 // a Safari or Chrome extension. | |
| 871 bool allowPrivilegedExtensions() const; | |
| 872 | |
| 873 // Determine if WEBGL_debug_renderer_info extension is enabled. For the | |
| 874 // moment it can be enabled either through a chromium finch experiment | |
| 875 // or for privileged code in the browser. | |
| 876 bool allowWebGLDebugRendererInfo() const; | |
| 877 | |
| 878 enum ConsoleDisplayPreference { | 853 enum ConsoleDisplayPreference { |
| 879 DisplayInConsole, | 854 DisplayInConsole, |
| 880 DontDisplayInConsole | 855 DontDisplayInConsole |
| 881 }; | 856 }; |
| 882 | 857 |
| 883 // Wrapper for WebGraphicsContext3D::synthesizeGLError that sends a message | 858 // Wrapper for WebGraphicsContext3D::synthesizeGLError that sends a message |
| 884 // to the JavaScript console. | 859 // to the JavaScript console. |
| 885 void synthesizeGLError(GLenum, const char* functionName, const char* descrip
tion, ConsoleDisplayPreference = DisplayInConsole); | 860 void synthesizeGLError(GLenum, const char* functionName, const char* descrip
tion, ConsoleDisplayPreference = DisplayInConsole); |
| 886 void emitGLWarning(const char* function, const char* reason); | 861 void emitGLWarning(const char* function, const char* reason); |
| 887 | 862 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 926 // If the vector is empty, return the maximum allowed active context number. | 901 // If the vector is empty, return the maximum allowed active context number. |
| 927 static size_t oldestContextIndex(); | 902 static size_t oldestContextIndex(); |
| 928 static IntSize oldestContextSize(); | 903 static IntSize oldestContextSize(); |
| 929 }; | 904 }; |
| 930 | 905 |
| 931 DEFINE_TYPE_CASTS(WebGLRenderingContextBase, CanvasRenderingContext, context, co
ntext->is3d(), context.is3d()); | 906 DEFINE_TYPE_CASTS(WebGLRenderingContextBase, CanvasRenderingContext, context, co
ntext->is3d(), context.is3d()); |
| 932 | 907 |
| 933 } // namespace WebCore | 908 } // namespace WebCore |
| 934 | 909 |
| 935 #endif // WebGLRenderingContextBase_h | 910 #endif // WebGLRenderingContextBase_h |
| OLD | NEW |