| Index: sky/engine/core/html/canvas/WebGLRenderingContextBase.h
|
| diff --git a/sky/engine/core/html/canvas/WebGLRenderingContextBase.h b/sky/engine/core/html/canvas/WebGLRenderingContextBase.h
|
| deleted file mode 100644
|
| index 7ccb82703effcbc6e3822acbec81890c6d76c137..0000000000000000000000000000000000000000
|
| --- a/sky/engine/core/html/canvas/WebGLRenderingContextBase.h
|
| +++ /dev/null
|
| @@ -1,942 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2009 Apple Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions
|
| - * are met:
|
| - * 1. Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * 2. Redistributions in binary form must reproduce the above copyright
|
| - * notice, this list of conditions and the following disclaimer in the
|
| - * documentation and/or other materials provided with the distribution.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
|
| - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
| - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
|
| - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
| - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
| - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
| - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
| - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -#ifndef SKY_ENGINE_CORE_HTML_CANVAS_WEBGLRENDERINGCONTEXTBASE_H_
|
| -#define SKY_ENGINE_CORE_HTML_CANVAS_WEBGLRENDERINGCONTEXTBASE_H_
|
| -
|
| -#include "sky/engine/bindings/nullable.h"
|
| -#include "sky/engine/core/dom/ActiveDOMObject.h"
|
| -#include "sky/engine/core/html/canvas/CanvasRenderingContext.h"
|
| -#include "sky/engine/core/html/canvas/WebGLExtensionName.h"
|
| -#include "sky/engine/core/html/canvas/WebGLGetInfo.h"
|
| -#include "sky/engine/core/page/Page.h"
|
| -#include "sky/engine/core/rendering/RenderBoxModelObject.h"
|
| -#include "sky/engine/platform/Timer.h"
|
| -#include "sky/engine/platform/graphics/GraphicsTypes3D.h"
|
| -#include "sky/engine/platform/graphics/ImageBuffer.h"
|
| -#include "sky/engine/platform/graphics/gpu/DrawingBuffer.h"
|
| -#include "sky/engine/platform/graphics/gpu/Extensions3DUtil.h"
|
| -#include "sky/engine/platform/graphics/gpu/WebGLImageConversion.h"
|
| -#include "sky/engine/public/platform/WebGraphicsContext3D.h"
|
| -#include "sky/engine/wtf/Float32Array.h"
|
| -#include "sky/engine/wtf/Int32Array.h"
|
| -#include "sky/engine/wtf/OwnPtr.h"
|
| -#include "sky/engine/wtf/text/WTFString.h"
|
| -
|
| -namespace blink {
|
| -class WebLayer;
|
| -}
|
| -
|
| -namespace blink {
|
| -
|
| -class ANGLEInstancedArrays;
|
| -class EXTBlendMinMax;
|
| -class EXTFragDepth;
|
| -class EXTShaderTextureLOD;
|
| -class EXTTextureFilterAnisotropic;
|
| -class ExceptionState;
|
| -class HTMLImageElement;
|
| -class ImageBuffer;
|
| -class ImageData;
|
| -class IntSize;
|
| -class OESElementIndexUint;
|
| -class OESStandardDerivatives;
|
| -class OESTextureFloat;
|
| -class OESTextureFloatLinear;
|
| -class OESTextureHalfFloat;
|
| -class OESTextureHalfFloatLinear;
|
| -class OESVertexArrayObject;
|
| -class WebGLActiveInfo;
|
| -class WebGLBuffer;
|
| -class WebGLCompressedTextureATC;
|
| -class WebGLCompressedTextureETC1;
|
| -class WebGLCompressedTexturePVRTC;
|
| -class WebGLCompressedTextureS3TC;
|
| -class WebGLContextAttributes;
|
| -class WebGLContextGroup;
|
| -class WebGLContextObject;
|
| -class WebGLDebugRendererInfo;
|
| -class WebGLDebugShaders;
|
| -class WebGLDepthTexture;
|
| -class WebGLDrawBuffers;
|
| -class WebGLExtension;
|
| -class WebGLFramebuffer;
|
| -class WebGLLoseContext;
|
| -class WebGLObject;
|
| -class WebGLProgram;
|
| -class WebGLRenderbuffer;
|
| -class WebGLShader;
|
| -class WebGLShaderPrecisionFormat;
|
| -class WebGLSharedObject;
|
| -class WebGLSharedWebGraphicsContext3D;
|
| -class WebGLTexture;
|
| -class WebGLUniformLocation;
|
| -class WebGLVertexArrayObjectOES;
|
| -
|
| -class WebGLRenderingContextLostCallback;
|
| -class WebGLRenderingContextErrorMessageCallback;
|
| -
|
| -class WebGLRenderingContextBase: public CanvasRenderingContext, public ActiveDOMObject, public Page::MultisamplingChangedObserver {
|
| -public:
|
| - virtual ~WebGLRenderingContextBase();
|
| -
|
| - virtual unsigned version() const = 0;
|
| - virtual String contextName() const = 0;
|
| - virtual void registerContextExtensions() = 0;
|
| -
|
| - static unsigned getWebGLVersion(const CanvasRenderingContext*);
|
| -
|
| - int drawingBufferWidth() const;
|
| - int drawingBufferHeight() const;
|
| -
|
| - void activeTexture(GLenum texture);
|
| - void attachShader(WebGLProgram*, WebGLShader*);
|
| - void bindAttribLocation(WebGLProgram*, GLuint index, const String& name);
|
| - void bindBuffer(GLenum target, WebGLBuffer*);
|
| - void bindFramebuffer(GLenum target, WebGLFramebuffer*);
|
| - void bindRenderbuffer(GLenum target, WebGLRenderbuffer*);
|
| - void bindTexture(GLenum target, WebGLTexture*);
|
| - void blendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
| - void blendEquation(GLenum mode);
|
| - void blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
|
| - void blendFunc(GLenum sfactor, GLenum dfactor);
|
| - void blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
|
| -
|
| - void bufferData(GLenum target, long long size, GLenum usage);
|
| - void bufferData(GLenum target, ArrayBuffer* data, GLenum usage);
|
| - void bufferData(GLenum target, ArrayBufferView* data, GLenum usage);
|
| - void bufferSubData(GLenum target, long long offset, ArrayBuffer* data);
|
| - void bufferSubData(GLenum target, long long offset, ArrayBufferView* data);
|
| -
|
| - GLenum checkFramebufferStatus(GLenum target);
|
| - void clear(GLbitfield mask);
|
| - void clearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
|
| - void clearDepth(GLfloat);
|
| - void clearStencil(GLint);
|
| - void colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
|
| - void compileShader(WebGLShader*);
|
| -
|
| - void compressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, ArrayBufferView* data);
|
| - void compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, ArrayBufferView* data);
|
| -
|
| - void copyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
|
| - void copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
|
| -
|
| - PassRefPtr<WebGLBuffer> createBuffer();
|
| - PassRefPtr<WebGLFramebuffer> createFramebuffer();
|
| - PassRefPtr<WebGLProgram> createProgram();
|
| - PassRefPtr<WebGLRenderbuffer> createRenderbuffer();
|
| - PassRefPtr<WebGLShader> createShader(GLenum type);
|
| - PassRefPtr<WebGLTexture> createTexture();
|
| -
|
| - void cullFace(GLenum mode);
|
| -
|
| - void deleteBuffer(WebGLBuffer*);
|
| - void deleteFramebuffer(WebGLFramebuffer*);
|
| - void deleteProgram(WebGLProgram*);
|
| - void deleteRenderbuffer(WebGLRenderbuffer*);
|
| - void deleteShader(WebGLShader*);
|
| - void deleteTexture(WebGLTexture*);
|
| -
|
| - void depthFunc(GLenum);
|
| - void depthMask(GLboolean);
|
| - void depthRange(GLfloat zNear, GLfloat zFar);
|
| - void detachShader(WebGLProgram*, WebGLShader*);
|
| - void disable(GLenum cap);
|
| - void disableVertexAttribArray(GLuint index);
|
| - void drawArrays(GLenum mode, GLint first, GLsizei count);
|
| - void drawElements(GLenum mode, GLsizei count, GLenum type, long long offset);
|
| -
|
| - void drawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
|
| - void drawElementsInstancedANGLE(GLenum mode, GLsizei count, GLenum type, long long offset, GLsizei primcount);
|
| -
|
| - void enable(GLenum cap);
|
| - void enableVertexAttribArray(GLuint index);
|
| - void finish();
|
| - void flush();
|
| - void framebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, WebGLRenderbuffer*);
|
| - void framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, WebGLTexture*, GLint level);
|
| - void frontFace(GLenum mode);
|
| - void generateMipmap(GLenum target);
|
| -
|
| - PassRefPtr<WebGLActiveInfo> getActiveAttrib(WebGLProgram*, GLuint index);
|
| - PassRefPtr<WebGLActiveInfo> getActiveUniform(WebGLProgram*, GLuint index);
|
| - bool getAttachedShaders(WebGLProgram*, Vector<RefPtr<WebGLShader> >&);
|
| - Nullable<Vector<RefPtr<WebGLShader> > > getAttachedShaders(WebGLProgram*);
|
| - GLint getAttribLocation(WebGLProgram*, const String& name);
|
| - WebGLGetInfo getBufferParameter(GLenum target, GLenum pname);
|
| - PassRefPtr<WebGLContextAttributes> getContextAttributes();
|
| - GLenum getError();
|
| - PassRefPtr<WebGLExtension> getExtension(const String& name);
|
| - WebGLGetInfo getFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname);
|
| - WebGLGetInfo getParameter(GLenum pname);
|
| - WebGLGetInfo getProgramParameter(WebGLProgram*, GLenum pname);
|
| - String getProgramInfoLog(WebGLProgram*);
|
| - WebGLGetInfo getRenderbufferParameter(GLenum target, GLenum pname);
|
| - WebGLGetInfo getShaderParameter(WebGLShader*, GLenum pname);
|
| - String getShaderInfoLog(WebGLShader*);
|
| - PassRefPtr<WebGLShaderPrecisionFormat> getShaderPrecisionFormat(GLenum shaderType, GLenum precisionType);
|
| - String getShaderSource(WebGLShader*);
|
| - Nullable<Vector<String> > getSupportedExtensions();
|
| - WebGLGetInfo getTexParameter(GLenum target, GLenum pname);
|
| - WebGLGetInfo getUniform(WebGLProgram*, const WebGLUniformLocation*);
|
| - PassRefPtr<WebGLUniformLocation> getUniformLocation(WebGLProgram*, const String&);
|
| - WebGLGetInfo getVertexAttrib(GLuint index, GLenum pname);
|
| - long long getVertexAttribOffset(GLuint index, GLenum pname);
|
| -
|
| - void hint(GLenum target, GLenum mode);
|
| - GLboolean isBuffer(WebGLBuffer*);
|
| - bool isContextLost() const;
|
| - GLboolean isEnabled(GLenum cap);
|
| - GLboolean isFramebuffer(WebGLFramebuffer*);
|
| - GLboolean isProgram(WebGLProgram*);
|
| - GLboolean isRenderbuffer(WebGLRenderbuffer*);
|
| - GLboolean isShader(WebGLShader*);
|
| - GLboolean isTexture(WebGLTexture*);
|
| -
|
| - void lineWidth(GLfloat);
|
| - void linkProgram(WebGLProgram*);
|
| - void pixelStorei(GLenum pname, GLint param);
|
| - void polygonOffset(GLfloat factor, GLfloat units);
|
| - void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, ArrayBufferView* pixels);
|
| - void renderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
|
| - void sampleCoverage(GLfloat value, GLboolean invert);
|
| - void scissor(GLint x, GLint y, GLsizei width, GLsizei height);
|
| - void shaderSource(WebGLShader*, const String&);
|
| - void stencilFunc(GLenum func, GLint ref, GLuint mask);
|
| - void stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
|
| - void stencilMask(GLuint);
|
| - void stencilMaskSeparate(GLenum face, GLuint mask);
|
| - void stencilOp(GLenum fail, GLenum zfail, GLenum zpass);
|
| - void stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
|
| -
|
| - void texImage2D(GLenum target, GLint level, GLenum internalformat,
|
| - GLsizei width, GLsizei height, GLint border,
|
| - GLenum format, GLenum type, ArrayBufferView*, ExceptionState&);
|
| - void texImage2D(GLenum target, GLint level, GLenum internalformat,
|
| - GLenum format, GLenum type, ImageData*, ExceptionState&);
|
| - void texImage2D(GLenum target, GLint level, GLenum internalformat,
|
| - GLenum format, GLenum type, HTMLImageElement*, ExceptionState&);
|
| - void texImage2D(GLenum target, GLint level, GLenum internalformat,
|
| - GLenum format, GLenum type, HTMLCanvasElement*, ExceptionState&);
|
| -
|
| - void texParameterf(GLenum target, GLenum pname, GLfloat param);
|
| - void texParameteri(GLenum target, GLenum pname, GLint param);
|
| -
|
| - void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
| - GLsizei width, GLsizei height,
|
| - GLenum format, GLenum type, ArrayBufferView*, ExceptionState&);
|
| - void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
| - GLenum format, GLenum type, ImageData*, ExceptionState&);
|
| - void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
| - GLenum format, GLenum type, HTMLImageElement*, ExceptionState&);
|
| - void texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
| - GLenum format, GLenum type, HTMLCanvasElement*, ExceptionState&);
|
| -
|
| - void uniform1f(const WebGLUniformLocation*, GLfloat x);
|
| - void uniform1fv(const WebGLUniformLocation*, Float32Array* v);
|
| - void uniform1fv(const WebGLUniformLocation*, GLfloat* v, GLsizei);
|
| - void uniform1i(const WebGLUniformLocation*, GLint x);
|
| - void uniform1iv(const WebGLUniformLocation*, Int32Array* v);
|
| - void uniform1iv(const WebGLUniformLocation*, GLint* v, GLsizei);
|
| - void uniform2f(const WebGLUniformLocation*, GLfloat x, GLfloat y);
|
| - void uniform2fv(const WebGLUniformLocation*, Float32Array* v);
|
| - void uniform2fv(const WebGLUniformLocation*, GLfloat* v, GLsizei);
|
| - void uniform2i(const WebGLUniformLocation*, GLint x, GLint y);
|
| - void uniform2iv(const WebGLUniformLocation*, Int32Array* v);
|
| - void uniform2iv(const WebGLUniformLocation*, GLint* v, GLsizei);
|
| - void uniform3f(const WebGLUniformLocation*, GLfloat x, GLfloat y, GLfloat z);
|
| - void uniform3fv(const WebGLUniformLocation*, Float32Array* v);
|
| - void uniform3fv(const WebGLUniformLocation*, GLfloat* v, GLsizei);
|
| - void uniform3i(const WebGLUniformLocation*, GLint x, GLint y, GLint z);
|
| - void uniform3iv(const WebGLUniformLocation*, Int32Array* v);
|
| - void uniform3iv(const WebGLUniformLocation*, GLint* v, GLsizei);
|
| - void uniform4f(const WebGLUniformLocation*, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
| - void uniform4fv(const WebGLUniformLocation*, Float32Array* v);
|
| - void uniform4fv(const WebGLUniformLocation*, GLfloat* v, GLsizei);
|
| - void uniform4i(const WebGLUniformLocation*, GLint x, GLint y, GLint z, GLint w);
|
| - void uniform4iv(const WebGLUniformLocation*, Int32Array* v);
|
| - void uniform4iv(const WebGLUniformLocation*, GLint* v, GLsizei);
|
| - void uniformMatrix2fv(const WebGLUniformLocation*, GLboolean transpose, Float32Array* value);
|
| - void uniformMatrix2fv(const WebGLUniformLocation*, GLboolean transpose, GLfloat* value, GLsizei);
|
| - void uniformMatrix3fv(const WebGLUniformLocation*, GLboolean transpose, Float32Array* value);
|
| - void uniformMatrix3fv(const WebGLUniformLocation*, GLboolean transpose, GLfloat* value, GLsizei);
|
| - void uniformMatrix4fv(const WebGLUniformLocation*, GLboolean transpose, Float32Array* value);
|
| - void uniformMatrix4fv(const WebGLUniformLocation*, GLboolean transpose, GLfloat* value, GLsizei);
|
| -
|
| - void useProgram(WebGLProgram*);
|
| - void validateProgram(WebGLProgram*);
|
| -
|
| - void vertexAttrib1f(GLuint index, GLfloat x);
|
| - void vertexAttrib1fv(GLuint index, Float32Array* values);
|
| - void vertexAttrib1fv(GLuint index, GLfloat* values, GLsizei);
|
| - void vertexAttrib2f(GLuint index, GLfloat x, GLfloat y);
|
| - void vertexAttrib2fv(GLuint index, Float32Array* values);
|
| - void vertexAttrib2fv(GLuint index, GLfloat* values, GLsizei);
|
| - void vertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z);
|
| - void vertexAttrib3fv(GLuint index, Float32Array* values);
|
| - void vertexAttrib3fv(GLuint index, GLfloat* values, GLsizei);
|
| - void vertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
|
| - void vertexAttrib4fv(GLuint index, Float32Array* values);
|
| - void vertexAttrib4fv(GLuint index, GLfloat* values, GLsizei);
|
| - void vertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized,
|
| - GLsizei stride, long long offset);
|
| -
|
| - void vertexAttribDivisorANGLE(GLuint index, GLuint divisor);
|
| -
|
| - void viewport(GLint x, GLint y, GLsizei width, GLsizei height);
|
| -
|
| - // WEBGL_lose_context support
|
| - enum LostContextMode {
|
| - NotLostContext,
|
| -
|
| - // Lost context occurred at the graphics system level.
|
| - RealLostContext,
|
| -
|
| - // Lost context provoked by WEBGL_lose_context.
|
| - WebGLLoseContextLostContext,
|
| -
|
| - // Lost context occurred due to internal implementation reasons.
|
| - SyntheticLostContext,
|
| - };
|
| - enum AutoRecoveryMethod {
|
| - // Don't restore automatically.
|
| - Manual,
|
| -
|
| - // Restore when resources are available.
|
| - WhenAvailable,
|
| -
|
| - // Restore as soon as possible.
|
| - Auto
|
| - };
|
| - void forceLostContext(LostContextMode, AutoRecoveryMethod);
|
| - void forceRestoreContext();
|
| - void loseContextImpl(LostContextMode, AutoRecoveryMethod);
|
| -
|
| - blink::WebGraphicsContext3D* webContext() const { return drawingBuffer()->context(); }
|
| - WebGLContextGroup* contextGroup() const { return m_contextGroup.get(); }
|
| - Extensions3DUtil* extensionsUtil();
|
| -
|
| - void reshape(int width, int height);
|
| -
|
| - void markLayerComposited();
|
| - PassRefPtr<ImageData> paintRenderingResultsToImageData();
|
| -
|
| - void removeSharedObject(WebGLSharedObject*);
|
| - void removeContextObject(WebGLContextObject*);
|
| -
|
| - unsigned maxVertexAttribs() const { return m_maxVertexAttribs; }
|
| -
|
| - // ActiveDOMObject notifications
|
| - virtual bool hasPendingActivity() const override;
|
| - virtual void stop() override;
|
| -
|
| - void setSavingImage(bool isSaving) { m_savingImage = isSaving; }
|
| -
|
| - class TextureUnitState {
|
| - ALLOW_ONLY_INLINE_ALLOCATION();
|
| - public:
|
| - RefPtr<WebGLTexture> m_texture2DBinding;
|
| - RefPtr<WebGLTexture> m_textureCubeMapBinding;
|
| - };
|
| -
|
| -protected:
|
| - friend class WebGLDrawBuffers;
|
| - friend class WebGLFramebuffer;
|
| - friend class WebGLObject;
|
| - friend class WebGLContextObject;
|
| - friend class OESVertexArrayObject;
|
| - friend class WebGLDebugShaders;
|
| - friend class WebGLCompressedTextureATC;
|
| - friend class WebGLCompressedTextureETC1;
|
| - friend class WebGLCompressedTexturePVRTC;
|
| - friend class WebGLCompressedTextureS3TC;
|
| - friend class WebGLRenderingContextErrorMessageCallback;
|
| - friend class WebGLVertexArrayObjectOES;
|
| - friend class ScopedTexture2DRestorer;
|
| -
|
| - WebGLRenderingContextBase(HTMLCanvasElement*, PassOwnPtr<blink::WebGraphicsContext3D>, WebGLContextAttributes*);
|
| - PassRefPtr<DrawingBuffer> createDrawingBuffer(PassOwnPtr<blink::WebGraphicsContext3D>);
|
| - void initializeNewContext();
|
| - void setupFlags();
|
| -
|
| -#if ENABLE(OILPAN)
|
| - PassRefPtr<WebGLSharedWebGraphicsContext3D> sharedWebGraphicsContext3D() const;
|
| -#endif
|
| -
|
| - // CanvasRenderingContext implementation.
|
| - virtual bool is3d() const override { return true; }
|
| - virtual bool isAccelerated() const override { return true; }
|
| - virtual void setIsHidden(bool) override;
|
| - virtual void paintRenderingResultsToCanvas() override;
|
| - virtual blink::WebLayer* platformLayer() const override;
|
| -
|
| - void addSharedObject(WebGLSharedObject*);
|
| - void addContextObject(WebGLContextObject*);
|
| - void detachAndRemoveAllObjects();
|
| -
|
| - void destroyContext();
|
| - void markContextChanged(ContentChangeType);
|
| -
|
| - // Query if the GL implementation is NPOT strict.
|
| - bool isGLES2NPOTStrict() { return m_isGLES2NPOTStrict; }
|
| - // Query if depth_stencil buffer is supported.
|
| - bool isDepthStencilSupported() { return m_isDepthStencilSupported; }
|
| -
|
| - // Helper to return the size in bytes of OpenGL data types
|
| - // like GL_FLOAT, GL_INT, etc.
|
| - unsigned sizeInBytes(GLenum type);
|
| -
|
| - // Check if each enabled vertex attribute is bound to a buffer.
|
| - bool validateRenderingState(const char*);
|
| -
|
| - bool validateWebGLObject(const char*, WebGLObject*);
|
| -
|
| - // Adds a compressed texture format.
|
| - void addCompressedTextureFormat(GLenum);
|
| - void removeAllCompressedTextureFormats();
|
| -
|
| - PassRefPtr<Image> drawImageIntoBuffer(Image*, int width, int height, const char* functionName);
|
| -
|
| - WebGLRenderbuffer* ensureEmulatedStencilBuffer(GLenum target, WebGLRenderbuffer*);
|
| -
|
| - // Structure for rendering to a DrawingBuffer, instead of directly
|
| - // to the back-buffer of m_context.
|
| -#if ENABLE(OILPAN)
|
| - RefPtr<WebGLSharedWebGraphicsContext3D> m_sharedWebGraphicsContext3D;
|
| -#else
|
| - RefPtr<DrawingBuffer> m_drawingBuffer;
|
| -#endif
|
| - DrawingBuffer* drawingBuffer() const;
|
| -
|
| - RefPtr<WebGLContextGroup> m_contextGroup;
|
| -
|
| - LostContextMode m_contextLostMode;
|
| - AutoRecoveryMethod m_autoRecoveryMethod;
|
| - // Dispatches a context lost event once it is determined that one is needed.
|
| - // This is used for synthetic, WEBGL_lose_context and real context losses. For real ones, it's
|
| - // likely that there's no JavaScript on the stack, but that might be dependent
|
| - // on how exactly the platform discovers that the context was lost. For better
|
| - // portability we always defer the dispatch of the event.
|
| - Timer<WebGLRenderingContextBase> m_dispatchContextLostEventTimer;
|
| - bool m_restoreAllowed;
|
| - Timer<WebGLRenderingContextBase> m_restoreTimer;
|
| -
|
| - bool m_needsUpdate;
|
| - bool m_markedCanvasDirty;
|
| - HashSet<RawPtr<WebGLContextObject> > m_contextObjects;
|
| -
|
| - OwnPtr<WebGLRenderingContextLostCallback> m_contextLostCallbackAdapter;
|
| - OwnPtr<WebGLRenderingContextErrorMessageCallback> m_errorMessageCallbackAdapter;
|
| -
|
| - // List of bound VBO's. Used to maintain info about sizes for ARRAY_BUFFER and stored values for ELEMENT_ARRAY_BUFFER
|
| - RefPtr<WebGLBuffer> m_boundArrayBuffer;
|
| -
|
| - RefPtr<WebGLVertexArrayObjectOES> m_defaultVertexArrayObject;
|
| - RefPtr<WebGLVertexArrayObjectOES> m_boundVertexArrayObject;
|
| - void setBoundVertexArrayObject(PassRefPtr<WebGLVertexArrayObjectOES> arrayObject)
|
| - {
|
| - if (arrayObject)
|
| - m_boundVertexArrayObject = arrayObject;
|
| - else
|
| - m_boundVertexArrayObject = m_defaultVertexArrayObject;
|
| - }
|
| -
|
| - class VertexAttribValue {
|
| - public:
|
| - VertexAttribValue()
|
| - {
|
| - initValue();
|
| - }
|
| -
|
| - void initValue()
|
| - {
|
| - value[0] = 0.0f;
|
| - value[1] = 0.0f;
|
| - value[2] = 0.0f;
|
| - value[3] = 1.0f;
|
| - }
|
| -
|
| - GLfloat value[4];
|
| - };
|
| - Vector<VertexAttribValue> m_vertexAttribValue;
|
| - unsigned m_maxVertexAttribs;
|
| - RefPtr<WebGLBuffer> m_vertexAttrib0Buffer;
|
| - long m_vertexAttrib0BufferSize;
|
| - GLfloat m_vertexAttrib0BufferValue[4];
|
| - bool m_forceAttrib0BufferRefill;
|
| - bool m_vertexAttrib0UsedBefore;
|
| -
|
| - RefPtr<WebGLProgram> m_currentProgram;
|
| - RefPtr<WebGLFramebuffer> m_framebufferBinding;
|
| - RefPtr<WebGLRenderbuffer> m_renderbufferBinding;
|
| -
|
| - Vector<TextureUnitState> m_textureUnits;
|
| - unsigned long m_activeTextureUnit;
|
| -
|
| - RefPtr<WebGLTexture> m_blackTexture2D;
|
| - RefPtr<WebGLTexture> m_blackTextureCubeMap;
|
| -
|
| - Vector<GLenum> m_compressedTextureFormats;
|
| -
|
| - // Fixed-size cache of reusable image buffers for video texImage2D calls.
|
| - class LRUImageBufferCache {
|
| - public:
|
| - LRUImageBufferCache(int capacity);
|
| - // The pointer returned is owned by the image buffer map.
|
| - ImageBuffer* imageBuffer(const IntSize& size);
|
| - private:
|
| - void bubbleToFront(int idx);
|
| - OwnPtr<OwnPtr<ImageBuffer>[]> m_buffers;
|
| - int m_capacity;
|
| - };
|
| - LRUImageBufferCache m_generatedImageCache;
|
| -
|
| - GLint m_maxTextureSize;
|
| - GLint m_maxCubeMapTextureSize;
|
| - GLint m_maxRenderbufferSize;
|
| - GLint m_maxViewportDims[2];
|
| - GLint m_maxTextureLevel;
|
| - GLint m_maxCubeMapTextureLevel;
|
| -
|
| - GLint m_maxDrawBuffers;
|
| - GLint m_maxColorAttachments;
|
| - GLenum m_backDrawBuffer;
|
| - bool m_drawBuffersWebGLRequirementsChecked;
|
| - bool m_drawBuffersSupported;
|
| -
|
| - GLint m_packAlignment;
|
| - GLint m_unpackAlignment;
|
| - bool m_unpackFlipY;
|
| - bool m_unpackPremultiplyAlpha;
|
| - GLenum m_unpackColorspaceConversion;
|
| - RefPtr<WebGLContextAttributes> m_requestedAttributes;
|
| -
|
| - bool m_layerCleared;
|
| - GLfloat m_clearColor[4];
|
| - bool m_scissorEnabled;
|
| - GLfloat m_clearDepth;
|
| - GLint m_clearStencil;
|
| - GLboolean m_colorMask[4];
|
| - GLboolean m_depthMask;
|
| -
|
| - bool m_stencilEnabled;
|
| - GLuint m_stencilMask, m_stencilMaskBack;
|
| - GLint m_stencilFuncRef, m_stencilFuncRefBack; // Note that these are the user specified values, not the internal clamped value.
|
| - GLuint m_stencilFuncMask, m_stencilFuncMaskBack;
|
| -
|
| - bool m_isGLES2NPOTStrict;
|
| - bool m_isDepthStencilSupported;
|
| -
|
| - bool m_synthesizedErrorsToConsole;
|
| - int m_numGLErrorsToConsoleAllowed;
|
| -
|
| - bool m_multisamplingAllowed;
|
| - bool m_multisamplingObserverRegistered;
|
| -
|
| - unsigned long m_onePlusMaxNonDefaultTextureUnit;
|
| -
|
| - OwnPtr<Extensions3DUtil> m_extensionsUtil;
|
| -
|
| - bool m_savingImage;
|
| -
|
| - enum ExtensionFlags {
|
| - ApprovedExtension = 0x00,
|
| - // Extension that is behind the draft extensions runtime flag:
|
| - DraftExtension = 0x01,
|
| - };
|
| -
|
| - class ExtensionTracker {
|
| - public:
|
| - ExtensionTracker(ExtensionFlags flags, const char* const* prefixes)
|
| - : m_draft(flags & DraftExtension)
|
| - , m_prefixes(prefixes)
|
| - {
|
| - }
|
| -
|
| -#if !ENABLE(OILPAN)
|
| - virtual ~ExtensionTracker()
|
| - {
|
| - }
|
| -#endif
|
| -
|
| - bool draft() const
|
| - {
|
| - return m_draft;
|
| - }
|
| -
|
| - const char* const* prefixes() const;
|
| - bool matchesNameWithPrefixes(const String&) const;
|
| -
|
| - virtual PassRefPtr<WebGLExtension> getExtension(WebGLRenderingContextBase*) = 0;
|
| - virtual bool supported(WebGLRenderingContextBase*) const = 0;
|
| - virtual const char* extensionName() const = 0;
|
| - virtual void loseExtension() = 0;
|
| -
|
| - private:
|
| - bool m_draft;
|
| - const char* const* m_prefixes;
|
| - };
|
| -
|
| - template <typename T>
|
| - class TypedExtensionTracker final : public ExtensionTracker {
|
| - public:
|
| - static PassOwnPtr<TypedExtensionTracker<T> > create(RefPtr<T>& extensionField, ExtensionFlags flags, const char* const* prefixes)
|
| - {
|
| - return adoptPtr(new TypedExtensionTracker<T>(extensionField, flags, prefixes));
|
| - }
|
| -
|
| -#if !ENABLE(OILPAN)
|
| - virtual ~TypedExtensionTracker()
|
| - {
|
| - if (m_extension) {
|
| - m_extension->lose(true);
|
| - m_extension = nullptr;
|
| - }
|
| - }
|
| -#endif
|
| -
|
| - virtual PassRefPtr<WebGLExtension> getExtension(WebGLRenderingContextBase* context) override
|
| - {
|
| - if (!m_extension) {
|
| - m_extension = T::create(context);
|
| - m_extensionField = m_extension;
|
| - }
|
| -
|
| - return m_extension;
|
| - }
|
| -
|
| - virtual bool supported(WebGLRenderingContextBase* context) const override
|
| - {
|
| - return T::supported(context);
|
| - }
|
| -
|
| - virtual const char* extensionName() const override
|
| - {
|
| - return T::extensionName();
|
| - }
|
| -
|
| - virtual void loseExtension() override
|
| - {
|
| - if (m_extension) {
|
| - m_extension->lose(false);
|
| - if (m_extension->isLost())
|
| - m_extension = nullptr;
|
| - }
|
| - }
|
| -
|
| - private:
|
| - TypedExtensionTracker(RefPtr<T>& extensionField, ExtensionFlags flags, const char* const* prefixes)
|
| - : ExtensionTracker(flags, prefixes)
|
| - , m_extensionField(extensionField)
|
| - {
|
| - }
|
| -
|
| - RefPtr<T>& m_extensionField;
|
| - // ExtensionTracker holds it's own reference to the extension to ensure
|
| - // that it is not deleted before this object's destructor is called
|
| - RefPtr<T> m_extension;
|
| - };
|
| -
|
| - bool m_extensionEnabled[WebGLExtensionNameCount];
|
| - Vector<OwnPtr<ExtensionTracker> > m_extensions;
|
| -
|
| - template <typename T>
|
| - void registerExtension(RefPtr<T>& extensionPtr, ExtensionFlags flags = ApprovedExtension, const char* const* prefixes = 0)
|
| - {
|
| - m_extensions.append(TypedExtensionTracker<T>::create(extensionPtr, flags, prefixes));
|
| - }
|
| -
|
| - bool extensionSupportedAndAllowed(const ExtensionTracker*);
|
| -
|
| - inline bool extensionEnabled(WebGLExtensionName name)
|
| - {
|
| - return m_extensionEnabled[name];
|
| - }
|
| -
|
| - // Errors raised by synthesizeGLError() while the context is lost.
|
| - Vector<GLenum> m_lostContextErrors;
|
| -
|
| - // Helpers for getParameter and others
|
| - WebGLGetInfo getBooleanParameter(GLenum);
|
| - WebGLGetInfo getBooleanArrayParameter(GLenum);
|
| - WebGLGetInfo getFloatParameter(GLenum);
|
| - WebGLGetInfo getIntParameter(GLenum);
|
| - WebGLGetInfo getUnsignedIntParameter(GLenum);
|
| - WebGLGetInfo getWebGLFloatArrayParameter(GLenum);
|
| - WebGLGetInfo getWebGLIntArrayParameter(GLenum);
|
| -
|
| - // Clear the backbuffer if it was composited since the last operation.
|
| - // clearMask is set to the bitfield of any clear that would happen anyway at this time
|
| - // and the function returns true if that clear is now unnecessary.
|
| - bool clearIfComposited(GLbitfield clearMask = 0);
|
| -
|
| - // Helper to restore state that clearing the framebuffer may destroy.
|
| - void restoreStateAfterClear();
|
| -
|
| - // Convert texture internal format.
|
| - GLenum convertTexInternalFormat(GLenum internalformat, GLenum type);
|
| -
|
| - void texImage2DBase(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels, ExceptionState&);
|
| - void texImage2DImpl(GLenum target, GLint level, GLenum internalformat, GLenum format, GLenum type, Image*, WebGLImageConversion::ImageHtmlDomSource, bool flipY, bool premultiplyAlpha, ExceptionState&);
|
| - void texSubImage2DBase(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels, ExceptionState&);
|
| - void texSubImage2DImpl(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLenum format, GLenum type, Image*, WebGLImageConversion::ImageHtmlDomSource, bool flipY, bool premultiplyAlpha, ExceptionState&);
|
| -
|
| - void handleTextureCompleteness(const char*, bool);
|
| - void createFallbackBlackTextures1x1();
|
| -
|
| - // Helper function for copyTex{Sub}Image, check whether the internalformat
|
| - // and the color buffer format of the current bound framebuffer combination
|
| - // is valid.
|
| - bool isTexInternalFormatColorBufferCombinationValid(GLenum texInternalFormat, GLenum colorBufferFormat);
|
| -
|
| - // Helper function to get the bound framebuffer's color buffer format.
|
| - GLenum boundFramebufferColorFormat();
|
| -
|
| - // Helper function to verify limits on the length of uniform and attribute locations.
|
| - bool validateLocationLength(const char* functionName, const String&);
|
| -
|
| - // Helper function to check if size is non-negative.
|
| - // Generate GL error and return false for negative inputs; otherwise, return true.
|
| - bool validateSize(const char* functionName, GLint x, GLint y);
|
| -
|
| - // Helper function to check if all characters in the string belong to the
|
| - // ASCII subset as defined in GLSL ES 1.0 spec section 3.1.
|
| - bool validateString(const char* functionName, const String&);
|
| -
|
| - // Helper function to check target and texture bound to the target.
|
| - // Generate GL errors and return 0 if target is invalid or texture bound is
|
| - // null. Otherwise, return the texture bound to the target.
|
| - WebGLTexture* validateTextureBinding(const char* functionName, GLenum target, bool useSixEnumsForCubeMap);
|
| -
|
| - // Helper function to check input format/type for functions {copy}Tex{Sub}Image.
|
| - // Generates GL error and returns false if parameters are invalid.
|
| - bool validateTexFuncFormatAndType(const char* functionName, GLenum format, GLenum type, GLint level);
|
| -
|
| - // Helper function to check input level for functions {copy}Tex{Sub}Image.
|
| - // Generates GL error and returns false if level is invalid.
|
| - bool validateTexFuncLevel(const char* functionName, GLenum target, GLint level);
|
| -
|
| - // Helper function to check if a 64-bit value is non-negative and can fit into a 32-bit integer.
|
| - // Generates GL error and returns false if not.
|
| - bool validateValueFitNonNegInt32(const char* functionName, const char* paramName, long long value);
|
| -
|
| - enum TexFuncValidationFunctionType {
|
| - NotTexSubImage2D,
|
| - TexSubImage2D,
|
| - };
|
| -
|
| - enum TexFuncValidationSourceType {
|
| - SourceArrayBufferView,
|
| - SourceImageData,
|
| - SourceHTMLImageElement,
|
| - SourceHTMLCanvasElement,
|
| - };
|
| -
|
| - // Helper function for tex{Sub}Image2D to check if the input format/type/level/target/width/height/border/xoffset/yoffset are valid.
|
| - // Otherwise, it would return quickly without doing other work.
|
| - bool validateTexFunc(const char* functionName, TexFuncValidationFunctionType, TexFuncValidationSourceType, GLenum target, GLint level, GLenum internalformat, GLsizei width,
|
| - GLsizei height, GLint border, GLenum format, GLenum type, GLint xoffset, GLint yoffset);
|
| -
|
| - // Helper function to check input width and height for functions {copy, compressed}Tex{Sub}Image.
|
| - // Generates GL error and returns false if width or height is invalid.
|
| - bool validateTexFuncDimensions(const char* functionName, TexFuncValidationFunctionType, GLenum target, GLint level, GLsizei width, GLsizei height);
|
| -
|
| - // Helper function to check input parameters for functions {copy}Tex{Sub}Image.
|
| - // Generates GL error and returns false if parameters are invalid.
|
| - bool validateTexFuncParameters(const char* functionName, TexFuncValidationFunctionType, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type);
|
| -
|
| - enum NullDisposition {
|
| - NullAllowed,
|
| - NullNotAllowed
|
| - };
|
| -
|
| - // Helper function to validate that the given ArrayBufferView
|
| - // is of the correct type and contains enough data for the texImage call.
|
| - // Generates GL error and returns false if parameters are invalid.
|
| - bool validateTexFuncData(const char* functionName, GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, ArrayBufferView* pixels, NullDisposition);
|
| -
|
| - // Helper function to validate a given texture format is settable as in
|
| - // you can supply data to texImage2D, or call texImage2D, copyTexImage2D and
|
| - // copyTexSubImage2D.
|
| - // Generates GL error and returns false if the format is not settable.
|
| - bool validateSettableTexFormat(const char* functionName, GLenum format);
|
| -
|
| - // Helper function to validate compressed texture data is correct size
|
| - // for the given format and dimensions.
|
| - bool validateCompressedTexFuncData(const char* functionName, GLsizei width, GLsizei height, GLenum format, ArrayBufferView* pixels);
|
| -
|
| - // Helper function for validating compressed texture formats.
|
| - bool validateCompressedTexFormat(GLenum format);
|
| -
|
| - // Helper function to validate compressed texture dimensions are valid for
|
| - // the given format.
|
| - bool validateCompressedTexDimensions(const char* functionName, TexFuncValidationFunctionType, GLenum target, GLint level, GLsizei width, GLsizei height, GLenum format);
|
| -
|
| - // Helper function to validate compressed texture dimensions are valid for
|
| - // the given format.
|
| - bool validateCompressedTexSubDimensions(const char* functionName, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, WebGLTexture*);
|
| -
|
| - // Helper function to validate mode for draw{Arrays/Elements}.
|
| - bool validateDrawMode(const char* functionName, GLenum);
|
| -
|
| - // Helper function to validate if front/back stencilMask and stencilFunc settings are the same.
|
| - bool validateStencilSettings(const char* functionName);
|
| -
|
| - // Helper function to validate stencil or depth func.
|
| - bool validateStencilOrDepthFunc(const char* functionName, GLenum);
|
| -
|
| - // Helper function for texParameterf and texParameteri.
|
| - void texParameter(GLenum target, GLenum pname, GLfloat parami, GLint paramf, bool isFloat);
|
| -
|
| - // Helper function to print GL errors to console.
|
| - void printGLErrorToConsole(const String&);
|
| -
|
| - // Helper function to print warnings to console. Currently
|
| - // used only to warn about use of obsolete functions.
|
| - void printWarningToConsole(const String&);
|
| -
|
| - // Helper function to validate input parameters for framebuffer functions.
|
| - // Generate GL error if parameters are illegal.
|
| - bool validateFramebufferFuncParameters(const char* functionName, GLenum target, GLenum attachment);
|
| -
|
| - // Helper function to validate blend equation mode.
|
| - bool validateBlendEquation(const char* functionName, GLenum);
|
| -
|
| - // Helper function to validate blend func factors.
|
| - bool validateBlendFuncFactors(const char* functionName, GLenum src, GLenum dst);
|
| -
|
| - // Helper function to validate a GL capability.
|
| - bool validateCapability(const char* functionName, GLenum);
|
| -
|
| - // Helper function to validate input parameters for uniform functions.
|
| - bool validateUniformParameters(const char* functionName, const WebGLUniformLocation*, Float32Array*, GLsizei mod);
|
| - bool validateUniformParameters(const char* functionName, const WebGLUniformLocation*, Int32Array*, GLsizei mod);
|
| - bool validateUniformParameters(const char* functionName, const WebGLUniformLocation*, void*, GLsizei, GLsizei mod);
|
| - bool validateUniformMatrixParameters(const char* functionName, const WebGLUniformLocation*, GLboolean transpose, Float32Array*, GLsizei mod);
|
| - bool validateUniformMatrixParameters(const char* functionName, const WebGLUniformLocation*, GLboolean transpose, void*, GLsizei, GLsizei mod);
|
| -
|
| - // Helper function to validate the target for bufferData.
|
| - // Return the current bound buffer to target, or 0 if the target is invalid.
|
| - WebGLBuffer* validateBufferDataTarget(const char* functionName, GLenum target);
|
| -
|
| - // Helper function for tex{Sub}Image2D to make sure image is ready and wouldn't taint Origin.
|
| - bool validateHTMLImageElement(const char* functionName, HTMLImageElement*, ExceptionState&);
|
| -
|
| - // Helper function for tex{Sub}Image2D to make sure canvas is ready and wouldn't taint Origin.
|
| - bool validateHTMLCanvasElement(const char* functionName, HTMLCanvasElement*, ExceptionState&);
|
| -
|
| - // Helper function to validate drawArrays(Instanced) calls
|
| - bool validateDrawArrays(const char* functionName, GLenum mode, GLint first, GLsizei count);
|
| -
|
| - // Helper function to validate drawElements(Instanced) calls
|
| - bool validateDrawElements(const char* functionName, GLenum mode, GLsizei count, GLenum type, long long offset);
|
| -
|
| - // Helper function to validate draw*Instanced calls
|
| - bool validateDrawInstanced(const char* functionName, GLsizei primcount);
|
| -
|
| - // Helper functions for vertexAttribNf{v}.
|
| - void vertexAttribfImpl(const char* functionName, GLuint index, GLsizei expectedSize, GLfloat, GLfloat, GLfloat, GLfloat);
|
| - void vertexAttribfvImpl(const char* functionName, GLuint index, Float32Array*, GLsizei expectedSize);
|
| - void vertexAttribfvImpl(const char* functionName, GLuint index, GLfloat*, GLsizei, GLsizei expectedSize);
|
| -
|
| - // Helper functions to bufferData() and bufferSubData().
|
| - void bufferDataImpl(GLenum target, long long size, const void* data, GLenum usage);
|
| - void bufferSubDataImpl(GLenum target, long long offset, GLsizeiptr size, const void* data);
|
| -
|
| - // Helper function for delete* (deleteBuffer, deleteProgram, etc) functions.
|
| - // Return false if caller should return without further processing.
|
| - bool deleteObject(WebGLObject*);
|
| -
|
| - // Helper function for bind* (bindBuffer, bindTexture, etc) and useProgram.
|
| - // If the object has already been deleted, set deleted to true upon return.
|
| - // Return false if caller should return without further processing.
|
| - bool checkObjectToBeBound(const char* functionName, WebGLObject*, bool& deleted);
|
| -
|
| - void dispatchContextLostEvent(Timer<WebGLRenderingContextBase>*);
|
| - // Helper for restoration after context lost.
|
| - void maybeRestoreContext(Timer<WebGLRenderingContextBase>*);
|
| -
|
| - enum ConsoleDisplayPreference {
|
| - DisplayInConsole,
|
| - DontDisplayInConsole
|
| - };
|
| -
|
| - // Wrapper for WebGraphicsContext3D::synthesizeGLError that sends a message
|
| - // to the JavaScript console.
|
| - void synthesizeGLError(GLenum, const char* functionName, const char* description, ConsoleDisplayPreference = DisplayInConsole);
|
| - void emitGLWarning(const char* function, const char* reason);
|
| -
|
| - String ensureNotNull(const String&) const;
|
| -
|
| - // Enable or disable stencil test based on user setting and
|
| - // whether the current FBO has a stencil buffer.
|
| - void applyStencilTest();
|
| -
|
| - // Helper for enabling or disabling a capability.
|
| - void enableOrDisable(GLenum capability, bool enable);
|
| -
|
| - // Clamp the width and height to GL_MAX_VIEWPORT_DIMS.
|
| - IntSize clampedCanvasSize();
|
| -
|
| - // First time called, if EXT_draw_buffers is supported, query the value; otherwise return 0.
|
| - // Later, return the cached value.
|
| - GLint maxDrawBuffers();
|
| - GLint maxColorAttachments();
|
| -
|
| - void setBackDrawBuffer(GLenum);
|
| -
|
| - void restoreCurrentFramebuffer();
|
| - void restoreCurrentTexture2D();
|
| -
|
| - virtual void multisamplingChanged(bool) override;
|
| -
|
| - void findNewMaxNonDefaultTextureUnit();
|
| -
|
| - friend class WebGLStateRestorer;
|
| - friend class WebGLRenderingContextEvictionManager;
|
| -
|
| - static Vector<WebGLRenderingContextBase*>& activeContexts();
|
| - static Vector<WebGLRenderingContextBase*>& forciblyEvictedContexts();
|
| -
|
| - static void activateContext(WebGLRenderingContextBase*);
|
| - static void deactivateContext(WebGLRenderingContextBase*);
|
| - static void addToEvictedList(WebGLRenderingContextBase*);
|
| - static void removeFromEvictedList(WebGLRenderingContextBase*);
|
| - static void willDestroyContext(WebGLRenderingContextBase*);
|
| - static void forciblyLoseOldestContext(const String& reason);
|
| - // Return the least recently used context's position in the active context vector.
|
| - // If the vector is empty, return the maximum allowed active context number.
|
| - static size_t oldestContextIndex();
|
| - static IntSize oldestContextSize();
|
| -};
|
| -
|
| -DEFINE_TYPE_CASTS(WebGLRenderingContextBase, CanvasRenderingContext, context, context->is3d(), context.is3d());
|
| -
|
| -} // namespace blink
|
| -
|
| -WTF_ALLOW_MOVE_INIT_AND_COMPARE_WITH_MEM_FUNCTIONS(blink::WebGLRenderingContextBase::TextureUnitState);
|
| -
|
| -#endif // SKY_ENGINE_CORE_HTML_CANVAS_WEBGLRENDERINGCONTEXTBASE_H_
|
|
|