|
| 1 | +2014-02-20 Dean Jackson < [email protected]> |
| 2 | + |
| 3 | + An unresolved WebGL Context should operate normally until used |
| 4 | + https://bugs.webkit.org/show_bug.cgi?id=129110 |
| 5 | + |
| 6 | + Reviewed by Brent Fulgham. |
| 7 | + |
| 8 | + Add the ability to create a special instance of WebGLRenderingContext, |
| 9 | + that appears normal but won't actually do anything if asked. This will |
| 10 | + be created in the case of the WebGLLoadPolicy being "pending" and helps |
| 11 | + in the case of pages that feature detect by creating a context and |
| 12 | + immediately deleting it. |
| 13 | + |
| 14 | + Note that the context doesn't actually try to recover from this state |
| 15 | + yet, although that would be a nice addition. When asked to do something |
| 16 | + it could actually try to create the GraphicsContext3D. However, if it |
| 17 | + fails it would then have to fire a context lost. |
| 18 | + |
| 19 | + * html/HTMLCanvasElement.cpp: |
| 20 | + (WebCore::HTMLCanvasElement::getContext): Move the load policy code out of getContext. |
| 21 | + * html/canvas/WebGLRenderingContext.cpp: |
| 22 | + (WebCore::WebGLRenderingContext::create): Add the ability to create a pending context. |
| 23 | + (WebCore::WebGLRenderingContext::WebGLRenderingContext): New constructor for a pending context. |
| 24 | + (WebCore::WebGLRenderingContext::~WebGLRenderingContext): Only delete if not pending. |
| 25 | + (WebCore::WebGLRenderingContext::destroyGraphicsContext3D): Ditto. |
| 26 | + (WebCore::WebGLRenderingContext::clearIfComposited): Everything below is about checking the |
| 27 | + pending state before doing anything, and triggering a resolution if necessary. |
| 28 | + (WebCore::WebGLRenderingContext::activeTexture): |
| 29 | + (WebCore::WebGLRenderingContext::attachShader): |
| 30 | + (WebCore::WebGLRenderingContext::bindAttribLocation): |
| 31 | + (WebCore::WebGLRenderingContext::checkObjectToBeBound): |
| 32 | + (WebCore::WebGLRenderingContext::blendColor): |
| 33 | + (WebCore::WebGLRenderingContext::blendEquation): |
| 34 | + (WebCore::WebGLRenderingContext::blendEquationSeparate): |
| 35 | + (WebCore::WebGLRenderingContext::blendFunc): |
| 36 | + (WebCore::WebGLRenderingContext::blendFuncSeparate): |
| 37 | + (WebCore::WebGLRenderingContext::bufferData): |
| 38 | + (WebCore::WebGLRenderingContext::bufferSubData): |
| 39 | + (WebCore::WebGLRenderingContext::checkFramebufferStatus): |
| 40 | + (WebCore::WebGLRenderingContext::clear): |
| 41 | + (WebCore::WebGLRenderingContext::clearColor): |
| 42 | + (WebCore::WebGLRenderingContext::clearDepth): |
| 43 | + (WebCore::WebGLRenderingContext::clearStencil): |
| 44 | + (WebCore::WebGLRenderingContext::colorMask): |
| 45 | + (WebCore::WebGLRenderingContext::compileShader): |
| 46 | + (WebCore::WebGLRenderingContext::compressedTexImage2D): |
| 47 | + (WebCore::WebGLRenderingContext::compressedTexSubImage2D): |
| 48 | + (WebCore::WebGLRenderingContext::copyTexImage2D): |
| 49 | + (WebCore::WebGLRenderingContext::copyTexSubImage2D): |
| 50 | + (WebCore::WebGLRenderingContext::createBuffer): |
| 51 | + (WebCore::WebGLRenderingContext::createFramebuffer): |
| 52 | + (WebCore::WebGLRenderingContext::createTexture): |
| 53 | + (WebCore::WebGLRenderingContext::createProgram): |
| 54 | + (WebCore::WebGLRenderingContext::createRenderbuffer): |
| 55 | + (WebCore::WebGLRenderingContext::createShader): |
| 56 | + (WebCore::WebGLRenderingContext::cullFace): |
| 57 | + (WebCore::WebGLRenderingContext::deleteObject): |
| 58 | + (WebCore::WebGLRenderingContext::depthFunc): |
| 59 | + (WebCore::WebGLRenderingContext::depthMask): |
| 60 | + (WebCore::WebGLRenderingContext::depthRange): |
| 61 | + (WebCore::WebGLRenderingContext::detachShader): |
| 62 | + (WebCore::WebGLRenderingContext::disable): |
| 63 | + (WebCore::WebGLRenderingContext::disableVertexAttribArray): |
| 64 | + (WebCore::WebGLRenderingContext::validateDrawArrays): |
| 65 | + (WebCore::WebGLRenderingContext::validateDrawElements): |
| 66 | + (WebCore::WebGLRenderingContext::enable): |
| 67 | + (WebCore::WebGLRenderingContext::enableVertexAttribArray): |
| 68 | + (WebCore::WebGLRenderingContext::finish): |
| 69 | + (WebCore::WebGLRenderingContext::flush): |
| 70 | + (WebCore::WebGLRenderingContext::framebufferRenderbuffer): |
| 71 | + (WebCore::WebGLRenderingContext::framebufferTexture2D): |
| 72 | + (WebCore::WebGLRenderingContext::frontFace): |
| 73 | + (WebCore::WebGLRenderingContext::generateMipmap): |
| 74 | + (WebCore::WebGLRenderingContext::getActiveAttrib): |
| 75 | + (WebCore::WebGLRenderingContext::getActiveUniform): |
| 76 | + (WebCore::WebGLRenderingContext::getAttachedShaders): |
| 77 | + (WebCore::WebGLRenderingContext::getAttribLocation): |
| 78 | + (WebCore::WebGLRenderingContext::getBufferParameter): |
| 79 | + (WebCore::WebGLRenderingContext::getContextAttributes): |
| 80 | + (WebCore::WebGLRenderingContext::getExtension): |
| 81 | + (WebCore::WebGLRenderingContext::getFramebufferAttachmentParameter): |
| 82 | + (WebCore::WebGLRenderingContext::getParameter): |
| 83 | + (WebCore::WebGLRenderingContext::getProgramParameter): |
| 84 | + (WebCore::WebGLRenderingContext::getProgramInfoLog): |
| 85 | + (WebCore::WebGLRenderingContext::getRenderbufferParameter): |
| 86 | + (WebCore::WebGLRenderingContext::getShaderParameter): |
| 87 | + (WebCore::WebGLRenderingContext::getShaderInfoLog): |
| 88 | + (WebCore::WebGLRenderingContext::getShaderPrecisionFormat): |
| 89 | + (WebCore::WebGLRenderingContext::getShaderSource): |
| 90 | + (WebCore::WebGLRenderingContext::getTexParameter): |
| 91 | + (WebCore::WebGLRenderingContext::getUniform): |
| 92 | + (WebCore::WebGLRenderingContext::getUniformLocation): |
| 93 | + (WebCore::WebGLRenderingContext::getVertexAttrib): |
| 94 | + (WebCore::WebGLRenderingContext::getVertexAttribOffset): |
| 95 | + (WebCore::WebGLRenderingContext::hint): |
| 96 | + (WebCore::WebGLRenderingContext::isBuffer): |
| 97 | + (WebCore::WebGLRenderingContext::isContextLostOrPending): |
| 98 | + (WebCore::WebGLRenderingContext::isEnabled): |
| 99 | + (WebCore::WebGLRenderingContext::isFramebuffer): |
| 100 | + (WebCore::WebGLRenderingContext::isProgram): |
| 101 | + (WebCore::WebGLRenderingContext::isRenderbuffer): |
| 102 | + (WebCore::WebGLRenderingContext::isShader): |
| 103 | + (WebCore::WebGLRenderingContext::isTexture): |
| 104 | + (WebCore::WebGLRenderingContext::lineWidth): |
| 105 | + (WebCore::WebGLRenderingContext::linkProgram): |
| 106 | + (WebCore::WebGLRenderingContext::pixelStorei): |
| 107 | + (WebCore::WebGLRenderingContext::polygonOffset): |
| 108 | + (WebCore::WebGLRenderingContext::readPixels): |
| 109 | + (WebCore::WebGLRenderingContext::releaseShaderCompiler): |
| 110 | + (WebCore::WebGLRenderingContext::renderbufferStorage): |
| 111 | + (WebCore::WebGLRenderingContext::sampleCoverage): |
| 112 | + (WebCore::WebGLRenderingContext::scissor): |
| 113 | + (WebCore::WebGLRenderingContext::shaderSource): |
| 114 | + (WebCore::WebGLRenderingContext::stencilFunc): |
| 115 | + (WebCore::WebGLRenderingContext::stencilFuncSeparate): |
| 116 | + (WebCore::WebGLRenderingContext::stencilMask): |
| 117 | + (WebCore::WebGLRenderingContext::stencilMaskSeparate): |
| 118 | + (WebCore::WebGLRenderingContext::stencilOp): |
| 119 | + (WebCore::WebGLRenderingContext::stencilOpSeparate): |
| 120 | + (WebCore::WebGLRenderingContext::texImage2D): |
| 121 | + (WebCore::WebGLRenderingContext::texParameter): |
| 122 | + (WebCore::WebGLRenderingContext::texSubImage2D): |
| 123 | + (WebCore::WebGLRenderingContext::uniform1f): |
| 124 | + (WebCore::WebGLRenderingContext::uniform1fv): |
| 125 | + (WebCore::WebGLRenderingContext::uniform1i): |
| 126 | + (WebCore::WebGLRenderingContext::uniform1iv): |
| 127 | + (WebCore::WebGLRenderingContext::uniform2f): |
| 128 | + (WebCore::WebGLRenderingContext::uniform2fv): |
| 129 | + (WebCore::WebGLRenderingContext::uniform2i): |
| 130 | + (WebCore::WebGLRenderingContext::uniform2iv): |
| 131 | + (WebCore::WebGLRenderingContext::uniform3f): |
| 132 | + (WebCore::WebGLRenderingContext::uniform3fv): |
| 133 | + (WebCore::WebGLRenderingContext::uniform3i): |
| 134 | + (WebCore::WebGLRenderingContext::uniform3iv): |
| 135 | + (WebCore::WebGLRenderingContext::uniform4f): |
| 136 | + (WebCore::WebGLRenderingContext::uniform4fv): |
| 137 | + (WebCore::WebGLRenderingContext::uniform4i): |
| 138 | + (WebCore::WebGLRenderingContext::uniform4iv): |
| 139 | + (WebCore::WebGLRenderingContext::uniformMatrix2fv): |
| 140 | + (WebCore::WebGLRenderingContext::uniformMatrix3fv): |
| 141 | + (WebCore::WebGLRenderingContext::uniformMatrix4fv): |
| 142 | + (WebCore::WebGLRenderingContext::validateProgram): |
| 143 | + (WebCore::WebGLRenderingContext::vertexAttribPointer): |
| 144 | + (WebCore::WebGLRenderingContext::viewport): |
| 145 | + (WebCore::WebGLRenderingContext::forceLostContext): |
| 146 | + (WebCore::WebGLRenderingContext::forceRestoreContext): |
| 147 | + (WebCore::WebGLRenderingContext::platformLayer): |
| 148 | + (WebCore::WebGLRenderingContext::removeSharedObject): |
| 149 | + (WebCore::WebGLRenderingContext::addSharedObject): |
| 150 | + (WebCore::WebGLRenderingContext::removeContextObject): |
| 151 | + (WebCore::WebGLRenderingContext::addContextObject): |
| 152 | + (WebCore::WebGLRenderingContext::detachAndRemoveAllObjects): |
| 153 | + (WebCore::WebGLRenderingContext::stop): |
| 154 | + (WebCore::WebGLRenderingContext::vertexAttribfImpl): |
| 155 | + (WebCore::WebGLRenderingContext::vertexAttribfvImpl): |
| 156 | + (WebCore::WebGLRenderingContext::vertexAttribDivisor): |
| 157 | + * html/canvas/WebGLRenderingContext.h: |
| 158 | + |
1 | 159 | 2014-02-20 Dean Jackson < [email protected]>
|
2 | 160 |
|
3 | 161 | Add an unresolved WebGLPolicy and an API to resolve it
|
|
0 commit comments