mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
85e5dc87b9
--HG-- rename : content/canvas/src/CanvasGradient.h => dom/canvas/CanvasGradient.h rename : content/canvas/src/CanvasImageCache.cpp => dom/canvas/CanvasImageCache.cpp rename : content/canvas/src/CanvasImageCache.h => dom/canvas/CanvasImageCache.h rename : content/canvas/src/CanvasPattern.h => dom/canvas/CanvasPattern.h rename : content/canvas/src/CanvasRenderingContext2D.cpp => dom/canvas/CanvasRenderingContext2D.cpp rename : content/canvas/src/CanvasRenderingContext2D.h => dom/canvas/CanvasRenderingContext2D.h rename : content/canvas/src/CanvasUtils.cpp => dom/canvas/CanvasUtils.cpp rename : content/canvas/src/CanvasUtils.h => dom/canvas/CanvasUtils.h rename : content/canvas/src/DocumentRendererChild.cpp => dom/canvas/DocumentRendererChild.cpp rename : content/canvas/public/DocumentRendererChild.h => dom/canvas/DocumentRendererChild.h rename : content/canvas/src/DocumentRendererParent.cpp => dom/canvas/DocumentRendererParent.cpp rename : content/canvas/public/DocumentRendererParent.h => dom/canvas/DocumentRendererParent.h rename : content/canvas/src/ImageData.cpp => dom/canvas/ImageData.cpp rename : content/canvas/src/ImageData.h => dom/canvas/ImageData.h rename : content/canvas/src/ImageEncoder.cpp => dom/canvas/ImageEncoder.cpp rename : content/canvas/src/ImageEncoder.h => dom/canvas/ImageEncoder.h rename : content/canvas/src/Makefile.in => dom/canvas/Makefile.in rename : content/canvas/src/MurmurHash3.cpp => dom/canvas/MurmurHash3.cpp rename : content/canvas/src/MurmurHash3.h => dom/canvas/MurmurHash3.h rename : content/canvas/src/TextMetrics.h => dom/canvas/TextMetrics.h rename : content/canvas/src/WebGL1Context.cpp => dom/canvas/WebGL1Context.cpp rename : content/canvas/src/WebGL1Context.h => dom/canvas/WebGL1Context.h rename : content/canvas/src/WebGL2Context.cpp => dom/canvas/WebGL2Context.cpp rename : content/canvas/src/WebGL2Context.h => dom/canvas/WebGL2Context.h rename : content/canvas/src/WebGLActiveInfo.cpp => dom/canvas/WebGLActiveInfo.cpp rename : content/canvas/src/WebGLActiveInfo.h => dom/canvas/WebGLActiveInfo.h rename : content/canvas/src/WebGLBuffer.cpp => dom/canvas/WebGLBuffer.cpp rename : content/canvas/src/WebGLBuffer.h => dom/canvas/WebGLBuffer.h rename : content/canvas/src/WebGLContext.cpp => dom/canvas/WebGLContext.cpp rename : content/canvas/src/WebGLContext.h => dom/canvas/WebGLContext.h rename : content/canvas/src/WebGLContextAsyncQueries.cpp => dom/canvas/WebGLContextAsyncQueries.cpp rename : content/canvas/src/WebGLContextBuffers.cpp => dom/canvas/WebGLContextBuffers.cpp rename : content/canvas/src/WebGLContextDraw.cpp => dom/canvas/WebGLContextDraw.cpp rename : content/canvas/src/WebGLContextExtensions.cpp => dom/canvas/WebGLContextExtensions.cpp rename : content/canvas/src/WebGLContextFramebufferOperations.cpp => dom/canvas/WebGLContextFramebufferOperations.cpp rename : content/canvas/src/WebGLContextGL.cpp => dom/canvas/WebGLContextGL.cpp rename : content/canvas/src/WebGLContextLossTimer.cpp => dom/canvas/WebGLContextLossTimer.cpp rename : content/canvas/src/WebGLContextNotSupported.cpp => dom/canvas/WebGLContextNotSupported.cpp rename : content/canvas/src/WebGLContextReporter.cpp => dom/canvas/WebGLContextReporter.cpp rename : content/canvas/src/WebGLContextState.cpp => dom/canvas/WebGLContextState.cpp rename : content/canvas/src/WebGLContextUtils.cpp => dom/canvas/WebGLContextUtils.cpp rename : content/canvas/src/WebGLContextUtils.h => dom/canvas/WebGLContextUtils.h rename : content/canvas/src/WebGLContextValidate.cpp => dom/canvas/WebGLContextValidate.cpp rename : content/canvas/src/WebGLContextVertexArray.cpp => dom/canvas/WebGLContextVertexArray.cpp rename : content/canvas/src/WebGLContextVertices.cpp => dom/canvas/WebGLContextVertices.cpp rename : content/canvas/src/WebGLElementArrayCache.cpp => dom/canvas/WebGLElementArrayCache.cpp rename : content/canvas/src/WebGLElementArrayCache.h => dom/canvas/WebGLElementArrayCache.h rename : content/canvas/src/WebGLExtensionBase.cpp => dom/canvas/WebGLExtensionBase.cpp rename : content/canvas/src/WebGLExtensionBlendMinMax.cpp => dom/canvas/WebGLExtensionBlendMinMax.cpp rename : content/canvas/src/WebGLExtensionColorBufferFloat.cpp => dom/canvas/WebGLExtensionColorBufferFloat.cpp rename : content/canvas/src/WebGLExtensionColorBufferHalfFloat.cpp => dom/canvas/WebGLExtensionColorBufferHalfFloat.cpp rename : content/canvas/src/WebGLExtensionCompressedTextureATC.cpp => dom/canvas/WebGLExtensionCompressedTextureATC.cpp rename : content/canvas/src/WebGLExtensionCompressedTextureETC1.cpp => dom/canvas/WebGLExtensionCompressedTextureETC1.cpp rename : content/canvas/src/WebGLExtensionCompressedTexturePVRTC.cpp => dom/canvas/WebGLExtensionCompressedTexturePVRTC.cpp rename : content/canvas/src/WebGLExtensionCompressedTextureS3TC.cpp => dom/canvas/WebGLExtensionCompressedTextureS3TC.cpp rename : content/canvas/src/WebGLExtensionDebugRendererInfo.cpp => dom/canvas/WebGLExtensionDebugRendererInfo.cpp rename : content/canvas/src/WebGLExtensionDebugShaders.cpp => dom/canvas/WebGLExtensionDebugShaders.cpp rename : content/canvas/src/WebGLExtensionDepthTexture.cpp => dom/canvas/WebGLExtensionDepthTexture.cpp rename : content/canvas/src/WebGLExtensionDrawBuffers.cpp => dom/canvas/WebGLExtensionDrawBuffers.cpp rename : content/canvas/src/WebGLExtensionElementIndexUint.cpp => dom/canvas/WebGLExtensionElementIndexUint.cpp rename : content/canvas/src/WebGLExtensionFragDepth.cpp => dom/canvas/WebGLExtensionFragDepth.cpp rename : content/canvas/src/WebGLExtensionInstancedArrays.cpp => dom/canvas/WebGLExtensionInstancedArrays.cpp rename : content/canvas/src/WebGLExtensionLoseContext.cpp => dom/canvas/WebGLExtensionLoseContext.cpp rename : content/canvas/src/WebGLExtensionSRGB.cpp => dom/canvas/WebGLExtensionSRGB.cpp rename : content/canvas/src/WebGLExtensionStandardDerivatives.cpp => dom/canvas/WebGLExtensionStandardDerivatives.cpp rename : content/canvas/src/WebGLExtensionTextureFilterAnisotropic.cpp => dom/canvas/WebGLExtensionTextureFilterAnisotropic.cpp rename : content/canvas/src/WebGLExtensionTextureFloat.cpp => dom/canvas/WebGLExtensionTextureFloat.cpp rename : content/canvas/src/WebGLExtensionTextureFloatLinear.cpp => dom/canvas/WebGLExtensionTextureFloatLinear.cpp rename : content/canvas/src/WebGLExtensionTextureHalfFloat.cpp => dom/canvas/WebGLExtensionTextureHalfFloat.cpp rename : content/canvas/src/WebGLExtensionTextureHalfFloatLinear.cpp => dom/canvas/WebGLExtensionTextureHalfFloatLinear.cpp rename : content/canvas/src/WebGLExtensionVertexArray.cpp => dom/canvas/WebGLExtensionVertexArray.cpp rename : content/canvas/src/WebGLExtensions.h => dom/canvas/WebGLExtensions.h rename : content/canvas/src/WebGLFramebuffer.cpp => dom/canvas/WebGLFramebuffer.cpp rename : content/canvas/src/WebGLFramebuffer.h => dom/canvas/WebGLFramebuffer.h rename : content/canvas/src/WebGLFramebufferAttachable.cpp => dom/canvas/WebGLFramebufferAttachable.cpp rename : content/canvas/src/WebGLFramebufferAttachable.h => dom/canvas/WebGLFramebufferAttachable.h rename : content/canvas/src/WebGLMemoryTracker.h => dom/canvas/WebGLMemoryTracker.h rename : content/canvas/src/WebGLObjectModel.cpp => dom/canvas/WebGLObjectModel.cpp rename : content/canvas/src/WebGLObjectModel.h => dom/canvas/WebGLObjectModel.h rename : content/canvas/src/WebGLProgram.cpp => dom/canvas/WebGLProgram.cpp rename : content/canvas/src/WebGLProgram.h => dom/canvas/WebGLProgram.h rename : content/canvas/src/WebGLQuery.cpp => dom/canvas/WebGLQuery.cpp rename : content/canvas/src/WebGLQuery.h => dom/canvas/WebGLQuery.h rename : content/canvas/src/WebGLRenderbuffer.cpp => dom/canvas/WebGLRenderbuffer.cpp rename : content/canvas/src/WebGLRenderbuffer.h => dom/canvas/WebGLRenderbuffer.h rename : content/canvas/src/WebGLShader.cpp => dom/canvas/WebGLShader.cpp rename : content/canvas/src/WebGLShader.h => dom/canvas/WebGLShader.h rename : content/canvas/src/WebGLShaderPrecisionFormat.cpp => dom/canvas/WebGLShaderPrecisionFormat.cpp rename : content/canvas/src/WebGLShaderPrecisionFormat.h => dom/canvas/WebGLShaderPrecisionFormat.h rename : content/canvas/src/WebGLTexelConversions.cpp => dom/canvas/WebGLTexelConversions.cpp rename : content/canvas/src/WebGLTexelConversions.h => dom/canvas/WebGLTexelConversions.h rename : content/canvas/src/WebGLTexture.cpp => dom/canvas/WebGLTexture.cpp rename : content/canvas/src/WebGLTexture.h => dom/canvas/WebGLTexture.h rename : content/canvas/src/WebGLTypes.h => dom/canvas/WebGLTypes.h rename : content/canvas/src/WebGLUniformInfo.h => dom/canvas/WebGLUniformInfo.h rename : content/canvas/src/WebGLUniformLocation.cpp => dom/canvas/WebGLUniformLocation.cpp rename : content/canvas/src/WebGLUniformLocation.h => dom/canvas/WebGLUniformLocation.h rename : content/canvas/src/WebGLValidateStrings.h => dom/canvas/WebGLValidateStrings.h rename : content/canvas/src/WebGLVertexArray.cpp => dom/canvas/WebGLVertexArray.cpp rename : content/canvas/src/WebGLVertexArray.h => dom/canvas/WebGLVertexArray.h rename : content/canvas/src/WebGLVertexArrayFake.cpp => dom/canvas/WebGLVertexArrayFake.cpp rename : content/canvas/src/WebGLVertexArrayFake.h => dom/canvas/WebGLVertexArrayFake.h rename : content/canvas/src/WebGLVertexArrayGL.cpp => dom/canvas/WebGLVertexArrayGL.cpp rename : content/canvas/src/WebGLVertexArrayGL.h => dom/canvas/WebGLVertexArrayGL.h rename : content/canvas/src/WebGLVertexAttribData.h => dom/canvas/WebGLVertexAttribData.h rename : content/canvas/compiledtest/TestWebGLElementArrayCache.cpp => dom/canvas/compiledtest/TestWebGLElementArrayCache.cpp rename : content/canvas/compiledtest/moz.build => dom/canvas/compiledtest/moz.build rename : content/canvas/crashtests/0px-size-font-667225.html => dom/canvas/crashtests/0px-size-font-667225.html rename : content/canvas/crashtests/0px-size-font-shadow.html => dom/canvas/crashtests/0px-size-font-shadow.html rename : content/canvas/crashtests/360293-1.html => dom/canvas/crashtests/360293-1.html rename : content/canvas/crashtests/421715-1.html => dom/canvas/crashtests/421715-1.html rename : content/canvas/crashtests/553938-1.html => dom/canvas/crashtests/553938-1.html rename : content/canvas/crashtests/647480.html => dom/canvas/crashtests/647480.html rename : content/canvas/crashtests/727547.html => dom/canvas/crashtests/727547.html rename : content/canvas/crashtests/729116.html => dom/canvas/crashtests/729116.html rename : content/canvas/crashtests/743499-negative-size.html => dom/canvas/crashtests/743499-negative-size.html rename : content/canvas/crashtests/745699-1.html => dom/canvas/crashtests/745699-1.html rename : content/canvas/crashtests/745818-large-source.html => dom/canvas/crashtests/745818-large-source.html rename : content/canvas/crashtests/746813-1.html => dom/canvas/crashtests/746813-1.html rename : content/canvas/crashtests/767337-1.html => dom/canvas/crashtests/767337-1.html rename : content/canvas/crashtests/780392-1.html => dom/canvas/crashtests/780392-1.html rename : content/canvas/crashtests/789933-1.html => dom/canvas/crashtests/789933-1.html rename : content/canvas/crashtests/794463-1.html => dom/canvas/crashtests/794463-1.html rename : content/canvas/crashtests/802926-1.html => dom/canvas/crashtests/802926-1.html rename : content/canvas/crashtests/896047-1.html => dom/canvas/crashtests/896047-1.html rename : content/canvas/crashtests/896047-2.html => dom/canvas/crashtests/896047-2.html rename : content/canvas/crashtests/916128-1.html => dom/canvas/crashtests/916128-1.html rename : content/canvas/crashtests/934939-1.html => dom/canvas/crashtests/934939-1.html rename : content/canvas/crashtests/crashtests.list => dom/canvas/crashtests/crashtests.list rename : content/canvas/crashtests/texImage2D.html => dom/canvas/crashtests/texImage2D.html rename : content/canvas/moz.build => dom/canvas/moz.build rename : content/canvas/public/nsICanvasRenderingContextInternal.h => dom/canvas/nsICanvasRenderingContextInternal.h rename : content/canvas/test/android.json => dom/canvas/test/android.json rename : content/canvas/test/chrome/chrome.ini => dom/canvas/test/chrome/chrome.ini rename : content/canvas/test/chrome/nonchrome_webgl_debug_renderer_info.html => dom/canvas/test/chrome/nonchrome_webgl_debug_renderer_info.html rename : content/canvas/test/chrome/test_drawWindow_widget_layers.html => dom/canvas/test/chrome/test_drawWindow_widget_layers.html rename : content/canvas/test/chrome/test_webgl_debug_renderer_info.html => dom/canvas/test/chrome/test_webgl_debug_renderer_info.html rename : content/canvas/test/crossorigin/image-allow-credentials.png => dom/canvas/test/crossorigin/image-allow-credentials.png rename : content/canvas/test/crossorigin/image-allow-credentials.png^headers^ => dom/canvas/test/crossorigin/image-allow-credentials.png^headers^ rename : content/canvas/test/crossorigin/image-allow-star.png => dom/canvas/test/crossorigin/image-allow-star.png rename : content/canvas/test/crossorigin/image-allow-star.png^headers^ => dom/canvas/test/crossorigin/image-allow-star.png^headers^ rename : content/canvas/test/crossorigin/image.png => dom/canvas/test/crossorigin/image.png rename : content/canvas/test/crossorigin/mochitest.ini => dom/canvas/test/crossorigin/mochitest.ini rename : content/canvas/test/crossorigin/test_canvas2d_crossorigin.html => dom/canvas/test/crossorigin/test_canvas2d_crossorigin.html rename : content/canvas/test/crossorigin/test_video_crossorigin.html => dom/canvas/test/crossorigin/test_video_crossorigin.html rename : content/canvas/test/crossorigin/test_webgl_crossorigin_textures.html => dom/canvas/test/crossorigin/test_webgl_crossorigin_textures.html rename : content/canvas/test/crossorigin/video.sjs => dom/canvas/test/crossorigin/video.sjs rename : content/canvas/test/file_drawImage_document_domain.html => dom/canvas/test/file_drawImage_document_domain.html rename : content/canvas/test/file_drawWindow_common.js => dom/canvas/test/file_drawWindow_common.js rename : content/canvas/test/file_drawWindow_source.html => dom/canvas/test/file_drawWindow_source.html rename : content/canvas/test/image_anim-gr.gif => dom/canvas/test/image_anim-gr.gif rename : content/canvas/test/image_anim-gr.png => dom/canvas/test/image_anim-gr.png rename : content/canvas/test/image_anim-poster-gr.png => dom/canvas/test/image_anim-poster-gr.png rename : content/canvas/test/image_broken.png => dom/canvas/test/image_broken.png rename : content/canvas/test/image_ggrr-256x256.png => dom/canvas/test/image_ggrr-256x256.png rename : content/canvas/test/image_green-16x16.png => dom/canvas/test/image_green-16x16.png rename : content/canvas/test/image_green-1x1.png => dom/canvas/test/image_green-1x1.png rename : content/canvas/test/image_green-redirect => dom/canvas/test/image_green-redirect rename : content/canvas/test/image_green-redirect^headers^ => dom/canvas/test/image_green-redirect^headers^ rename : content/canvas/test/image_green.png => dom/canvas/test/image_green.png rename : content/canvas/test/image_red-16x16.png => dom/canvas/test/image_red-16x16.png rename : content/canvas/test/image_red.png => dom/canvas/test/image_red.png rename : content/canvas/test/image_redtransparent.png => dom/canvas/test/image_redtransparent.png rename : content/canvas/test/image_rgrg-256x256.png => dom/canvas/test/image_rgrg-256x256.png rename : content/canvas/test/image_rrgg-256x256.png => dom/canvas/test/image_rrgg-256x256.png rename : content/canvas/test/image_transparent.png => dom/canvas/test/image_transparent.png rename : content/canvas/test/image_transparent50.png => dom/canvas/test/image_transparent50.png rename : content/canvas/test/image_yellow.png => dom/canvas/test/image_yellow.png rename : content/canvas/test/image_yellow75.png => dom/canvas/test/image_yellow75.png rename : content/canvas/test/mochitest.ini => dom/canvas/test/mochitest.ini rename : content/canvas/test/moz.build => dom/canvas/test/moz.build rename : content/canvas/test/reftest/black.html => dom/canvas/test/reftest/black.html rename : content/canvas/test/reftest/clip-multiple-paths-badref.html => dom/canvas/test/reftest/clip-multiple-paths-badref.html rename : content/canvas/test/reftest/clip-multiple-paths.html => dom/canvas/test/reftest/clip-multiple-paths.html rename : content/canvas/test/reftest/colors-half-alpha.png => dom/canvas/test/reftest/colors-half-alpha.png rename : content/canvas/test/reftest/colors.png => dom/canvas/test/reftest/colors.png rename : content/canvas/test/reftest/drawCustomFocusRing-ref.html => dom/canvas/test/reftest/drawCustomFocusRing-ref.html rename : content/canvas/test/reftest/drawCustomFocusRing.html => dom/canvas/test/reftest/drawCustomFocusRing.html rename : content/canvas/test/reftest/drawFocusIfNeeded-ref.html => dom/canvas/test/reftest/drawFocusIfNeeded-ref.html rename : content/canvas/test/reftest/drawFocusIfNeeded.html => dom/canvas/test/reftest/drawFocusIfNeeded.html rename : content/canvas/test/reftest/green.png => dom/canvas/test/reftest/green.png rename : content/canvas/test/reftest/half-colors-half-alpha.png => dom/canvas/test/reftest/half-colors-half-alpha.png rename : content/canvas/test/reftest/half-colors.png => dom/canvas/test/reftest/half-colors.png rename : content/canvas/test/reftest/reftest.list => dom/canvas/test/reftest/reftest.list rename : content/canvas/test/reftest/stroketext-shadow-ref.html => dom/canvas/test/reftest/stroketext-shadow-ref.html rename : content/canvas/test/reftest/stroketext-shadow.html => dom/canvas/test/reftest/stroketext-shadow.html rename : content/canvas/test/reftest/webgl-clear-test.html => dom/canvas/test/reftest/webgl-clear-test.html rename : content/canvas/test/reftest/webgl-color-alpha-test.html => dom/canvas/test/reftest/webgl-color-alpha-test.html rename : content/canvas/test/reftest/webgl-color-test.html => dom/canvas/test/reftest/webgl-color-test.html rename : content/canvas/test/reftest/webgl-disable-test.html => dom/canvas/test/reftest/webgl-disable-test.html rename : content/canvas/test/reftest/webgl-hanging-fb-test.html => dom/canvas/test/reftest/webgl-hanging-fb-test.html rename : content/canvas/test/reftest/webgl-hanging-scissor-test.html => dom/canvas/test/reftest/webgl-hanging-scissor-test.html rename : content/canvas/test/reftest/webgl-orientation-test.html => dom/canvas/test/reftest/webgl-orientation-test.html rename : content/canvas/test/reftest/webgl-resize-test.html => dom/canvas/test/reftest/webgl-resize-test.html rename : content/canvas/test/reftest/webgl-utils.js => dom/canvas/test/reftest/webgl-utils.js rename : content/canvas/test/reftest/white-top-left.png => dom/canvas/test/reftest/white-top-left.png rename : content/canvas/test/reftest/white.png => dom/canvas/test/reftest/white.png rename : content/canvas/test/reftest/wrapper.html => dom/canvas/test/reftest/wrapper.html rename : content/canvas/test/test_2d.clearRect.image.offscreen.html => dom/canvas/test/test_2d.clearRect.image.offscreen.html rename : content/canvas/test/test_2d.clip.winding.html => dom/canvas/test/test_2d.clip.winding.html rename : content/canvas/test/test_2d.composite.canvas.color-burn.html => dom/canvas/test/test_2d.composite.canvas.color-burn.html rename : content/canvas/test/test_2d.composite.canvas.color-dodge.html => dom/canvas/test/test_2d.composite.canvas.color-dodge.html rename : content/canvas/test/test_2d.composite.canvas.color.html => dom/canvas/test/test_2d.composite.canvas.color.html rename : content/canvas/test/test_2d.composite.canvas.darken.html => dom/canvas/test/test_2d.composite.canvas.darken.html rename : content/canvas/test/test_2d.composite.canvas.destination-atop.html => dom/canvas/test/test_2d.composite.canvas.destination-atop.html rename : content/canvas/test/test_2d.composite.canvas.destination-in.html => dom/canvas/test/test_2d.composite.canvas.destination-in.html rename : content/canvas/test/test_2d.composite.canvas.difference.html => dom/canvas/test/test_2d.composite.canvas.difference.html rename : content/canvas/test/test_2d.composite.canvas.exclusion.html => dom/canvas/test/test_2d.composite.canvas.exclusion.html rename : content/canvas/test/test_2d.composite.canvas.hard-light.html => dom/canvas/test/test_2d.composite.canvas.hard-light.html rename : content/canvas/test/test_2d.composite.canvas.hue.html => dom/canvas/test/test_2d.composite.canvas.hue.html rename : content/canvas/test/test_2d.composite.canvas.lighten.html => dom/canvas/test/test_2d.composite.canvas.lighten.html rename : content/canvas/test/test_2d.composite.canvas.lighter.html => dom/canvas/test/test_2d.composite.canvas.lighter.html rename : content/canvas/test/test_2d.composite.canvas.luminosity.html => dom/canvas/test/test_2d.composite.canvas.luminosity.html rename : content/canvas/test/test_2d.composite.canvas.multiply.html => dom/canvas/test/test_2d.composite.canvas.multiply.html rename : content/canvas/test/test_2d.composite.canvas.overlay.html => dom/canvas/test/test_2d.composite.canvas.overlay.html rename : content/canvas/test/test_2d.composite.canvas.saturation.html => dom/canvas/test/test_2d.composite.canvas.saturation.html rename : content/canvas/test/test_2d.composite.canvas.screen.html => dom/canvas/test/test_2d.composite.canvas.screen.html rename : content/canvas/test/test_2d.composite.canvas.soft-light.html => dom/canvas/test/test_2d.composite.canvas.soft-light.html rename : content/canvas/test/test_2d.composite.canvas.source-in.html => dom/canvas/test/test_2d.composite.canvas.source-in.html rename : content/canvas/test/test_2d.composite.canvas.source-out.html => dom/canvas/test/test_2d.composite.canvas.source-out.html rename : content/canvas/test/test_2d.composite.canvas.xor.html => dom/canvas/test/test_2d.composite.canvas.xor.html rename : content/canvas/test/test_2d.composite.clip.lighter.html => dom/canvas/test/test_2d.composite.clip.lighter.html rename : content/canvas/test/test_2d.composite.clip.xor.html => dom/canvas/test/test_2d.composite.clip.xor.html rename : content/canvas/test/test_2d.composite.image.destination-atop.html => dom/canvas/test/test_2d.composite.image.destination-atop.html rename : content/canvas/test/test_2d.composite.image.destination-in.html => dom/canvas/test/test_2d.composite.image.destination-in.html rename : content/canvas/test/test_2d.composite.image.lighter.html => dom/canvas/test/test_2d.composite.image.lighter.html rename : content/canvas/test/test_2d.composite.image.source-in.html => dom/canvas/test/test_2d.composite.image.source-in.html rename : content/canvas/test/test_2d.composite.image.source-out.html => dom/canvas/test/test_2d.composite.image.source-out.html rename : content/canvas/test/test_2d.composite.image.xor.html => dom/canvas/test/test_2d.composite.image.xor.html rename : content/canvas/test/test_2d.composite.solid.color-burn.html => dom/canvas/test/test_2d.composite.solid.color-burn.html rename : content/canvas/test/test_2d.composite.solid.color-dodge.html => dom/canvas/test/test_2d.composite.solid.color-dodge.html rename : content/canvas/test/test_2d.composite.solid.color.html => dom/canvas/test/test_2d.composite.solid.color.html rename : content/canvas/test/test_2d.composite.solid.darken.html => dom/canvas/test/test_2d.composite.solid.darken.html rename : content/canvas/test/test_2d.composite.solid.difference.html => dom/canvas/test/test_2d.composite.solid.difference.html rename : content/canvas/test/test_2d.composite.solid.exclusion.html => dom/canvas/test/test_2d.composite.solid.exclusion.html rename : content/canvas/test/test_2d.composite.solid.hard-light.html => dom/canvas/test/test_2d.composite.solid.hard-light.html rename : content/canvas/test/test_2d.composite.solid.hue.html => dom/canvas/test/test_2d.composite.solid.hue.html rename : content/canvas/test/test_2d.composite.solid.lighten.html => dom/canvas/test/test_2d.composite.solid.lighten.html rename : content/canvas/test/test_2d.composite.solid.lighter.html => dom/canvas/test/test_2d.composite.solid.lighter.html rename : content/canvas/test/test_2d.composite.solid.luminosity.html => dom/canvas/test/test_2d.composite.solid.luminosity.html rename : content/canvas/test/test_2d.composite.solid.multiply.html => dom/canvas/test/test_2d.composite.solid.multiply.html rename : content/canvas/test/test_2d.composite.solid.overlay.html => dom/canvas/test/test_2d.composite.solid.overlay.html rename : content/canvas/test/test_2d.composite.solid.saturation.html => dom/canvas/test/test_2d.composite.solid.saturation.html rename : content/canvas/test/test_2d.composite.solid.screen.html => dom/canvas/test/test_2d.composite.solid.screen.html rename : content/canvas/test/test_2d.composite.solid.soft-light.html => dom/canvas/test/test_2d.composite.solid.soft-light.html rename : content/canvas/test/test_2d.composite.solid.xor.html => dom/canvas/test/test_2d.composite.solid.xor.html rename : content/canvas/test/test_2d.composite.transparent.lighter.html => dom/canvas/test/test_2d.composite.transparent.lighter.html rename : content/canvas/test/test_2d.composite.transparent.xor.html => dom/canvas/test/test_2d.composite.transparent.xor.html rename : content/canvas/test/test_2d.composite.uncovered.fill.color-burn.html => dom/canvas/test/test_2d.composite.uncovered.fill.color-burn.html rename : content/canvas/test/test_2d.composite.uncovered.fill.color-dodge.html => dom/canvas/test/test_2d.composite.uncovered.fill.color-dodge.html rename : content/canvas/test/test_2d.composite.uncovered.fill.color.html => dom/canvas/test/test_2d.composite.uncovered.fill.color.html rename : content/canvas/test/test_2d.composite.uncovered.fill.darken.html => dom/canvas/test/test_2d.composite.uncovered.fill.darken.html rename : content/canvas/test/test_2d.composite.uncovered.fill.destination-atop.html => dom/canvas/test/test_2d.composite.uncovered.fill.destination-atop.html rename : content/canvas/test/test_2d.composite.uncovered.fill.destination-in.html => dom/canvas/test/test_2d.composite.uncovered.fill.destination-in.html rename : content/canvas/test/test_2d.composite.uncovered.fill.difference.html => dom/canvas/test/test_2d.composite.uncovered.fill.difference.html rename : content/canvas/test/test_2d.composite.uncovered.fill.exclusion.html => dom/canvas/test/test_2d.composite.uncovered.fill.exclusion.html rename : content/canvas/test/test_2d.composite.uncovered.fill.hard-light.html => dom/canvas/test/test_2d.composite.uncovered.fill.hard-light.html rename : content/canvas/test/test_2d.composite.uncovered.fill.hue.html => dom/canvas/test/test_2d.composite.uncovered.fill.hue.html rename : content/canvas/test/test_2d.composite.uncovered.fill.lighten.html => dom/canvas/test/test_2d.composite.uncovered.fill.lighten.html rename : content/canvas/test/test_2d.composite.uncovered.fill.luminosity.html => dom/canvas/test/test_2d.composite.uncovered.fill.luminosity.html rename : content/canvas/test/test_2d.composite.uncovered.fill.multiply.html => dom/canvas/test/test_2d.composite.uncovered.fill.multiply.html rename : content/canvas/test/test_2d.composite.uncovered.fill.overlay.html => dom/canvas/test/test_2d.composite.uncovered.fill.overlay.html rename : content/canvas/test/test_2d.composite.uncovered.fill.saturation.html => dom/canvas/test/test_2d.composite.uncovered.fill.saturation.html rename : content/canvas/test/test_2d.composite.uncovered.fill.screen.html => dom/canvas/test/test_2d.composite.uncovered.fill.screen.html rename : content/canvas/test/test_2d.composite.uncovered.fill.soft-light.html => dom/canvas/test/test_2d.composite.uncovered.fill.soft-light.html rename : content/canvas/test/test_2d.composite.uncovered.fill.source-in.html => dom/canvas/test/test_2d.composite.uncovered.fill.source-in.html rename : content/canvas/test/test_2d.composite.uncovered.fill.source-out.html => dom/canvas/test/test_2d.composite.uncovered.fill.source-out.html rename : content/canvas/test/test_2d.composite.uncovered.image.destination-atop.html => dom/canvas/test/test_2d.composite.uncovered.image.destination-atop.html rename : content/canvas/test/test_2d.composite.uncovered.image.destination-in.html => dom/canvas/test/test_2d.composite.uncovered.image.destination-in.html rename : content/canvas/test/test_2d.composite.uncovered.image.source-in.html => dom/canvas/test/test_2d.composite.uncovered.image.source-in.html rename : content/canvas/test/test_2d.composite.uncovered.image.source-out.html => dom/canvas/test/test_2d.composite.uncovered.image.source-out.html rename : content/canvas/test/test_2d.composite.uncovered.pattern.destination-atop.html => dom/canvas/test/test_2d.composite.uncovered.pattern.destination-atop.html rename : content/canvas/test/test_2d.composite.uncovered.pattern.destination-in.html => dom/canvas/test/test_2d.composite.uncovered.pattern.destination-in.html rename : content/canvas/test/test_2d.composite.uncovered.pattern.source-in.html => dom/canvas/test/test_2d.composite.uncovered.pattern.source-in.html rename : content/canvas/test/test_2d.composite.uncovered.pattern.source-out.html => dom/canvas/test/test_2d.composite.uncovered.pattern.source-out.html rename : content/canvas/test/test_2d.drawImage.zerocanvas.html => dom/canvas/test/test_2d.drawImage.zerocanvas.html rename : content/canvas/test/test_2d.fill.winding.html => dom/canvas/test/test_2d.fill.winding.html rename : content/canvas/test/test_2d.fillText.gradient.html => dom/canvas/test/test_2d.fillText.gradient.html rename : content/canvas/test/test_2d.gradient.radial.cone.behind.html => dom/canvas/test/test_2d.gradient.radial.cone.behind.html rename : content/canvas/test/test_2d.gradient.radial.cone.beside.html => dom/canvas/test/test_2d.gradient.radial.cone.beside.html rename : content/canvas/test/test_2d.gradient.radial.cone.front.html => dom/canvas/test/test_2d.gradient.radial.cone.front.html rename : content/canvas/test/test_2d.gradient.radial.cone.shape2.html => dom/canvas/test/test_2d.gradient.radial.cone.shape2.html rename : content/canvas/test/test_2d.gradient.radial.cone.top.html => dom/canvas/test/test_2d.gradient.radial.cone.top.html rename : content/canvas/test/test_2d.gradient.radial.equal.html => dom/canvas/test/test_2d.gradient.radial.equal.html rename : content/canvas/test/test_2d.gradient.radial.inside2.html => dom/canvas/test/test_2d.gradient.radial.inside2.html rename : content/canvas/test/test_2d.gradient.radial.inside3.html => dom/canvas/test/test_2d.gradient.radial.inside3.html rename : content/canvas/test/test_2d.gradient.radial.outside1.html => dom/canvas/test/test_2d.gradient.radial.outside1.html rename : content/canvas/test/test_2d.gradient.radial.outside2.html => dom/canvas/test/test_2d.gradient.radial.outside2.html rename : content/canvas/test/test_2d.gradient.radial.outside3.html => dom/canvas/test/test_2d.gradient.radial.outside3.html rename : content/canvas/test/test_2d.gradient.radial.touch1.html => dom/canvas/test/test_2d.gradient.radial.touch1.html rename : content/canvas/test/test_2d.gradient.radial.touch2.html => dom/canvas/test/test_2d.gradient.radial.touch2.html rename : content/canvas/test/test_2d.gradient.radial.touch3.html => dom/canvas/test/test_2d.gradient.radial.touch3.html rename : content/canvas/test/test_2d.isPointInPath.winding.html => dom/canvas/test/test_2d.isPointInPath.winding.html rename : content/canvas/test/test_2d.line.cap.closed.html => dom/canvas/test/test_2d.line.cap.closed.html rename : content/canvas/test/test_2d.line.join.parallel.html => dom/canvas/test/test_2d.line.join.parallel.html rename : content/canvas/test/test_2d.path.arc.shape.3.html => dom/canvas/test/test_2d.path.arc.shape.3.html rename : content/canvas/test/test_2d.path.rect.selfintersect.html => dom/canvas/test/test_2d.path.rect.selfintersect.html rename : content/canvas/test/test_2d.path.rect.zero.6.html => dom/canvas/test/test_2d.path.rect.zero.6.html rename : content/canvas/test/test_2d.strokeRect.zero.5.html => dom/canvas/test/test_2d.strokeRect.zero.5.html rename : content/canvas/test/test_2d_composite_canvaspattern_setTransform.html => dom/canvas/test/test_2d_composite_canvaspattern_setTransform.html rename : content/canvas/test/test_ImageData_ctor.html => dom/canvas/test/test_ImageData_ctor.html rename : content/canvas/test/test_bug613794.html => dom/canvas/test/test_bug613794.html rename : content/canvas/test/test_bug753758.html => dom/canvas/test/test_bug753758.html rename : content/canvas/test/test_bug764125.html => dom/canvas/test/test_bug764125.html rename : content/canvas/test/test_bug856472.html => dom/canvas/test/test_bug856472.html rename : content/canvas/test/test_bug866575.html => dom/canvas/test/test_bug866575.html rename : content/canvas/test/test_bug902651.html => dom/canvas/test/test_bug902651.html rename : content/canvas/test/test_canvas.html => dom/canvas/test/test_canvas.html rename : content/canvas/test/test_canvas_focusring.html => dom/canvas/test/test_canvas_focusring.html rename : content/canvas/test/test_canvas_font_setter.html => dom/canvas/test/test_canvas_font_setter.html rename : content/canvas/test/test_canvas_path.html => dom/canvas/test/test_canvas_path.html rename : content/canvas/test/test_canvas_strokeStyle_getter.html => dom/canvas/test/test_canvas_strokeStyle_getter.html rename : content/canvas/test/test_createPattern_broken.html => dom/canvas/test/test_createPattern_broken.html rename : content/canvas/test/test_drawImageIncomplete.html => dom/canvas/test/test_drawImageIncomplete.html rename : content/canvas/test/test_drawImage_document_domain.html => dom/canvas/test/test_drawImage_document_domain.html rename : content/canvas/test/test_drawImage_edge_cases.html => dom/canvas/test/test_drawImage_edge_cases.html rename : content/canvas/test/test_drawWindow.html => dom/canvas/test/test_drawWindow.html rename : content/canvas/test/test_hitregion_canvas.html => dom/canvas/test/test_hitregion_canvas.html rename : content/canvas/test/test_hitregion_event.html => dom/canvas/test/test_hitregion_event.html rename : content/canvas/test/test_isPointInStroke.html => dom/canvas/test/test_isPointInStroke.html rename : content/canvas/test/test_mozDashOffset.html => dom/canvas/test/test_mozDashOffset.html rename : content/canvas/test/test_mozGetAsFile.html => dom/canvas/test/test_mozGetAsFile.html rename : content/canvas/test/test_setlinedash.html => dom/canvas/test/test_setlinedash.html rename : content/canvas/test/test_strokeText_throw.html => dom/canvas/test/test_strokeText_throw.html rename : content/canvas/test/test_toBlob.html => dom/canvas/test/test_toBlob.html rename : content/canvas/test/test_toDataURL_alpha.html => dom/canvas/test/test_toDataURL_alpha.html rename : content/canvas/test/test_toDataURL_lowercase_ascii.html => dom/canvas/test/test_toDataURL_lowercase_ascii.html rename : content/canvas/test/test_toDataURL_parameters.html => dom/canvas/test/test_toDataURL_parameters.html rename : content/canvas/test/test_windingRuleUndefined.html => dom/canvas/test/test_windingRuleUndefined.html rename : content/canvas/test/webgl-conformance/00_test_list.txt => dom/canvas/test/webgl-conformance/00_test_list.txt rename : content/canvas/test/webgl-conformance/README.mozilla => dom/canvas/test/webgl-conformance/README.mozilla rename : content/canvas/test/webgl-conformance/README.txt => dom/canvas/test/webgl-conformance/README.txt rename : content/canvas/test/webgl-conformance/conformance/00_readme.txt => dom/canvas/test/webgl-conformance/conformance/00_readme.txt rename : content/canvas/test/webgl-conformance/conformance/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/LICENSE_CHROMIUM => dom/canvas/test/webgl-conformance/conformance/LICENSE_CHROMIUM rename : content/canvas/test/webgl-conformance/conformance/attribs/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/attribs/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/attribs/gl-enable-vertex-attrib.html => dom/canvas/test/webgl-conformance/conformance/attribs/gl-enable-vertex-attrib.html rename : content/canvas/test/webgl-conformance/conformance/attribs/gl-vertex-attrib-zero-issues.html => dom/canvas/test/webgl-conformance/conformance/attribs/gl-vertex-attrib-zero-issues.html rename : content/canvas/test/webgl-conformance/conformance/attribs/gl-vertex-attrib.html => dom/canvas/test/webgl-conformance/conformance/attribs/gl-vertex-attrib.html rename : content/canvas/test/webgl-conformance/conformance/attribs/gl-vertexattribpointer-offsets.html => dom/canvas/test/webgl-conformance/conformance/attribs/gl-vertexattribpointer-offsets.html rename : content/canvas/test/webgl-conformance/conformance/attribs/gl-vertexattribpointer.html => dom/canvas/test/webgl-conformance/conformance/attribs/gl-vertexattribpointer.html rename : content/canvas/test/webgl-conformance/conformance/buffers/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/buffers/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/buffers/buffer-bind-test.html => dom/canvas/test/webgl-conformance/conformance/buffers/buffer-bind-test.html rename : content/canvas/test/webgl-conformance/conformance/buffers/buffer-data-array-buffer.html => dom/canvas/test/webgl-conformance/conformance/buffers/buffer-data-array-buffer.html rename : content/canvas/test/webgl-conformance/conformance/buffers/index-validation-copies-indices.html => dom/canvas/test/webgl-conformance/conformance/buffers/index-validation-copies-indices.html rename : content/canvas/test/webgl-conformance/conformance/buffers/index-validation-crash-with-buffer-sub-data.html => dom/canvas/test/webgl-conformance/conformance/buffers/index-validation-crash-with-buffer-sub-data.html rename : content/canvas/test/webgl-conformance/conformance/buffers/index-validation-verifies-too-many-indices.html => dom/canvas/test/webgl-conformance/conformance/buffers/index-validation-verifies-too-many-indices.html rename : content/canvas/test/webgl-conformance/conformance/buffers/index-validation-with-resized-buffer.html => dom/canvas/test/webgl-conformance/conformance/buffers/index-validation-with-resized-buffer.html rename : content/canvas/test/webgl-conformance/conformance/buffers/index-validation.html => dom/canvas/test/webgl-conformance/conformance/buffers/index-validation.html rename : content/canvas/test/webgl-conformance/conformance/canvas/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/canvas/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/canvas/buffer-offscreen-test.html => dom/canvas/test/webgl-conformance/conformance/canvas/buffer-offscreen-test.html rename : content/canvas/test/webgl-conformance/conformance/canvas/buffer-preserve-test.html => dom/canvas/test/webgl-conformance/conformance/canvas/buffer-preserve-test.html rename : content/canvas/test/webgl-conformance/conformance/canvas/canvas-test.html => dom/canvas/test/webgl-conformance/conformance/canvas/canvas-test.html rename : content/canvas/test/webgl-conformance/conformance/canvas/canvas-zero-size.html => dom/canvas/test/webgl-conformance/conformance/canvas/canvas-zero-size.html rename : content/canvas/test/webgl-conformance/conformance/canvas/drawingbuffer-static-canvas-test.html => dom/canvas/test/webgl-conformance/conformance/canvas/drawingbuffer-static-canvas-test.html rename : content/canvas/test/webgl-conformance/conformance/canvas/drawingbuffer-test.html => dom/canvas/test/webgl-conformance/conformance/canvas/drawingbuffer-test.html rename : content/canvas/test/webgl-conformance/conformance/canvas/viewport-unchanged-upon-resize.html => dom/canvas/test/webgl-conformance/conformance/canvas/viewport-unchanged-upon-resize.html rename : content/canvas/test/webgl-conformance/conformance/context/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/context/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/context/constants.html => dom/canvas/test/webgl-conformance/conformance/context/constants.html rename : content/canvas/test/webgl-conformance/conformance/context/context-attribute-preserve-drawing-buffer.html => dom/canvas/test/webgl-conformance/conformance/context/context-attribute-preserve-drawing-buffer.html rename : content/canvas/test/webgl-conformance/conformance/context/context-attributes-alpha-depth-stencil-antialias.html => dom/canvas/test/webgl-conformance/conformance/context/context-attributes-alpha-depth-stencil-antialias.html rename : content/canvas/test/webgl-conformance/conformance/context/context-lost-restored.html => dom/canvas/test/webgl-conformance/conformance/context/context-lost-restored.html rename : content/canvas/test/webgl-conformance/conformance/context/context-lost.html => dom/canvas/test/webgl-conformance/conformance/context/context-lost.html rename : content/canvas/test/webgl-conformance/conformance/context/context-type-test.html => dom/canvas/test/webgl-conformance/conformance/context/context-type-test.html rename : content/canvas/test/webgl-conformance/conformance/context/incorrect-context-object-behaviour.html => dom/canvas/test/webgl-conformance/conformance/context/incorrect-context-object-behaviour.html rename : content/canvas/test/webgl-conformance/conformance/context/methods.html => dom/canvas/test/webgl-conformance/conformance/context/methods.html rename : content/canvas/test/webgl-conformance/conformance/context/premultiplyalpha-test.html => dom/canvas/test/webgl-conformance/conformance/context/premultiplyalpha-test.html rename : content/canvas/test/webgl-conformance/conformance/context/resource-sharing-test.html => dom/canvas/test/webgl-conformance/conformance/context/resource-sharing-test.html rename : content/canvas/test/webgl-conformance/conformance/extensions/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/extensions/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/extensions/ext-sRGB.html => dom/canvas/test/webgl-conformance/conformance/extensions/ext-sRGB.html rename : content/canvas/test/webgl-conformance/conformance/extensions/ext-texture-filter-anisotropic.html => dom/canvas/test/webgl-conformance/conformance/extensions/ext-texture-filter-anisotropic.html rename : content/canvas/test/webgl-conformance/conformance/extensions/oes-standard-derivatives.html => dom/canvas/test/webgl-conformance/conformance/extensions/oes-standard-derivatives.html rename : content/canvas/test/webgl-conformance/conformance/extensions/oes-texture-float.html => dom/canvas/test/webgl-conformance/conformance/extensions/oes-texture-float.html rename : content/canvas/test/webgl-conformance/conformance/extensions/oes-vertex-array-object.html => dom/canvas/test/webgl-conformance/conformance/extensions/oes-vertex-array-object.html rename : content/canvas/test/webgl-conformance/conformance/extensions/webgl-compressed-texture-etc1.html => dom/canvas/test/webgl-conformance/conformance/extensions/webgl-compressed-texture-etc1.html rename : content/canvas/test/webgl-conformance/conformance/extensions/webgl-compressed-texture-s3tc.html => dom/canvas/test/webgl-conformance/conformance/extensions/webgl-compressed-texture-s3tc.html rename : content/canvas/test/webgl-conformance/conformance/extensions/webgl-debug-renderer-info.html => dom/canvas/test/webgl-conformance/conformance/extensions/webgl-debug-renderer-info.html rename : content/canvas/test/webgl-conformance/conformance/extensions/webgl-debug-shaders.html => dom/canvas/test/webgl-conformance/conformance/extensions/webgl-debug-shaders.html rename : content/canvas/test/webgl-conformance/conformance/extensions/webgl-depth-texture.html => dom/canvas/test/webgl-conformance/conformance/extensions/webgl-depth-texture.html rename : content/canvas/test/webgl-conformance/conformance/glsl/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/functions/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-abs.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-abs.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-acos.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-acos.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-asin.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-asin.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-atan-xy.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-atan-xy.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-atan.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-atan.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-ceil.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-ceil.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-clamp-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-clamp-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-clamp-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-clamp-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-cos.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-cos.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-cross.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-cross.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-distance.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-distance.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-dot.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-dot.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-faceforward.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-faceforward.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-floor.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-floor.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-fract.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-fract.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-length.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-length.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-lessThan.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-lessThan.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-max-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-max-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-max-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-max-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-min-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-min-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-min-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-min-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mix-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mix-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mix-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mix-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mod-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mod-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mod-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-mod-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-normalize.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-normalize.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-reflect.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-reflect.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-refract.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-refract.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-sign.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-sign.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-sin.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-sin.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-smoothstep-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-smoothstep-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-smoothstep-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-smoothstep-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-step-float.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-step-float.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-step-gentype.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function-step-gentype.html rename : content/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function.html => dom/canvas/test/webgl-conformance/conformance/glsl/functions/glsl-function.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_mat2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_mat2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_mat3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_mat3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_mat4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_mat4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_int_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/add_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/add_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_int_to_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_int_to_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_ivec2_to_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_ivec2_to_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_ivec3_to_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_ivec3_to_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_ivec4_to_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/assign_ivec4_to_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/construct_struct.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/construct_struct.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_mat2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_mat2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_mat3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_mat3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_mat4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_mat4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_int_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/divide_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/equal_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/function_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/function_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/function_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/function_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/function_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/function_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/function_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/function_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/greater_than.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/greater_than.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/greater_than_equal.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/greater_than_equal.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/less_than.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/less_than.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/less_than_equal.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/less_than_equal.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_mat2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_mat2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_mat3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_mat3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_mat4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_mat4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_int_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/multiply_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/not_equal_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_mat2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_mat2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_mat3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_mat3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_mat4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_mat4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_int_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/subtract_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_int_float.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_int_float.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_ivec2_vec2.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_ivec2_vec2.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_ivec3_vec3.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_ivec3_vec3.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_ivec4_vec4.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/implicit/ternary_ivec4_vec4.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/matrices/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/matrices/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/matrices/glsl-mat4-to-mat3.html => dom/canvas/test/webgl-conformance/conformance/glsl/matrices/glsl-mat4-to-mat3.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/misc/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/attrib-location-length-limits.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/attrib-location-length-limits.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/embedded-struct-definitions-forbidden.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/embedded-struct-definitions-forbidden.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-2types-of-textures-on-same-unit.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-2types-of-textures-on-same-unit.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-function-nodes.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-function-nodes.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-long-variable-names.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-long-variable-names.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-vertex-branch.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/glsl-vertex-branch.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/include.vs => dom/canvas/test/webgl-conformance/conformance/glsl/misc/include.vs rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/non-ascii-comments.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/non-ascii-comments.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/non-ascii.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/non-ascii.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/re-compile-re-link.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/re-compile-re-link.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-256-character-identifier.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-256-character-identifier.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-257-character-identifier.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-257-character-identifier.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-_webgl-identifier.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-_webgl-identifier.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-arbitrary-indexing.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-arbitrary-indexing.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-arbitrary-indexing.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-arbitrary-indexing.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-attrib-array.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-attrib-array.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-attrib-struct.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-attrib-struct.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-clipvertex.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-clipvertex.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-comma-assignment.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-comma-assignment.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-comma-conditional-assignment.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-comma-conditional-assignment.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-conditional-scoping.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-conditional-scoping.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-default-precision.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-default-precision.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-default-precision.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-default-precision.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-define-line-continuation.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-define-line-continuation.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-dfdx-no-ext.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-dfdx-no-ext.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-dfdx.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-dfdx.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-do-scoping.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-do-scoping.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-error-directive.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-error-directive.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-explicit-int-cast.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-explicit-int-cast.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-float-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-float-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-for-loop.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-for-loop.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-for-scoping.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-for-scoping.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-frag-depth.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-frag-depth.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-function-recursion.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-function-recursion.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-function-scoped-struct.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-function-scoped-struct.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-functional-scoping.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-functional-scoping.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-glcolor.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-glcolor.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-gles-1.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-gles-1.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-gles-symbol.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-gles-symbol.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-glprojectionmatrix.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-glprojectionmatrix.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-hex-int-constant-macro.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-hex-int-constant-macro.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-implicit-vec3-to-vec4-cast.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-implicit-vec3-to-vec4-cast.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-include.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-include.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-int-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-int-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-invalid-identifier.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-invalid-identifier.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-ivec2-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-ivec2-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-ivec3-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-ivec3-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-ivec4-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-ivec4-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-limited-indexing.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-limited-indexing.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-line-directive.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-line-directive.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-long-line.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-long-line.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-non-ascii-error.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-non-ascii-error.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-precision.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-precision.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-quoted-error.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-quoted-error.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-undefined-preprocessor-symbol.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-undefined-preprocessor-symbol.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-uniform-in-loop-condition.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-uniform-in-loop-condition.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec2-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec2-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec3-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec3-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec4-return-value.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec4-return-value.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec4-vec3-vec4-conditional.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-vec4-vec3-vec4-conditional.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-100.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-100.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-100.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-100.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-120.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-120.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-130.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-version-130.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-webgl-identifier.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-with-webgl-identifier.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shader-without-precision.frag.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shader-without-precision.frag.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/shared.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/shared.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/struct-nesting-exceeds-maximum.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/struct-nesting-exceeds-maximum.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/struct-nesting-under-maximum.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/struct-nesting-under-maximum.html rename : content/canvas/test/webgl-conformance/conformance/glsl/misc/uniform-location-length-limits.html => dom/canvas/test/webgl-conformance/conformance/glsl/misc/uniform-location-length-limits.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_field.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_field.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_function.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_function.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_struct.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_struct.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_variable.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/_webgl_variable.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_field.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_field.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_function.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_function.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_struct.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_struct.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_variable.vert.html => dom/canvas/test/webgl-conformance/conformance/glsl/reserved/webgl_variable.vert.html rename : content/canvas/test/webgl-conformance/conformance/glsl/samplers/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/samplers/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/samplers/glsl-function-texture2d-bias.html => dom/canvas/test/webgl-conformance/conformance/glsl/samplers/glsl-function-texture2d-bias.html rename : content/canvas/test/webgl-conformance/conformance/glsl/samplers/glsl-function-texture2dlod.html => dom/canvas/test/webgl-conformance/conformance/glsl/samplers/glsl-function-texture2dlod.html rename : content/canvas/test/webgl-conformance/conformance/glsl/samplers/glsl-function-texture2dproj.html => dom/canvas/test/webgl-conformance/conformance/glsl/samplers/glsl-function-texture2dproj.html rename : content/canvas/test/webgl-conformance/conformance/glsl/variables/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/glsl/variables/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/glsl/variables/gl-fragcoord.html => dom/canvas/test/webgl-conformance/conformance/glsl/variables/gl-fragcoord.html rename : content/canvas/test/webgl-conformance/conformance/glsl/variables/gl-frontfacing.html => dom/canvas/test/webgl-conformance/conformance/glsl/variables/gl-frontfacing.html rename : content/canvas/test/webgl-conformance/conformance/glsl/variables/gl-pointcoord.html => dom/canvas/test/webgl-conformance/conformance/glsl/variables/gl-pointcoord.html rename : content/canvas/test/webgl-conformance/conformance/limits/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/limits/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/limits/gl-max-texture-dimensions.html => dom/canvas/test/webgl-conformance/conformance/limits/gl-max-texture-dimensions.html rename : content/canvas/test/webgl-conformance/conformance/limits/gl-min-attribs.html => dom/canvas/test/webgl-conformance/conformance/limits/gl-min-attribs.html rename : content/canvas/test/webgl-conformance/conformance/limits/gl-min-textures.html => dom/canvas/test/webgl-conformance/conformance/limits/gl-min-textures.html rename : content/canvas/test/webgl-conformance/conformance/limits/gl-min-uniforms.html => dom/canvas/test/webgl-conformance/conformance/limits/gl-min-uniforms.html rename : content/canvas/test/webgl-conformance/conformance/misc/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/misc/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/misc/bad-arguments-test.html => dom/canvas/test/webgl-conformance/conformance/misc/bad-arguments-test.html rename : content/canvas/test/webgl-conformance/conformance/misc/delayed-drawing.html => dom/canvas/test/webgl-conformance/conformance/misc/delayed-drawing.html rename : content/canvas/test/webgl-conformance/conformance/misc/error-reporting.html => dom/canvas/test/webgl-conformance/conformance/misc/error-reporting.html rename : content/canvas/test/webgl-conformance/conformance/misc/functions-returning-strings.html => dom/canvas/test/webgl-conformance/conformance/misc/functions-returning-strings.html rename : content/canvas/test/webgl-conformance/conformance/misc/instanceof-test.html => dom/canvas/test/webgl-conformance/conformance/misc/instanceof-test.html rename : content/canvas/test/webgl-conformance/conformance/misc/invalid-passed-params.html => dom/canvas/test/webgl-conformance/conformance/misc/invalid-passed-params.html rename : content/canvas/test/webgl-conformance/conformance/misc/is-object.html => dom/canvas/test/webgl-conformance/conformance/misc/is-object.html rename : content/canvas/test/webgl-conformance/conformance/misc/null-object-behaviour.html => dom/canvas/test/webgl-conformance/conformance/misc/null-object-behaviour.html rename : content/canvas/test/webgl-conformance/conformance/misc/object-deletion-behaviour.html => dom/canvas/test/webgl-conformance/conformance/misc/object-deletion-behaviour.html rename : content/canvas/test/webgl-conformance/conformance/misc/shader-precision-format.html => dom/canvas/test/webgl-conformance/conformance/misc/shader-precision-format.html rename : content/canvas/test/webgl-conformance/conformance/misc/type-conversion-test.html => dom/canvas/test/webgl-conformance/conformance/misc/type-conversion-test.html rename : content/canvas/test/webgl-conformance/conformance/misc/uninitialized-test.html => dom/canvas/test/webgl-conformance/conformance/misc/uninitialized-test.html rename : content/canvas/test/webgl-conformance/conformance/misc/webgl-specific.html => dom/canvas/test/webgl-conformance/conformance/misc/webgl-specific.html rename : content/canvas/test/webgl-conformance/conformance/more/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/more/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/more/README.md => dom/canvas/test/webgl-conformance/conformance/more/README.md rename : content/canvas/test/webgl-conformance/conformance/more/all_tests.html => dom/canvas/test/webgl-conformance/conformance/more/all_tests.html rename : content/canvas/test/webgl-conformance/conformance/more/all_tests_linkonly.html => dom/canvas/test/webgl-conformance/conformance/more/all_tests_linkonly.html rename : content/canvas/test/webgl-conformance/conformance/more/all_tests_sequential.html => dom/canvas/test/webgl-conformance/conformance/more/all_tests_sequential.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-A.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-A.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B1.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B1.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B2.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B2.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B3.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B3.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B4.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-B4.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-C.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-C.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-D_G.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-D_G.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-G_I.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-G_I.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-L_S.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-L_S.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-S_V.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/argGenerators-S_V.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/badArgsArityLessThanArgc.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/badArgsArityLessThanArgc.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/constants.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/constants.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/fuzzTheAPI.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/fuzzTheAPI.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/getContext.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/getContext.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/methods.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/methods.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-A.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-A.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B1.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B1.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B2.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B2.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B3.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B3.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B4.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-B4.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-C.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-C.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-D_G.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-D_G.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-G_I.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-G_I.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-L_S.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-L_S.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-S_V.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI-S_V.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI.js => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPI.js rename : content/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPIBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/quickCheckAPIBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/conformance/webGLArrays.html => dom/canvas/test/webgl-conformance/conformance/more/conformance/webGLArrays.html rename : content/canvas/test/webgl-conformance/conformance/more/demos/opengl_web.html => dom/canvas/test/webgl-conformance/conformance/more/demos/opengl_web.html rename : content/canvas/test/webgl-conformance/conformance/more/demos/video.html => dom/canvas/test/webgl-conformance/conformance/more/demos/video.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bindBuffer.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bindBuffer.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bindBufferBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bindBufferBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bindFramebufferLeaveNonZero.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bindFramebufferLeaveNonZero.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bufferData.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bufferData.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bufferDataBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bufferDataBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bufferSubData.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bufferSubData.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/bufferSubDataBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/bufferSubDataBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/copyTexImage2D.html => dom/canvas/test/webgl-conformance/conformance/more/functions/copyTexImage2D.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/copyTexImage2DBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/copyTexImage2DBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/copyTexSubImage2D.html => dom/canvas/test/webgl-conformance/conformance/more/functions/copyTexSubImage2D.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/copyTexSubImage2DBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/copyTexSubImage2DBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/deleteBufferBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/deleteBufferBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/drawArrays.html => dom/canvas/test/webgl-conformance/conformance/more/functions/drawArrays.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/drawArraysOutOfBounds.html => dom/canvas/test/webgl-conformance/conformance/more/functions/drawArraysOutOfBounds.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/drawElements.html => dom/canvas/test/webgl-conformance/conformance/more/functions/drawElements.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/drawElementsBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/drawElementsBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/isTests.html => dom/canvas/test/webgl-conformance/conformance/more/functions/isTests.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/readPixels.html => dom/canvas/test/webgl-conformance/conformance/more/functions/readPixels.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/readPixelsBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/readPixelsBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texImage2D.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texImage2D.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texImage2DBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texImage2DBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texImage2DHTML.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texImage2DHTML.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texImage2DHTMLBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texImage2DHTMLBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2D.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2D.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2DBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2DBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2DHTML.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2DHTML.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2DHTMLBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/texSubImage2DHTMLBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformMatrix.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformMatrix.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformMatrixBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformMatrixBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformf.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformf.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformfArrayLen1.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformfArrayLen1.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformfBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformfBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformi.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformi.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/uniformiBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/uniformiBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/vertexAttrib.html => dom/canvas/test/webgl-conformance/conformance/more/functions/vertexAttrib.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/vertexAttribBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/vertexAttribBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/vertexAttribPointer.html => dom/canvas/test/webgl-conformance/conformance/more/functions/vertexAttribPointer.html rename : content/canvas/test/webgl-conformance/conformance/more/functions/vertexAttribPointerBadArgs.html => dom/canvas/test/webgl-conformance/conformance/more/functions/vertexAttribPointerBadArgs.html rename : content/canvas/test/webgl-conformance/conformance/more/glsl/arrayOutOfBounds.html => dom/canvas/test/webgl-conformance/conformance/more/glsl/arrayOutOfBounds.html rename : content/canvas/test/webgl-conformance/conformance/more/glsl/longLoops.html => dom/canvas/test/webgl-conformance/conformance/more/glsl/longLoops.html rename : content/canvas/test/webgl-conformance/conformance/more/glsl/uniformOutOfBounds.html => dom/canvas/test/webgl-conformance/conformance/more/glsl/uniformOutOfBounds.html rename : content/canvas/test/webgl-conformance/conformance/more/glsl/unusedAttribsUniforms.html => dom/canvas/test/webgl-conformance/conformance/more/glsl/unusedAttribsUniforms.html rename : content/canvas/test/webgl-conformance/conformance/more/index.html => dom/canvas/test/webgl-conformance/conformance/more/index.html rename : content/canvas/test/webgl-conformance/conformance/more/performance/CPUvsGPU.html => dom/canvas/test/webgl-conformance/conformance/more/performance/CPUvsGPU.html rename : content/canvas/test/webgl-conformance/conformance/more/performance/bandwidth.html => dom/canvas/test/webgl-conformance/conformance/more/performance/bandwidth.html rename : content/canvas/test/webgl-conformance/conformance/more/performance/jsGCPause.html => dom/canvas/test/webgl-conformance/conformance/more/performance/jsGCPause.html rename : content/canvas/test/webgl-conformance/conformance/more/performance/jsMatrixMult.html => dom/canvas/test/webgl-conformance/conformance/more/performance/jsMatrixMult.html rename : content/canvas/test/webgl-conformance/conformance/more/performance/jsToGLOverhead.html => dom/canvas/test/webgl-conformance/conformance/more/performance/jsToGLOverhead.html rename : content/canvas/test/webgl-conformance/conformance/more/unit.css => dom/canvas/test/webgl-conformance/conformance/more/unit.css rename : content/canvas/test/webgl-conformance/conformance/more/unit.js => dom/canvas/test/webgl-conformance/conformance/more/unit.js rename : content/canvas/test/webgl-conformance/conformance/more/util.js => dom/canvas/test/webgl-conformance/conformance/more/util.js rename : content/canvas/test/webgl-conformance/conformance/programs/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/programs/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/programs/get-active-test.html => dom/canvas/test/webgl-conformance/conformance/programs/get-active-test.html rename : content/canvas/test/webgl-conformance/conformance/programs/gl-bind-attrib-location-test.html => dom/canvas/test/webgl-conformance/conformance/programs/gl-bind-attrib-location-test.html rename : content/canvas/test/webgl-conformance/conformance/programs/gl-get-active-attribute.html => dom/canvas/test/webgl-conformance/conformance/programs/gl-get-active-attribute.html rename : content/canvas/test/webgl-conformance/conformance/programs/gl-get-active-uniform.html => dom/canvas/test/webgl-conformance/conformance/programs/gl-get-active-uniform.html rename : content/canvas/test/webgl-conformance/conformance/programs/gl-getshadersource.html => dom/canvas/test/webgl-conformance/conformance/programs/gl-getshadersource.html rename : content/canvas/test/webgl-conformance/conformance/programs/gl-shader-test.html => dom/canvas/test/webgl-conformance/conformance/programs/gl-shader-test.html rename : content/canvas/test/webgl-conformance/conformance/programs/invalid-UTF-16.html => dom/canvas/test/webgl-conformance/conformance/programs/invalid-UTF-16.html rename : content/canvas/test/webgl-conformance/conformance/programs/program-test.html => dom/canvas/test/webgl-conformance/conformance/programs/program-test.html rename : content/canvas/test/webgl-conformance/conformance/reading/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/reading/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/reading/read-pixels-pack-alignment.html => dom/canvas/test/webgl-conformance/conformance/reading/read-pixels-pack-alignment.html rename : content/canvas/test/webgl-conformance/conformance/reading/read-pixels-test.html => dom/canvas/test/webgl-conformance/conformance/reading/read-pixels-test.html rename : content/canvas/test/webgl-conformance/conformance/renderbuffers/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/renderbuffers/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/renderbuffers/framebuffer-object-attachment.html => dom/canvas/test/webgl-conformance/conformance/renderbuffers/framebuffer-object-attachment.html rename : content/canvas/test/webgl-conformance/conformance/renderbuffers/framebuffer-test.html => dom/canvas/test/webgl-conformance/conformance/renderbuffers/framebuffer-test.html rename : content/canvas/test/webgl-conformance/conformance/renderbuffers/renderbuffer-initialization.html => dom/canvas/test/webgl-conformance/conformance/renderbuffers/renderbuffer-initialization.html rename : content/canvas/test/webgl-conformance/conformance/rendering/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/rendering/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/rendering/draw-arrays-out-of-bounds.html => dom/canvas/test/webgl-conformance/conformance/rendering/draw-arrays-out-of-bounds.html rename : content/canvas/test/webgl-conformance/conformance/rendering/draw-elements-out-of-bounds.html => dom/canvas/test/webgl-conformance/conformance/rendering/draw-elements-out-of-bounds.html rename : content/canvas/test/webgl-conformance/conformance/rendering/gl-clear.html => dom/canvas/test/webgl-conformance/conformance/rendering/gl-clear.html rename : content/canvas/test/webgl-conformance/conformance/rendering/gl-drawelements.html => dom/canvas/test/webgl-conformance/conformance/rendering/gl-drawelements.html rename : content/canvas/test/webgl-conformance/conformance/rendering/gl-scissor-test.html => dom/canvas/test/webgl-conformance/conformance/rendering/gl-scissor-test.html rename : content/canvas/test/webgl-conformance/conformance/rendering/line-loop-tri-fan.html => dom/canvas/test/webgl-conformance/conformance/rendering/line-loop-tri-fan.html rename : content/canvas/test/webgl-conformance/conformance/rendering/more-than-65536-indices.html => dom/canvas/test/webgl-conformance/conformance/rendering/more-than-65536-indices.html rename : content/canvas/test/webgl-conformance/conformance/rendering/point-size.html => dom/canvas/test/webgl-conformance/conformance/rendering/point-size.html rename : content/canvas/test/webgl-conformance/conformance/rendering/triangle.html => dom/canvas/test/webgl-conformance/conformance/rendering/triangle.html rename : content/canvas/test/webgl-conformance/conformance/resources/3x3.png => dom/canvas/test/webgl-conformance/conformance/resources/3x3.png rename : content/canvas/test/webgl-conformance/conformance/resources/blue-1x1.jpg => dom/canvas/test/webgl-conformance/conformance/resources/blue-1x1.jpg rename : content/canvas/test/webgl-conformance/conformance/resources/boolUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/boolUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/bug-32888-texture.png => dom/canvas/test/webgl-conformance/conformance/resources/bug-32888-texture.png rename : content/canvas/test/webgl-conformance/conformance/resources/floatUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/floatUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/fragmentShader.frag => dom/canvas/test/webgl-conformance/conformance/resources/fragmentShader.frag rename : content/canvas/test/webgl-conformance/conformance/resources/glsl-conformance-test.js => dom/canvas/test/webgl-conformance/conformance/resources/glsl-conformance-test.js rename : content/canvas/test/webgl-conformance/conformance/resources/glsl-feature-tests.css => dom/canvas/test/webgl-conformance/conformance/resources/glsl-feature-tests.css rename : content/canvas/test/webgl-conformance/conformance/resources/glsl-generator.js => dom/canvas/test/webgl-conformance/conformance/resources/glsl-generator.js rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-256-with-128-alpha.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-256-with-128-alpha.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-256.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-256.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-default-gamma.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-default-gamma.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma0.1.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma0.1.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma1.0.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma1.0.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma2.0.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma2.0.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma4.0.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma4.0.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma9.0.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp-gamma9.0.png rename : content/canvas/test/webgl-conformance/conformance/resources/gray-ramp.png => dom/canvas/test/webgl-conformance/conformance/resources/gray-ramp.png rename : content/canvas/test/webgl-conformance/conformance/resources/green-2x2-16bit.png => dom/canvas/test/webgl-conformance/conformance/resources/green-2x2-16bit.png rename : content/canvas/test/webgl-conformance/conformance/resources/intArrayUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/intArrayUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/intUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/intUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/matUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/matUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/noopUniformShader.frag => dom/canvas/test/webgl-conformance/conformance/resources/noopUniformShader.frag rename : content/canvas/test/webgl-conformance/conformance/resources/noopUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/noopUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/npot-video.mp4 => dom/canvas/test/webgl-conformance/conformance/resources/npot-video.mp4 rename : content/canvas/test/webgl-conformance/conformance/resources/npot-video.theora.ogv => dom/canvas/test/webgl-conformance/conformance/resources/npot-video.theora.ogv rename : content/canvas/test/webgl-conformance/conformance/resources/npot-video.webmvp8.webm => dom/canvas/test/webgl-conformance/conformance/resources/npot-video.webmvp8.webm rename : content/canvas/test/webgl-conformance/conformance/resources/pnglib.js => dom/canvas/test/webgl-conformance/conformance/resources/pnglib.js rename : content/canvas/test/webgl-conformance/conformance/resources/red-green.mp4 => dom/canvas/test/webgl-conformance/conformance/resources/red-green.mp4 rename : content/canvas/test/webgl-conformance/conformance/resources/red-green.png => dom/canvas/test/webgl-conformance/conformance/resources/red-green.png rename : content/canvas/test/webgl-conformance/conformance/resources/red-green.theora.ogv => dom/canvas/test/webgl-conformance/conformance/resources/red-green.theora.ogv rename : content/canvas/test/webgl-conformance/conformance/resources/red-green.webmvp8.webm => dom/canvas/test/webgl-conformance/conformance/resources/red-green.webmvp8.webm rename : content/canvas/test/webgl-conformance/conformance/resources/red-indexed.png => dom/canvas/test/webgl-conformance/conformance/resources/red-indexed.png rename : content/canvas/test/webgl-conformance/conformance/resources/samplerUniformShader.frag => dom/canvas/test/webgl-conformance/conformance/resources/samplerUniformShader.frag rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-cie-rgb-profile.png => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-cie-rgb-profile.png rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-colormatch-profile.png => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-colormatch-profile.png rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-colorspin-profile.jpg => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-colorspin-profile.jpg rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-colorspin-profile.png => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-colorspin-profile.png rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-e-srgb-profile.png => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-e-srgb-profile.png rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-smpte-c-profile.png => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-smpte-c-profile.png rename : content/canvas/test/webgl-conformance/conformance/resources/small-square-with-srgb-iec61966-2.1-profile.png => dom/canvas/test/webgl-conformance/conformance/resources/small-square-with-srgb-iec61966-2.1-profile.png rename : content/canvas/test/webgl-conformance/conformance/resources/structUniformShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/structUniformShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/vertexShader.vert => dom/canvas/test/webgl-conformance/conformance/resources/vertexShader.vert rename : content/canvas/test/webgl-conformance/conformance/resources/webgl-test-utils.js => dom/canvas/test/webgl-conformance/conformance/resources/webgl-test-utils.js rename : content/canvas/test/webgl-conformance/conformance/resources/webgl-test.js => dom/canvas/test/webgl-conformance/conformance/resources/webgl-test.js rename : content/canvas/test/webgl-conformance/conformance/resources/zero-alpha.png => dom/canvas/test/webgl-conformance/conformance/resources/zero-alpha.png rename : content/canvas/test/webgl-conformance/conformance/state/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/state/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/state/gl-enable-enum-test.html => dom/canvas/test/webgl-conformance/conformance/state/gl-enable-enum-test.html rename : content/canvas/test/webgl-conformance/conformance/state/gl-enum-tests.html => dom/canvas/test/webgl-conformance/conformance/state/gl-enum-tests.html rename : content/canvas/test/webgl-conformance/conformance/state/gl-get-calls.html => dom/canvas/test/webgl-conformance/conformance/state/gl-get-calls.html rename : content/canvas/test/webgl-conformance/conformance/state/gl-geterror.html => dom/canvas/test/webgl-conformance/conformance/state/gl-geterror.html rename : content/canvas/test/webgl-conformance/conformance/state/gl-getstring.html => dom/canvas/test/webgl-conformance/conformance/state/gl-getstring.html rename : content/canvas/test/webgl-conformance/conformance/state/gl-object-get-calls.html => dom/canvas/test/webgl-conformance/conformance/state/gl-object-get-calls.html rename : content/canvas/test/webgl-conformance/conformance/textures/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/textures/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/textures/compressed-tex-image.html => dom/canvas/test/webgl-conformance/conformance/textures/compressed-tex-image.html rename : content/canvas/test/webgl-conformance/conformance/textures/copy-tex-image-and-sub-image-2d.html => dom/canvas/test/webgl-conformance/conformance/textures/copy-tex-image-and-sub-image-2d.html rename : content/canvas/test/webgl-conformance/conformance/textures/gl-pixelstorei.html => dom/canvas/test/webgl-conformance/conformance/textures/gl-pixelstorei.html rename : content/canvas/test/webgl-conformance/conformance/textures/gl-teximage.html => dom/canvas/test/webgl-conformance/conformance/textures/gl-teximage.html rename : content/canvas/test/webgl-conformance/conformance/textures/origin-clean-conformance.html => dom/canvas/test/webgl-conformance/conformance/textures/origin-clean-conformance.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-array-buffer-view.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-canvas.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-canvas.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-image-data.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-image-data.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-image.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-image.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-video.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-and-sub-image-2d-with-video.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-and-uniform-binding-bugs.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-and-uniform-binding-bugs.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-with-format-and-type.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-with-format-and-type.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-image-with-invalid-data.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-image-with-invalid-data.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-input-validation.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-input-validation.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-sub-image-2d-bad-args.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-sub-image-2d-bad-args.html rename : content/canvas/test/webgl-conformance/conformance/textures/tex-sub-image-2d.html => dom/canvas/test/webgl-conformance/conformance/textures/tex-sub-image-2d.html rename : content/canvas/test/webgl-conformance/conformance/textures/texparameter-test.html => dom/canvas/test/webgl-conformance/conformance/textures/texparameter-test.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-active-bind-2.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-active-bind-2.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-active-bind.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-active-bind.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-clear.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-clear.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-complete.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-complete.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-formats-test.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-formats-test.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-mips.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-mips.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-npot-video.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-npot-video.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-npot.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-npot.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-size-cube-maps.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-size-cube-maps.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-size.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-size.html rename : content/canvas/test/webgl-conformance/conformance/textures/texture-transparent-pixels-initialized.html => dom/canvas/test/webgl-conformance/conformance/textures/texture-transparent-pixels-initialized.html rename : content/canvas/test/webgl-conformance/conformance/typedarrays/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/typedarrays/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/typedarrays/array-buffer-crash.html => dom/canvas/test/webgl-conformance/conformance/typedarrays/array-buffer-crash.html rename : content/canvas/test/webgl-conformance/conformance/typedarrays/array-buffer-view-crash.html => dom/canvas/test/webgl-conformance/conformance/typedarrays/array-buffer-view-crash.html rename : content/canvas/test/webgl-conformance/conformance/typedarrays/array-unit-tests.html => dom/canvas/test/webgl-conformance/conformance/typedarrays/array-unit-tests.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/00_test_list.txt => dom/canvas/test/webgl-conformance/conformance/uniforms/00_test_list.txt rename : content/canvas/test/webgl-conformance/conformance/uniforms/gl-uniform-arrays.html => dom/canvas/test/webgl-conformance/conformance/uniforms/gl-uniform-arrays.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/gl-uniform-bool.html => dom/canvas/test/webgl-conformance/conformance/uniforms/gl-uniform-bool.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/gl-uniformmatrix4fv.html => dom/canvas/test/webgl-conformance/conformance/uniforms/gl-uniformmatrix4fv.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/gl-unknown-uniform.html => dom/canvas/test/webgl-conformance/conformance/uniforms/gl-unknown-uniform.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/null-uniform-location.html => dom/canvas/test/webgl-conformance/conformance/uniforms/null-uniform-location.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/uniform-location.html => dom/canvas/test/webgl-conformance/conformance/uniforms/uniform-location.html rename : content/canvas/test/webgl-conformance/conformance/uniforms/uniform-samplers-test.html => dom/canvas/test/webgl-conformance/conformance/uniforms/uniform-samplers-test.html rename : content/canvas/test/webgl-conformance/dont-load-image-from-internet.patch => dom/canvas/test/webgl-conformance/dont-load-image-from-internet.patch rename : content/canvas/test/webgl-conformance/ext-texture-filter-anisotropic.patch => dom/canvas/test/webgl-conformance/ext-texture-filter-anisotropic.patch rename : content/canvas/test/webgl-conformance/extra/50x50pixel-black-with-red-triangle.png => dom/canvas/test/webgl-conformance/extra/50x50pixel-black-with-red-triangle.png rename : content/canvas/test/webgl-conformance/extra/big-fbos-example.html => dom/canvas/test/webgl-conformance/extra/big-fbos-example.html rename : content/canvas/test/webgl-conformance/extra/canvas-compositing-test.html => dom/canvas/test/webgl-conformance/extra/canvas-compositing-test.html rename : content/canvas/test/webgl-conformance/extra/canvas-compositing-test.png => dom/canvas/test/webgl-conformance/extra/canvas-compositing-test.png rename : content/canvas/test/webgl-conformance/extra/fbo-lost-context.html => dom/canvas/test/webgl-conformance/extra/fbo-lost-context.html rename : content/canvas/test/webgl-conformance/extra/lots-of-polys-example.html => dom/canvas/test/webgl-conformance/extra/lots-of-polys-example.html rename : content/canvas/test/webgl-conformance/extra/offscreen-issue.html => dom/canvas/test/webgl-conformance/extra/offscreen-issue.html rename : content/canvas/test/webgl-conformance/extra/out-of-bounds-uniform-array-access.html => dom/canvas/test/webgl-conformance/extra/out-of-bounds-uniform-array-access.html rename : content/canvas/test/webgl-conformance/extra/out-of-memory.html => dom/canvas/test/webgl-conformance/extra/out-of-memory.html rename : content/canvas/test/webgl-conformance/extra/out-of-resources.html => dom/canvas/test/webgl-conformance/extra/out-of-resources.html rename : content/canvas/test/webgl-conformance/extra/out-of-vram.html => dom/canvas/test/webgl-conformance/extra/out-of-vram.html rename : content/canvas/test/webgl-conformance/extra/simulated-attrib-0-bug-test.html => dom/canvas/test/webgl-conformance/extra/simulated-attrib-0-bug-test.html rename : content/canvas/test/webgl-conformance/extra/slow-shader-example.html => dom/canvas/test/webgl-conformance/extra/slow-shader-example.html rename : content/canvas/test/webgl-conformance/extra/webgl-info.html => dom/canvas/test/webgl-conformance/extra/webgl-info.html rename : content/canvas/test/webgl-conformance/failing_tests_android.txt => dom/canvas/test/webgl-conformance/failing_tests_android.txt rename : content/canvas/test/webgl-conformance/failing_tests_android_nvidia.txt => dom/canvas/test/webgl-conformance/failing_tests_android_nvidia.txt rename : content/canvas/test/webgl-conformance/failing_tests_android_x86.txt => dom/canvas/test/webgl-conformance/failing_tests_android_x86.txt rename : content/canvas/test/webgl-conformance/failing_tests_linux.txt => dom/canvas/test/webgl-conformance/failing_tests_linux.txt rename : content/canvas/test/webgl-conformance/failing_tests_linux_mesa.txt => dom/canvas/test/webgl-conformance/failing_tests_linux_mesa.txt rename : content/canvas/test/webgl-conformance/failing_tests_linux_nvidia.txt => dom/canvas/test/webgl-conformance/failing_tests_linux_nvidia.txt rename : content/canvas/test/webgl-conformance/failing_tests_mac.txt => dom/canvas/test/webgl-conformance/failing_tests_mac.txt rename : content/canvas/test/webgl-conformance/failing_tests_mac_mtnlion.txt => dom/canvas/test/webgl-conformance/failing_tests_mac_mtnlion.txt rename : content/canvas/test/webgl-conformance/failing_tests_windows.txt => dom/canvas/test/webgl-conformance/failing_tests_windows.txt rename : content/canvas/test/webgl-conformance/fix-webgl-harness-async.patch => dom/canvas/test/webgl-conformance/fix-webgl-harness-async.patch rename : content/canvas/test/webgl-conformance/gc.patch => dom/canvas/test/webgl-conformance/gc.patch rename : content/canvas/test/webgl-conformance/log-more-info-about-test-failures.patch => dom/canvas/test/webgl-conformance/log-more-info-about-test-failures.patch rename : content/canvas/test/webgl-conformance/misc/program-test-1.html => dom/canvas/test/webgl-conformance/misc/program-test-1.html rename : content/canvas/test/webgl-conformance/mochitest-conformance-files.ini => dom/canvas/test/webgl-conformance/mochitest-conformance-files.ini rename : content/canvas/test/webgl-conformance/mochitest.ini => dom/canvas/test/webgl-conformance/mochitest.ini rename : content/canvas/test/webgl-conformance/moz.build => dom/canvas/test/webgl-conformance/moz.build rename : content/canvas/test/webgl-conformance/reference-cycle-test.patch => dom/canvas/test/webgl-conformance/reference-cycle-test.patch rename : content/canvas/test/webgl-conformance/resources/cors-util.js => dom/canvas/test/webgl-conformance/resources/cors-util.js rename : content/canvas/test/webgl-conformance/resources/desktop-gl-constants.js => dom/canvas/test/webgl-conformance/resources/desktop-gl-constants.js rename : content/canvas/test/webgl-conformance/resources/js-test-pre.js => dom/canvas/test/webgl-conformance/resources/js-test-pre.js rename : content/canvas/test/webgl-conformance/resources/js-test-style.css => dom/canvas/test/webgl-conformance/resources/js-test-style.css rename : content/canvas/test/webgl-conformance/resources/opengl_logo.jpg => dom/canvas/test/webgl-conformance/resources/opengl_logo.jpg rename : content/canvas/test/webgl-conformance/resources/thunderbird-logo-64x64.png => dom/canvas/test/webgl-conformance/resources/thunderbird-logo-64x64.png rename : content/canvas/test/webgl-conformance/resources/webgl-logo.png => dom/canvas/test/webgl-conformance/resources/webgl-logo.png rename : content/canvas/test/webgl-conformance/resources/webgl-test-harness.js => dom/canvas/test/webgl-conformance/resources/webgl-test-harness.js rename : content/canvas/test/webgl-conformance/skipped_tests_android.txt => dom/canvas/test/webgl-conformance/skipped_tests_android.txt rename : content/canvas/test/webgl-conformance/skipped_tests_android_x86.txt => dom/canvas/test/webgl-conformance/skipped_tests_android_x86.txt rename : content/canvas/test/webgl-conformance/skipped_tests_linux.txt => dom/canvas/test/webgl-conformance/skipped_tests_linux.txt rename : content/canvas/test/webgl-conformance/skipped_tests_linux_mesa.txt => dom/canvas/test/webgl-conformance/skipped_tests_linux_mesa.txt rename : content/canvas/test/webgl-conformance/skipped_tests_win_vista.txt => dom/canvas/test/webgl-conformance/skipped_tests_win_vista.txt rename : content/canvas/test/webgl-conformance/skipped_tests_winxp.txt => dom/canvas/test/webgl-conformance/skipped_tests_winxp.txt rename : content/canvas/test/webgl-conformance/test_webgl_conformance_test_suite.html => dom/canvas/test/webgl-conformance/test_webgl_conformance_test_suite.html rename : content/canvas/test/webgl-conformance/webgl-conformance-tests.html => dom/canvas/test/webgl-conformance/webgl-conformance-tests.html rename : content/canvas/test/webgl-conformance/writemanifest.py => dom/canvas/test/webgl-conformance/writemanifest.py rename : content/canvas/test/webgl-mochitest/driver-info.js => dom/canvas/test/webgl-mochitest/driver-info.js rename : content/canvas/test/webgl-mochitest/mochi-to-testcase.py => dom/canvas/test/webgl-mochitest/mochi-to-testcase.py rename : content/canvas/test/webgl-mochitest/mochitest.ini => dom/canvas/test/webgl-mochitest/mochitest.ini rename : content/canvas/test/webgl-mochitest/moz.build => dom/canvas/test/webgl-mochitest/moz.build rename : content/canvas/test/webgl-mochitest/test_depth_readpixels.html => dom/canvas/test/webgl-mochitest/test_depth_readpixels.html rename : content/canvas/test/webgl-mochitest/test_draw.html => dom/canvas/test/webgl-mochitest/test_draw.html rename : content/canvas/test/webgl-mochitest/test_fb_param.html => dom/canvas/test/webgl-mochitest/test_fb_param.html rename : content/canvas/test/webgl-mochitest/test_fb_param_crash.html => dom/canvas/test/webgl-mochitest/test_fb_param_crash.html rename : content/canvas/test/webgl-mochitest/test_highp_fs.html => dom/canvas/test/webgl-mochitest/test_highp_fs.html rename : content/canvas/test/webgl-mochitest/test_no_arr_points.html => dom/canvas/test/webgl-mochitest/test_no_arr_points.html rename : content/canvas/test/webgl-mochitest/test_noprog_draw.html => dom/canvas/test/webgl-mochitest/test_noprog_draw.html rename : content/canvas/test/webgl-mochitest/test_privileged_exts.html => dom/canvas/test/webgl-mochitest/test_privileged_exts.html rename : content/canvas/test/webgl-mochitest/test_texsubimage_float.html => dom/canvas/test/webgl-mochitest/test_texsubimage_float.html rename : content/canvas/test/webgl-mochitest/test_webgl2_not_exposed.html => dom/canvas/test/webgl-mochitest/test_webgl2_not_exposed.html rename : content/canvas/test/webgl-mochitest/test_webgl_available.html => dom/canvas/test/webgl-mochitest/test_webgl_available.html rename : content/canvas/test/webgl-mochitest/test_webgl_conformance.html => dom/canvas/test/webgl-mochitest/test_webgl_conformance.html rename : content/canvas/test/webgl-mochitest/test_webgl_request_context.html => dom/canvas/test/webgl-mochitest/test_webgl_request_context.html rename : content/canvas/test/webgl-mochitest/test_webgl_request_mismatch.html => dom/canvas/test/webgl-mochitest/test_webgl_request_mismatch.html rename : content/canvas/test/webgl-mochitest/webgl-util.js => dom/canvas/test/webgl-mochitest/webgl-util.js
600 lines
21 KiB
C++
600 lines
21 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "WebGLElementArrayCache.h"
|
|
|
|
#include "mozilla/Assertions.h"
|
|
#include "mozilla/MemoryReporting.h"
|
|
#include "mozilla/MathAlgorithms.h"
|
|
|
|
#include <cstdlib>
|
|
#include <cstring>
|
|
#include <limits>
|
|
#include <algorithm>
|
|
|
|
namespace mozilla {
|
|
|
|
static void
|
|
UpdateUpperBound(uint32_t* out_upperBound, uint32_t newBound)
|
|
{
|
|
MOZ_ASSERT(out_upperBound);
|
|
*out_upperBound = std::max(*out_upperBound, newBound);
|
|
}
|
|
|
|
/*
|
|
* WebGLElementArrayCacheTree contains most of the implementation of WebGLElementArrayCache,
|
|
* which performs WebGL element array buffer validation for drawElements.
|
|
*
|
|
* Attention: Here lie nontrivial data structures, bug-prone algorithms, and non-canonical tweaks!
|
|
* Whence the explanatory comments, and compiled unit test.
|
|
*
|
|
* *** What problem are we solving here? ***
|
|
*
|
|
* WebGL::DrawElements has to validate that the elements are in range wrt the current vertex attribs.
|
|
* This boils down to the problem, given an array of integers, of computing the maximum in an arbitrary
|
|
* sub-array. The naive algorithm has linear complexity; this has been a major performance problem,
|
|
* see bug 569431. In that bug, we took the approach of caching the max for the whole array, which
|
|
* does cover most cases (DrawElements typically consumes the whole element array buffer) but doesn't
|
|
* help in other use cases:
|
|
* - when doing "partial DrawElements" i.e. consuming only part of the element array buffer
|
|
* - when doing frequent "partial buffer updates" i.e. bufferSubData calls updating parts of the
|
|
* element array buffer
|
|
*
|
|
* *** The solution: a binary tree ***
|
|
*
|
|
* The solution implemented here is to use a binary tree as the cache data structure. Each tree node
|
|
* contains the max of its two children nodes. In this way, finding the maximum in any contiguous sub-array
|
|
* has log complexity instead of linear complexity.
|
|
*
|
|
* Simplistically, if the element array is
|
|
*
|
|
* 1 4 3 2
|
|
*
|
|
* then the corresponding tree is
|
|
*
|
|
* 4
|
|
* _/ \_
|
|
* 4 3
|
|
* / \ / \
|
|
* 1 4 3 2
|
|
*
|
|
* In practice, the bottom-most levels of the tree are both the largest to store (because they
|
|
* have more nodes), and the least useful performance-wise (because each node in the bottom
|
|
* levels concerns only few entries in the elements array buffer, it is cheap to compute).
|
|
*
|
|
* For this reason, we stop the tree a few levels above, so that each tree leaf actually corresponds
|
|
* to more than one element array entry.
|
|
*
|
|
* The number of levels that we "drop" is |sSkippedBottomTreeLevels| and the number of element array entries
|
|
* that each leaf corresponds to, is |sElementsPerLeaf|. This being a binary tree, we have
|
|
*
|
|
* sElementsPerLeaf = 2 ^ sSkippedBottomTreeLevels.
|
|
*
|
|
* *** Storage layout of the binary tree ***
|
|
*
|
|
* We take advantage of the specifics of the situation to avoid generalist tree storage and instead
|
|
* store the tree entries in a vector, mTreeData.
|
|
*
|
|
* TreeData is always a vector of length
|
|
*
|
|
* 2 * (number of leaves).
|
|
*
|
|
* Its data layout is as follows: mTreeData[0] is unused, mTreeData[1] is the root node,
|
|
* then at offsets 2..3 is the tree level immediately below the root node, then at offsets 4..7
|
|
* is the tree level below that, etc.
|
|
*
|
|
* The figure below illustrates this by writing at each tree node the offset into mTreeData at
|
|
* which it is stored:
|
|
*
|
|
* 1
|
|
* _/ \_
|
|
* 2 3
|
|
* / \ / \
|
|
* 4 5 6 7
|
|
* ...
|
|
*
|
|
* Thus, under the convention that the root level is level 0, we see that level N is stored at offsets
|
|
*
|
|
* [ 2^n .. 2^(n+1) - 1 ]
|
|
*
|
|
* in mTreeData. Likewise, all the usual tree operations have simple mathematical expressions in
|
|
* terms of mTreeData offsets, see all the methods such as ParentNode, LeftChildNode, etc.
|
|
*
|
|
* *** Design constraint: element types aren't known at buffer-update time ***
|
|
*
|
|
* Note that a key constraint that we're operating under, is that we don't know the types of the elements
|
|
* by the time WebGL bufferData/bufferSubData methods are called. The type of elements is only
|
|
* specified in the drawElements call. This means that we may potentially have to store caches for
|
|
* multiple element types, for the same element array buffer. Since we don't know yet how many
|
|
* element types we'll eventually support (extensions add more), the concern about memory usage is serious.
|
|
* This is addressed by sSkippedBottomTreeLevels as explained above. Of course, in the typical
|
|
* case where each element array buffer is only ever used with one type, this is also addressed
|
|
* by having WebGLElementArrayCache lazily create trees for each type only upon first use.
|
|
*
|
|
* Another consequence of this constraint is that when updating the trees, we have to update
|
|
* all existing trees. So if trees for types uint8_t, uint16_t and uint32_t have ever been constructed for this buffer,
|
|
* every subsequent update will have to update all trees even if one of the types is never
|
|
* used again. That's inefficient, but content should not put indices of different types in the
|
|
* same element array buffer anyways. Different index types can only be consumed in separate
|
|
* drawElements calls, so nothing particular is to be achieved by lumping them in the same
|
|
* buffer object.
|
|
*/
|
|
template<typename T>
|
|
struct WebGLElementArrayCacheTree
|
|
{
|
|
// A too-high sSkippedBottomTreeLevels would harm the performance of small drawElements calls
|
|
// A too-low sSkippedBottomTreeLevels would cause undue memory usage.
|
|
// The current value has been validated by some benchmarking. See bug 732660.
|
|
static const size_t sSkippedBottomTreeLevels = 3;
|
|
static const size_t sElementsPerLeaf = 1 << sSkippedBottomTreeLevels;
|
|
static const size_t sElementsPerLeafMask = sElementsPerLeaf - 1; // sElementsPerLeaf is POT
|
|
|
|
private:
|
|
|
|
// The WebGLElementArrayCache that owns this tree
|
|
WebGLElementArrayCache& mParent;
|
|
|
|
// The tree's internal data storage. Its length is 2 * (number of leaves)
|
|
// because of its data layout explained in the above class comment.
|
|
FallibleTArray<T> mTreeData;
|
|
|
|
public:
|
|
// Constructor. Takes a reference to the WebGLElementArrayCache that is to be
|
|
// the parent. Does not initialize the tree. Should be followed by a call
|
|
// to Update() to attempt initializing the tree.
|
|
WebGLElementArrayCacheTree(WebGLElementArrayCache& p)
|
|
: mParent(p)
|
|
{
|
|
}
|
|
|
|
T GlobalMaximum() const {
|
|
return mTreeData[1];
|
|
}
|
|
|
|
// returns the index of the parent node; if treeIndex=1 (the root node),
|
|
// the return value is 0.
|
|
static size_t ParentNode(size_t treeIndex) {
|
|
MOZ_ASSERT(treeIndex > 1);
|
|
return treeIndex >> 1;
|
|
}
|
|
|
|
static bool IsRightNode(size_t treeIndex) {
|
|
MOZ_ASSERT(treeIndex > 1);
|
|
return treeIndex & 1;
|
|
}
|
|
|
|
static bool IsLeftNode(size_t treeIndex) {
|
|
MOZ_ASSERT(treeIndex > 1);
|
|
return !IsRightNode(treeIndex);
|
|
}
|
|
|
|
static size_t SiblingNode(size_t treeIndex) {
|
|
MOZ_ASSERT(treeIndex > 1);
|
|
return treeIndex ^ 1;
|
|
}
|
|
|
|
static size_t LeftChildNode(size_t treeIndex) {
|
|
MOZ_ASSERT(treeIndex);
|
|
return treeIndex << 1;
|
|
}
|
|
|
|
static size_t RightChildNode(size_t treeIndex) {
|
|
MOZ_ASSERT(treeIndex);
|
|
return SiblingNode(LeftChildNode(treeIndex));
|
|
}
|
|
|
|
static size_t LeftNeighborNode(size_t treeIndex, size_t distance = 1) {
|
|
MOZ_ASSERT(treeIndex > 1);
|
|
return treeIndex - distance;
|
|
}
|
|
|
|
static size_t RightNeighborNode(size_t treeIndex, size_t distance = 1) {
|
|
MOZ_ASSERT(treeIndex > 1);
|
|
return treeIndex + distance;
|
|
}
|
|
|
|
size_t NumLeaves() const {
|
|
// see class comment for why we the tree storage size is 2 * numLeaves
|
|
return mTreeData.Length() >> 1;
|
|
}
|
|
|
|
size_t LeafForElement(size_t element) const {
|
|
size_t leaf = element / sElementsPerLeaf;
|
|
MOZ_ASSERT(leaf < NumLeaves());
|
|
return leaf;
|
|
}
|
|
|
|
size_t LeafForByte(size_t byte) const {
|
|
return LeafForElement(byte / sizeof(T));
|
|
}
|
|
|
|
// Returns the index, into the tree storage, where a given leaf is stored
|
|
size_t TreeIndexForLeaf(size_t leaf) const {
|
|
// See above class comment. The tree storage is an array of length 2 * numLeaves.
|
|
// The leaves are stored in its second half.
|
|
return leaf + NumLeaves();
|
|
}
|
|
|
|
static size_t LastElementUnderSameLeaf(size_t element) {
|
|
return element | sElementsPerLeafMask;
|
|
}
|
|
|
|
static size_t FirstElementUnderSameLeaf(size_t element) {
|
|
return element & ~sElementsPerLeafMask;
|
|
}
|
|
|
|
static size_t NextMultipleOfElementsPerLeaf(size_t numElements) {
|
|
MOZ_ASSERT(numElements >= 1);
|
|
return ((numElements - 1) | sElementsPerLeafMask) + 1;
|
|
}
|
|
|
|
bool Validate(T maxAllowed, size_t firstLeaf, size_t lastLeaf,
|
|
uint32_t* out_upperBound)
|
|
{
|
|
size_t firstTreeIndex = TreeIndexForLeaf(firstLeaf);
|
|
size_t lastTreeIndex = TreeIndexForLeaf(lastLeaf);
|
|
|
|
while (true) {
|
|
// given that we tweak these values in nontrivial ways, it doesn't hurt to do
|
|
// this sanity check
|
|
MOZ_ASSERT(firstTreeIndex <= lastTreeIndex);
|
|
|
|
// final case where there is only 1 node to validate at the current tree level
|
|
if (lastTreeIndex == firstTreeIndex) {
|
|
const T& curData = mTreeData[firstTreeIndex];
|
|
UpdateUpperBound(out_upperBound, curData);
|
|
return curData <= maxAllowed;
|
|
}
|
|
|
|
// if the first node at current tree level is a right node, handle it individually
|
|
// and replace it with its right neighbor, which is a left node
|
|
if (IsRightNode(firstTreeIndex)) {
|
|
const T& curData = mTreeData[firstTreeIndex];
|
|
UpdateUpperBound(out_upperBound, curData);
|
|
if (curData > maxAllowed)
|
|
return false;
|
|
firstTreeIndex = RightNeighborNode(firstTreeIndex);
|
|
}
|
|
|
|
// if the last node at current tree level is a left node, handle it individually
|
|
// and replace it with its left neighbor, which is a right node
|
|
if (IsLeftNode(lastTreeIndex)) {
|
|
const T& curData = mTreeData[lastTreeIndex];
|
|
UpdateUpperBound(out_upperBound, curData);
|
|
if (curData > maxAllowed)
|
|
return false;
|
|
lastTreeIndex = LeftNeighborNode(lastTreeIndex);
|
|
}
|
|
|
|
// at this point it can happen that firstTreeIndex and lastTreeIndex "crossed" each
|
|
// other. That happens if firstTreeIndex was a right node and lastTreeIndex was its
|
|
// right neighor: in that case, both above tweaks happened and as a result, they ended
|
|
// up being swapped: lastTreeIndex is now the _left_ neighbor of firstTreeIndex.
|
|
// When that happens, there is nothing left to validate.
|
|
if (lastTreeIndex == LeftNeighborNode(firstTreeIndex)) {
|
|
return true;
|
|
}
|
|
|
|
// walk up 1 level
|
|
firstTreeIndex = ParentNode(firstTreeIndex);
|
|
lastTreeIndex = ParentNode(lastTreeIndex);
|
|
}
|
|
}
|
|
|
|
// Updates the tree from the parent's buffer contents. Fallible, as it
|
|
// may have to resize the tree storage.
|
|
bool Update(size_t firstByte, size_t lastByte);
|
|
|
|
size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const
|
|
{
|
|
return aMallocSizeOf(this) + mTreeData.SizeOfExcludingThis(aMallocSizeOf);
|
|
}
|
|
};
|
|
|
|
// TreeForType: just a template helper to select the right tree object for a given
|
|
// element type.
|
|
template<typename T>
|
|
struct TreeForType {};
|
|
|
|
template<>
|
|
struct TreeForType<uint8_t>
|
|
{
|
|
static ScopedDeletePtr<WebGLElementArrayCacheTree<uint8_t>>&
|
|
Value(WebGLElementArrayCache *b) {
|
|
return b->mUint8Tree;
|
|
}
|
|
};
|
|
|
|
template<>
|
|
struct TreeForType<uint16_t>
|
|
{
|
|
static ScopedDeletePtr<WebGLElementArrayCacheTree<uint16_t>>&
|
|
Value(WebGLElementArrayCache *b) {
|
|
return b->mUint16Tree;
|
|
}
|
|
};
|
|
|
|
template<>
|
|
struct TreeForType<uint32_t>
|
|
{
|
|
static ScopedDeletePtr<WebGLElementArrayCacheTree<uint32_t>>&
|
|
Value(WebGLElementArrayCache *b) {
|
|
return b->mUint32Tree;
|
|
}
|
|
};
|
|
|
|
// Calling this method will 1) update the leaves in this interval
|
|
// from the raw buffer data, and 2) propagate this update up the tree
|
|
template<typename T>
|
|
bool WebGLElementArrayCacheTree<T>::Update(size_t firstByte, size_t lastByte)
|
|
{
|
|
MOZ_ASSERT(firstByte <= lastByte);
|
|
MOZ_ASSERT(lastByte < mParent.mBytes.Length());
|
|
|
|
size_t numberOfElements = mParent.mBytes.Length() / sizeof(T);
|
|
size_t requiredNumLeaves = 0;
|
|
if (numberOfElements > 0) {
|
|
// If we didn't require the number of leaves to be a power of two, then
|
|
// it would just be equal to
|
|
//
|
|
// ceil(numberOfElements / sElementsPerLeaf)
|
|
//
|
|
// The way we implement this (division+ceil) operation in integer arithmetic
|
|
// is as follows:
|
|
size_t numLeavesNonPOT = (numberOfElements + sElementsPerLeaf - 1) / sElementsPerLeaf;
|
|
// It only remains to round that up to the next power of two:
|
|
requiredNumLeaves = RoundUpPow2(numLeavesNonPOT);
|
|
}
|
|
|
|
// Step #0: if needed, resize our tree data storage.
|
|
if (requiredNumLeaves != NumLeaves()) {
|
|
// see class comment for why we the tree storage size is 2 * numLeaves
|
|
if (!mTreeData.SetLength(2 * requiredNumLeaves)) {
|
|
mTreeData.SetLength(0);
|
|
return false;
|
|
}
|
|
MOZ_ASSERT(NumLeaves() == requiredNumLeaves);
|
|
|
|
if (NumLeaves()) {
|
|
// when resizing, update the whole tree, not just the subset corresponding
|
|
// to the part of the buffer being updated.
|
|
memset(mTreeData.Elements(), 0, mTreeData.Length() * sizeof(T));
|
|
firstByte = 0;
|
|
lastByte = mParent.mBytes.Length() - 1;
|
|
}
|
|
}
|
|
|
|
if (NumLeaves() == 0) {
|
|
return true;
|
|
}
|
|
|
|
lastByte = std::min(lastByte, NumLeaves() * sElementsPerLeaf * sizeof(T) - 1);
|
|
if (firstByte > lastByte) {
|
|
return true;
|
|
}
|
|
|
|
size_t firstLeaf = LeafForByte(firstByte);
|
|
size_t lastLeaf = LeafForByte(lastByte);
|
|
|
|
MOZ_ASSERT(firstLeaf <= lastLeaf && lastLeaf < NumLeaves());
|
|
|
|
size_t firstTreeIndex = TreeIndexForLeaf(firstLeaf);
|
|
size_t lastTreeIndex = TreeIndexForLeaf(lastLeaf);
|
|
|
|
// Step #1: initialize the tree leaves from plain buffer data.
|
|
// That is, each tree leaf must be set to the max of the |sElementsPerLeaf| corresponding
|
|
// buffer entries.
|
|
// condition-less scope to prevent leaking this scope's variables into the code below
|
|
{
|
|
// treeIndex is the index of the tree leaf we're writing, i.e. the destination index
|
|
size_t treeIndex = firstTreeIndex;
|
|
// srcIndex is the index in the source buffer
|
|
size_t srcIndex = firstLeaf * sElementsPerLeaf;
|
|
while (treeIndex <= lastTreeIndex) {
|
|
T m = 0;
|
|
size_t a = srcIndex;
|
|
size_t srcIndexNextLeaf = std::min(a + sElementsPerLeaf, numberOfElements);
|
|
for (; srcIndex < srcIndexNextLeaf; srcIndex++) {
|
|
m = std::max(m, mParent.Element<T>(srcIndex));
|
|
}
|
|
mTreeData[treeIndex] = m;
|
|
treeIndex++;
|
|
}
|
|
}
|
|
|
|
// Step #2: propagate the values up the tree. This is simply a matter of walking up
|
|
// the tree and setting each node to the max of its two children.
|
|
while (firstTreeIndex > 1) {
|
|
// move up 1 level
|
|
firstTreeIndex = ParentNode(firstTreeIndex);
|
|
lastTreeIndex = ParentNode(lastTreeIndex);
|
|
|
|
// fast-exit case where only one node is updated at the current level
|
|
if (firstTreeIndex == lastTreeIndex) {
|
|
mTreeData[firstTreeIndex] = std::max(mTreeData[LeftChildNode(firstTreeIndex)], mTreeData[RightChildNode(firstTreeIndex)]);
|
|
continue;
|
|
}
|
|
|
|
size_t child = LeftChildNode(firstTreeIndex);
|
|
size_t parent = firstTreeIndex;
|
|
while (parent <= lastTreeIndex)
|
|
{
|
|
T a = mTreeData[child];
|
|
child = RightNeighborNode(child);
|
|
T b = mTreeData[child];
|
|
child = RightNeighborNode(child);
|
|
mTreeData[parent] = std::max(a, b);
|
|
parent = RightNeighborNode(parent);
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
WebGLElementArrayCache::WebGLElementArrayCache() {
|
|
}
|
|
|
|
WebGLElementArrayCache::~WebGLElementArrayCache() {
|
|
}
|
|
|
|
bool WebGLElementArrayCache::BufferData(const void* ptr, size_t byteLength) {
|
|
if (mBytes.Length() != byteLength) {
|
|
if (!mBytes.SetLength(byteLength)) {
|
|
mBytes.SetLength(0);
|
|
return false;
|
|
}
|
|
}
|
|
MOZ_ASSERT(mBytes.Length() == byteLength);
|
|
return BufferSubData(0, ptr, byteLength);
|
|
}
|
|
|
|
bool WebGLElementArrayCache::BufferSubData(size_t pos, const void* ptr, size_t updateByteLength) {
|
|
MOZ_ASSERT(pos + updateByteLength <= mBytes.Length());
|
|
if (!updateByteLength)
|
|
return true;
|
|
if (ptr)
|
|
memcpy(mBytes.Elements() + pos, ptr, updateByteLength);
|
|
else
|
|
memset(mBytes.Elements() + pos, 0, updateByteLength);
|
|
return UpdateTrees(pos, pos + updateByteLength - 1);
|
|
}
|
|
|
|
bool WebGLElementArrayCache::UpdateTrees(size_t firstByte, size_t lastByte)
|
|
{
|
|
bool result = true;
|
|
if (mUint8Tree)
|
|
result &= mUint8Tree->Update(firstByte, lastByte);
|
|
if (mUint16Tree)
|
|
result &= mUint16Tree->Update(firstByte, lastByte);
|
|
if (mUint32Tree)
|
|
result &= mUint32Tree->Update(firstByte, lastByte);
|
|
return result;
|
|
}
|
|
|
|
template<typename T>
|
|
bool
|
|
WebGLElementArrayCache::Validate(uint32_t maxAllowed, size_t firstElement,
|
|
size_t countElements, uint32_t* out_upperBound)
|
|
{
|
|
*out_upperBound = 0;
|
|
|
|
// if maxAllowed is >= the max T value, then there is no way that a T index could be invalid
|
|
uint32_t maxTSize = std::numeric_limits<T>::max();
|
|
if (maxAllowed >= maxTSize) {
|
|
UpdateUpperBound(out_upperBound, maxTSize);
|
|
return true;
|
|
}
|
|
|
|
T maxAllowedT(maxAllowed);
|
|
|
|
// integer overflow must have been handled earlier, so we assert that maxAllowedT
|
|
// is exactly the max allowed value.
|
|
MOZ_ASSERT(uint32_t(maxAllowedT) == maxAllowed);
|
|
|
|
if (!mBytes.Length() || !countElements)
|
|
return true;
|
|
|
|
ScopedDeletePtr<WebGLElementArrayCacheTree<T>>& tree = TreeForType<T>::Value(this);
|
|
if (!tree) {
|
|
tree = new WebGLElementArrayCacheTree<T>(*this);
|
|
if (mBytes.Length()) {
|
|
bool valid = tree->Update(0, mBytes.Length() - 1);
|
|
if (!valid) {
|
|
// Do not assert here. This case would happen if an allocation failed.
|
|
// We've already settled on fallible allocations around here.
|
|
tree = nullptr;
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
size_t lastElement = firstElement + countElements - 1;
|
|
|
|
// fast exit path when the global maximum for the whole element array buffer
|
|
// falls in the allowed range
|
|
T globalMax = tree->GlobalMaximum();
|
|
if (globalMax <= maxAllowedT)
|
|
{
|
|
UpdateUpperBound(out_upperBound, globalMax);
|
|
return true;
|
|
}
|
|
|
|
const T* elements = Elements<T>();
|
|
|
|
// before calling tree->Validate, we have to validate ourselves the boundaries of the elements span,
|
|
// to round them to the nearest multiple of sElementsPerLeaf.
|
|
size_t firstElementAdjustmentEnd = std::min(lastElement,
|
|
tree->LastElementUnderSameLeaf(firstElement));
|
|
while (firstElement <= firstElementAdjustmentEnd) {
|
|
const T& curData = elements[firstElement];
|
|
UpdateUpperBound(out_upperBound, curData);
|
|
if (curData > maxAllowedT)
|
|
return false;
|
|
firstElement++;
|
|
}
|
|
size_t lastElementAdjustmentEnd = std::max(firstElement,
|
|
tree->FirstElementUnderSameLeaf(lastElement));
|
|
while (lastElement >= lastElementAdjustmentEnd) {
|
|
const T& curData = elements[lastElement];
|
|
UpdateUpperBound(out_upperBound, curData);
|
|
if (curData > maxAllowedT)
|
|
return false;
|
|
lastElement--;
|
|
}
|
|
|
|
// at this point, for many tiny validations, we're already done.
|
|
if (firstElement > lastElement)
|
|
return true;
|
|
|
|
// general case
|
|
return tree->Validate(maxAllowedT,
|
|
tree->LeafForElement(firstElement),
|
|
tree->LeafForElement(lastElement),
|
|
out_upperBound);
|
|
}
|
|
|
|
bool
|
|
WebGLElementArrayCache::Validate(GLenum type, uint32_t maxAllowed,
|
|
size_t firstElement, size_t countElements,
|
|
uint32_t* out_upperBound)
|
|
{
|
|
if (type == LOCAL_GL_UNSIGNED_BYTE)
|
|
return Validate<uint8_t>(maxAllowed, firstElement, countElements, out_upperBound);
|
|
if (type == LOCAL_GL_UNSIGNED_SHORT)
|
|
return Validate<uint16_t>(maxAllowed, firstElement, countElements, out_upperBound);
|
|
if (type == LOCAL_GL_UNSIGNED_INT)
|
|
return Validate<uint32_t>(maxAllowed, firstElement, countElements, out_upperBound);
|
|
|
|
MOZ_ASSERT(false, "Invalid type.");
|
|
return false;
|
|
}
|
|
|
|
size_t
|
|
WebGLElementArrayCache::SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const
|
|
{
|
|
size_t uint8TreeSize = mUint8Tree ? mUint8Tree->SizeOfIncludingThis(aMallocSizeOf) : 0;
|
|
size_t uint16TreeSize = mUint16Tree ? mUint16Tree->SizeOfIncludingThis(aMallocSizeOf) : 0;
|
|
size_t uint32TreeSize = mUint32Tree ? mUint32Tree->SizeOfIncludingThis(aMallocSizeOf) : 0;
|
|
return aMallocSizeOf(this) +
|
|
mBytes.SizeOfExcludingThis(aMallocSizeOf) +
|
|
uint8TreeSize +
|
|
uint16TreeSize +
|
|
uint32TreeSize;
|
|
}
|
|
|
|
bool
|
|
WebGLElementArrayCache::BeenUsedWithMultipleTypes() const
|
|
{
|
|
// C++ Standard ($4.7)
|
|
// "If the source type is bool, the value false is converted to zero and
|
|
// the value true is converted to one."
|
|
const int num_types_used = (mUint8Tree != nullptr) +
|
|
(mUint16Tree != nullptr) +
|
|
(mUint32Tree != nullptr);
|
|
return num_types_used > 1;
|
|
}
|
|
|
|
} // end namespace mozilla
|